/** * 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; } }