com.edgytech.umongo.TagRangeDialog.java Source code

Java tutorial

Introduction

Here is the source code for com.edgytech.umongo.TagRangeDialog.java

Source

/**
 *      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.ComboBox;
import com.edgytech.swingfast.DynamicComboBox;
import com.edgytech.swingfast.FormDialog;
import com.mongodb.BasicDBList;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import java.util.HashSet;

/**
 *
 * @author antoine
 */
public class TagRangeDialog extends FormDialog {

    enum Item {
        min, max, tag
    }

    public TagRangeDialog() {
        setEnumBinding(Item.values(), null);
    }

    void resetForEdit(DB config, BasicDBObject range) {
        xmlLoadCheckpoint();

        ((DocBuilderField) getBoundUnit(Item.min)).setDBObject((DBObject) range.get("min"));
        ((DocBuilderField) getBoundUnit(Item.min)).enabled = false;
        ((DocBuilderField) getBoundUnit(Item.max)).setDBObject((DBObject) range.get("max"));

        ((DynamicComboBox) getBoundUnit(Item.tag)).items = getExistingTags(config);
        setStringFieldValue(Item.tag, range.getString("tag"));

        updateComponent();
    }

    void resetForNew(DB config, String ns) {
        xmlLoadCheckpoint();

        DBObject collection = config.getCollection("collections").findOne(new BasicDBObject("_id", ns));
        DBObject shardKey = (DBObject) collection.get("key");
        ((DocBuilderField) getBoundUnit(Item.min)).setDBObject(shardKey);
        ((DocBuilderField) getBoundUnit(Item.max)).setDBObject(shardKey);
        ((DynamicComboBox) getBoundUnit(Item.tag)).items = getExistingTags(config);
        updateComponent();
    }

    BasicDBObject getRange(String ns) {
        DBObject min = ((DocBuilderField) getBoundUnit(Item.min)).getDBObject();
        DBObject max = ((DocBuilderField) getBoundUnit(Item.max)).getDBObject();

        BasicDBObject range = new BasicDBObject("_id", new BasicDBObject("ns", ns).append("min", min));
        range.put("ns", ns);
        range.put("min", min);
        range.put("max", max);
        range.put("tag", getStringFieldValue(Item.tag));
        return range;
    }

    static String[] getExistingTags(DB config) {
        DBCursor cur = config.getCollection("shards").find();
        HashSet<String> tags = new HashSet<String>();
        while (cur.hasNext()) {
            DBObject shard = cur.next();
            if (shard.containsField("tags")) {
                BasicDBList list = (BasicDBList) shard.get("tags");
                for (Object tag : list) {
                    tags.add((String) tag);
                }
            }
        }
        return tags.toArray(new String[tags.size()]);
    }
}