com.edgytech.umongo.EditObjectIdDialog.java Source code

Java tutorial

Introduction

Here is the source code for com.edgytech.umongo.EditObjectIdDialog.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.EnumListener;
import com.edgytech.swingfast.XmlComponentUnit;
import com.mongodb.DBRef;
import com.mongodb.DBRefBase;
import javax.swing.JDialog;
import org.bson.types.ObjectId;
import com.edgytech.umongo.EditObjectIdDialog.Item;

/**
 *
 * @author antoine
 */
public class EditObjectIdDialog extends EditFieldDialog implements EnumListener<Item> {

    enum Item {

        string, time, machine, inc, currentTime, currentMachine, currentInc, namespace
    }

    public EditObjectIdDialog() {
        setEnumBinding(Item.values(), this);
    }

    @Override
    public Object getValue() {
        String str = getStringFieldValue(Item.string);
        ObjectId id = null;
        if (!str.isEmpty()) {
            id = new ObjectId(str);
        } else {
            int time = getIntFieldValue(Item.time);
            int machine = getIntFieldValue(Item.machine);
            int inc = getIntFieldValue(Item.inc);
            id = new ObjectId(time, machine, inc);
        }
        String ns = getStringFieldValue(Item.namespace);
        if (ns.trim().isEmpty()) {
            return id;
        }
        return new DBRef(null, ns, id);
    }

    @Override
    public void setValue(Object value) {
        ObjectId id = null;
        if (value instanceof DBRefBase) {
            DBRefBase ref = (DBRefBase) value;
            setStringFieldValue(Item.namespace, ref.getRef());
            id = (ObjectId) ref.getId();
        } else {
            id = (ObjectId) value;
        }
        setStringFieldValue(Item.string, id.toString());
        setIntFieldValue(Item.time, id._time());
        setIntFieldValue(Item.machine, id.getMachine());
        setIntFieldValue(Item.inc, id.getInc());
    }

    @Override
    protected void updateComponentCustom(JDialog old) {
        super.updateComponentCustom(old);
        setStringFieldValue(Item.currentTime, String.valueOf(System.currentTimeMillis() / 1000));
        setStringFieldValue(Item.currentMachine, String.valueOf(ObjectId.getGenMachineId()));
        setStringFieldValue(Item.currentInc, String.valueOf(ObjectId.getCurrentInc()));
    }

    public void actionPerformed(Item enm, XmlComponentUnit unit, Object src) {
        switch (enm) {
        case string:
            String str = getComponentStringFieldValue(Item.string);
            if (!str.isEmpty()) {
                ObjectId oid = new ObjectId(str);
                setComponentIntFieldValue(Item.time, oid.getTimeSecond());
                setComponentIntFieldValue(Item.machine, oid.getMachine());
                setComponentIntFieldValue(Item.inc, oid.getInc());
            }
            break;
        case time:
        case machine:
        case inc:
            int time = getComponentIntFieldValue(Item.time);
            int machine = getComponentIntFieldValue(Item.machine);
            int inc = getComponentIntFieldValue(Item.inc);
            ObjectId oid = new ObjectId(time, machine, inc);
            setComponentStringFieldValue(Item.string, oid.toString());
            break;
        }
    }
}