/**
* Copyright (C) 2010 EdgyTech Inc.
*
* 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.edgytech.swingfast.TextField;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
/**
*
* @author antoine
*/
public class ReplicaDialog extends FormDialog {
enum Item {
host,
arbiterOnly,
hidden,
priority,
votes,
tags,
slaveDelay,
ignoreIndexes
}
public ReplicaDialog() {
setEnumBinding(Item.values(), null);
}
public void updateFromReplicaConfig(BasicDBObject member) {
// reset
xmlLoadCheckpoint();
((TextField)getBoundUnit(Item.host)).editable = false;
setStringFieldValue(Item.host, member.getString("host"));
setBooleanFieldValue(Item.arbiterOnly, member.getBoolean("arbiterOnly", false));
setBooleanFieldValue(Item.hidden, member.getBoolean("hidden", false));
setBooleanFieldValue(Item.ignoreIndexes, !member.getBoolean("buildIndexes", true));
if (member.containsField("priority")) {
setDoubleFieldValue(Item.priority, member.getDouble("priority"));
}
if (member.containsField("slaveDelay")) {
setIntFieldValue(Item.slaveDelay, member.getInt("slaveDelay"));
}
if (member.containsField("votes")) {
setIntFieldValue(Item.votes, member.getInt("votes"));
}
if (member.containsField("tags")) {
((DocBuilderField)getBoundUnit(Item.tags)).setDBObject((DBObject) member.get("tags"));
}
}
public BasicDBObject getReplicaConfig(int id) {
BasicDBObject member = new BasicDBObject("_id", id);
member.put("host", getStringFieldValue(Item.host));
if (getBooleanFieldValue(Item.arbiterOnly)) member.put("arbiterOnly", true);
if (getBooleanFieldValue(Item.hidden)) member.put("hidden", true);
if (getBooleanFieldValue(Item.ignoreIndexes)) member.put("buildIndexes", false);
double priority = getDoubleFieldValue(Item.priority);
if (priority != 1.0) member.put("priority", priority);
int slaveDelay = getIntFieldValue(Item.slaveDelay);
if (slaveDelay > 0) member.put("slaveDelay", slaveDelay);
int votes = getIntFieldValue(Item.votes);
if (votes != 1) member.put("votes", votes);
DBObject tags = ((DocBuilderField)getBoundUnit(Item.tags)).getDBObject();
if (tags != null) member.put("tags", tags);
return member;
}
}