com.edgytech.umongo.ServerNode.java Source code

Java tutorial

Introduction

Here is the source code for com.edgytech.umongo.ServerNode.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.mongodb.BasicDBObject;
import com.mongodb.Bytes;
import com.mongodb.CommandResult;
import com.mongodb.DB;
import com.mongodb.Mongo;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.ServerAddress;
import java.net.UnknownHostException;
import java.util.logging.Level;

/**
 *
 * @author antoine
 */
public class ServerNode extends BaseTreeNode {

    String host;
    ServerAddress serverAddress;
    MongoClient serverMongo;
    BasicDBObject stats;
    boolean isReplica = false;
    boolean isConfig = false;

    public ServerNode(MongoClient mongo, boolean isReplica, boolean isConfig) {
        serverMongo = mongo;
        serverAddress = mongo.getAddress();
        setLabel(serverAddress != null ? serverAddress.toString() : "?");
        this.isReplica = isReplica;
        this.isConfig = isConfig;

        try {
            xmlLoad(Resource.getXmlDir(), Resource.File.serverNode, null);
        } catch (Exception ex) {
            getLogger().log(Level.SEVERE, null, ex);
        }

        markStructured();
    }

    public ServerNode(ServerAddress serverAddress, MongoClientOptions opts, boolean isReplica, boolean isConfig) {
        setLabel(serverAddress.toString());
        this.serverAddress = serverAddress;
        serverMongo = new MongoClient(serverAddress, opts);
        serverMongo.addOption(Bytes.QUERYOPTION_SLAVEOK);
        this.isReplica = isReplica;
        this.isConfig = isConfig;

        try {
            xmlLoad(Resource.getXmlDir(), Resource.File.serverNode, null);
        } catch (Exception ex) {
            getLogger().log(Level.SEVERE, null, ex);
        }

        markStructured();
    }

    public ServerNode(String host, MongoClientOptions opts, boolean isReplica, boolean isConfig)
            throws UnknownHostException {
        setLabel(host);
        this.host = host;
        this.serverAddress = new ServerAddress(host);
        serverMongo = new MongoClient(serverAddress, opts);
        serverMongo.addOption(Bytes.QUERYOPTION_SLAVEOK);
        this.isReplica = isReplica;
        this.isConfig = isConfig;

        try {
            xmlLoad(Resource.getXmlDir(), Resource.File.serverNode, null);
        } catch (Exception ex) {
            getLogger().log(Level.SEVERE, null, ex);
        }

        markStructured();
    }

    public ServerAddress getServerAddress() {
        return serverAddress;
    }

    public MongoClient getServerMongoClient() {
        return serverMongo;
    }

    public DB getServerDB() {
        return serverMongo.getDB("admin");
    }

    @Override
    protected void populateChildren() {
    }

    @Override
    protected void updateNode() {
        boolean isArbiter = false;
        if (stats != null) {
            isArbiter = stats.getBoolean("arbiterOnly", false);
            if (isArbiter) {
                icon = "a.png";
            } else if (stats.getBoolean("ismaster", false)) {
                if (!isConfig)
                    addOverlay("overlay/tick_circle_tiny.png");
            } else if (!stats.getBoolean("secondary")) {
                addOverlay("overlay/error.png");
            }

            if (stats.getBoolean("hidden", false)) {
                addOverlay("overlay/hidden.png");
            }

            //        if (res.containsField("dur")) {
            //            overlays.add(SwingFast.createIcon("overlay/shield_blue_tiny.png", iconGroup));
            //        }        
        }

        if (isConfig)
            label = "ConfigDB";
        else if (isArbiter)
            label = "Arbiter";
        else
            label = "MongoD";

        label += ": ";
        if (host != null)
            label += host;
        else if (serverAddress != null)
            label += serverAddress.toString();
        else
            label += "?";
    }

    @Override
    protected void refreshNode() {
        CommandResult res = getServerMongoClient().getDB("local").command("isMaster");
        res.throwOnError();
        stats = res;
    }

    boolean isReplica() {
        return isReplica;
    }

    boolean isConfig() {
        return isConfig;
    }
}