/**
* 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.ButtonBase;
import com.mongodb.*;
/**
*
* @author antoine
*/
public class DbJobCmd extends DbJob {
DB db;
DBObject cmd;
BasePanel panel;
BaseTreeNode node;
ButtonBase button;
public DbJobCmd(DB db, DBObject cmd, BasePanel panel, BaseTreeNode node, ButtonBase button) {
this.id = null;
this.label = cmd.keySet().iterator().next();
this.db = db;
this.cmd = cmd;
this.panel = panel;
this.button = button;
this.node = node;
}
public DbJobCmd(DB db, DBObject cmd, BasePanel panel, ButtonBase button) {
this.id = null;
this.label = cmd.keySet().iterator().next();
this.db = db;
this.cmd = cmd;
this.panel = panel;
this.button = button;
}
public DbJobCmd(DB db, DBObject cmd) {
this(db, cmd, null, null);
}
public DbJobCmd(DB db, String cmdStr) {
this(db, new BasicDBObject(cmdStr, 1), null, null);
}
public DbJobCmd(DBCollection col, String cmdStr) {
this(col.getDB(), new BasicDBObject(cmdStr, col.getName()), null, null);
}
@Override
public Object doRun() {
CommandResult res = db.command(cmd);
// we want to pop up the exception, but still see the results...
// res.throwOnError();
return res;
}
@Override
public String getNS() {
String ns = db.getName();
Object value = cmd.get(cmd.keySet().iterator().next());
if (value instanceof String) {
// collection command
ns += "." + value;
}
return ns;
}
@Override
public String getShortName() {
return cmd.keySet().iterator().next();
}
@Override
public DBObject getRoot(Object result) {
return cmd;
}
@Override
public ButtonBase getButton() {
return button;
}
@Override
DB getDB() {
return db;
}
@Override
DBObject getCommand() {
return cmd;
}
@Override
BasePanel getPanel() {
return panel;
}
@Override
public void wrapUp(Object res) {
super.wrapUp(res);
// panel info may need to be refreshed
if (panel != null) {
panel.refresh();
}
if (node != null) {
node.structureComponent();
}
}
}