content: /**
   * Copyright (C) 2010 EdgyTech LLC.
   *
   * Licensed under the Apache License, Version 2.0 (the "License"); you may not
   * use this file except in compliance with the License. You may obtain a copy of
   * the License at
   *
   * http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
   * License for the specific language governing permissions and limitations under
   * the License.
   */
  package com.edgytech.umongo;
  
  import com.edgytech.swingfast.FormDialog;
  import com.mongodb.BasicDBObject;
  import com.mongodb.DBObject;
  
  /**
   *
   * @author antoine
   */
  public class CreateIndexDialog extends FormDialog {
  
      enum Item {
          keys,
          unique,
          name,
          dropDuplicates,
          sparse,
          expireDocuments,
          expireAfterSeconds,
          background,
          weights,
          defaultLanguage,
          languageOverride,
          extra
      }
  
      public CreateIndexDialog() {
          setEnumBinding(Item.values(), null);
      }
      
      DBObject getKeys() {
          return ((DocBuilderField) getBoundUnit(Item.keys)).getDBObject();
      }
      
      DBObject getOptions() {
          final DBObject opts = new BasicDBObject();
          final String name = getStringFieldValue(Item.name);
          if (name != null && !name.trim().isEmpty()) {
              opts.put("name", name);
          }
          if (getBooleanFieldValue(Item.unique)) {
              opts.put("unique", true);
          }
          if (getBooleanFieldValue(Item.dropDuplicates)) {
              opts.put("dropDups", true);
          }
          if (getBooleanFieldValue(Item.sparse)) {
              opts.put("sparse", true);
          }
          if (getBooleanFieldValue(Item.expireDocuments)) {
              opts.put("expireAfterSeconds", getIntFieldValue(Item.expireAfterSeconds));
          }
          if (getBooleanFieldValue(Item.background)) {
              opts.put("background", true);
          }
          
          DBObject weights = ((DocBuilderField) getBoundUnit(Item.weights)).getDBObject();
          if (weights != null) {
              opts.put("weights", weights);
          }
          String defaultLanguage = getStringFieldValue(Item.defaultLanguage);
          if (!defaultLanguage.trim().isEmpty()) {
              opts.put("default_language", defaultLanguage);
          }
          String languageOverride = getStringFieldValue(Item.languageOverride);
          if (!languageOverride.trim().isEmpty()) {
              opts.put("language_override", languageOverride);
          }
  
          DBObject extra = ((DocBuilderField) getBoundUnit(Item.extra)).getDBObject();
          if (extra != null) {
              opts.putAll(extra);
          }
          return opts;
      }
  }
  