/** * 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.SwingFast; import com.mongodb.*; import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import javax.swing.ImageIcon; import javax.swing.tree.DefaultMutableTreeNode; /** * * @author antoine */ public class DbNode extends BaseTreeNode { DB db; BasicDBObject stats; public DbNode(DB db) { this.db = db; try { xmlLoad(Resource.getXmlDir(), Resource.File.dbNode, null); } catch (Exception ex) { getLogger().log(Level.SEVERE, null, ex); } markStructured(); } public DB getDb() { return db; } public MongoNode getMongoNode() { return (MongoNode) ((DefaultMutableTreeNode) getTreeNode().getParent()).getUserObject(); } @Override protected void populateChildren() { for (String colname : db.getCollectionNames()) { DBCollection col = db.getCollection(colname); try { addChild(new CollectionNode(col)); } catch (Exception ex) { getLogger().log(Level.SEVERE, null, ex); } } } @Override protected void updateNode() { label = db.getName(); if (stats != null) { label += " (" + stats.getInt("objects") + "/" + stats.getInt("dataSize") + ")"; } // if (db.isAuthenticated()) // addOverlay("overlay/unlock.png"); } @Override protected void refreshNode() { // db.getStats can be slow.. // can't use driver's because doesnt use slaveOk CommandResult res = db.command(new BasicDBObject("dbstats", 1), db.getMongo().getOptions()); // CommandResult res = db.command(new BasicDBObject("profile", -1)); res.throwOnError(); stats = res; // db.getCollection("foo").save(new BasicDBObject("a", 1)); } List<DBObject> summarizeData() { List<DBObject> global = new ArrayList<DBObject>(); for (CollectionNode node : getChildrenOfClass(CollectionNode.class)) { DBObject res = node.summarizeData(); global.add(res); } return global; } }