it.polimi.tower4clouds.manager.ManagerConfig.java Source code

Java tutorial

Introduction

Here is the source code for it.polimi.tower4clouds.manager.ManagerConfig.java

Source

/**
 * Copyright (C) 2014 Politecnico di Milano (marco.miglierina@polimi.it)
 *
 * 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 it.polimi.tower4clouds.manager;

import org.apache.commons.validator.routines.UrlValidator;

import com.beust.jcommander.JCommander;
import com.beust.jcommander.Parameter;
import com.beust.jcommander.ParameterException;

// TODO requires refactoring, parameters should probably be in the server project
public class ManagerConfig {

    public static final String MODEL_GRAPH_NAME = "http://www.modaclouds.eu/graphs#model";

    @Parameter(names = { "-h", "--help" }, help = true, description = "Shows this message")
    private boolean help;

    @Parameter(names = "-daip", description = "Data Analyzer public endpoint IP address")
    private String daIP;

    @Parameter(names = "-daport", description = "Data Analyzer public endpoint port")
    private int daPort;

    @Parameter(names = "-manip", description = "Manager endpoint IP address")
    private String mmIP;

    @Parameter(names = "-manport", description = "Manager endpoint port")
    private int mmPort;

    @Parameter(names = "-rdf-history-db-ip", description = "RDF History DB endpoint IP address")
    private String rdfHistoryDbIP;

    @Parameter(names = "-rdf-history-db-port", description = "RDF History DB endpoint port")
    private int rdfHistoryDbPort;

    @Parameter(names = { "-v", "--version" }, description = "Shows the version number")
    private boolean version = false;

    @Override
    public String toString() {
        String toString = "\tData Analyzer URL: " + getDaUrl() + "\n" + "\tManager Port: " + mmPort + "\n"
                + "\tManager IP: " + mmIP;
        if (rdfHistoryDbIP != null) {
            toString += "\n\tRDF History DB Port: " + rdfHistoryDbPort + "\n" + "\tRDF History DB IP: "
                    + rdfHistoryDbIP;
        }
        return toString;
    }

    private static ManagerConfig _instance = null;
    public static String usage = null;

    public static void init(String[] CLIargs, String programName) throws ConfigurationException {
        _instance = new ManagerConfig();
        if (CLIargs != null) {
            StringBuilder stringBuilder = new StringBuilder();
            try {
                JCommander jc = new JCommander(_instance, CLIargs);
                jc.setProgramName(programName);
                jc.usage(stringBuilder);
            } catch (ParameterException e) {
                throw new ConfigurationException(e.getMessage());
            }
            usage = stringBuilder.toString();
        }
    }

    public static void init() throws ConfigurationException {
        _instance = new ManagerConfig();
    }

    public static ManagerConfig getInstance() {
        return _instance;
    }

    private ManagerConfig() throws ConfigurationException {
        UrlValidator validator = new UrlValidator(UrlValidator.ALLOW_LOCAL_URLS);

        try {
            daPort = Integer
                    .parseInt(getEnvVar(Env.MODACLOUDS_TOWER4CLOUDS_DATA_ANALYZER_ENDPOINT_PORT_PUBLIC, "8175"));
            mmPort = Integer.parseInt(getEnvVar(Env.MODACLOUDS_TOWER4CLOUDS_MANAGER_ENDPOINT_PORT, "8170"));
            rdfHistoryDbPort = Integer
                    .parseInt(getEnvVar(Env.MODACLOUDS_TOWER4CLOUDS_RDF_HISTORY_DB_ENDPOINT_PORT, "31337"));
        } catch (NumberFormatException e) {
            throw new ConfigurationException("The chosen port is not a valid number");
        }

        daIP = getEnvVar(Env.MODACLOUDS_TOWER4CLOUDS_DATA_ANALYZER_ENDPOINT_IP_PUBLIC, "127.0.0.1");
        mmIP = getEnvVar(Env.MODACLOUDS_TOWER4CLOUDS_MANAGER_ENDPOINT_IP, "127.0.0.1");
        rdfHistoryDbIP = getEnvVar(Env.MODACLOUDS_TOWER4CLOUDS_RDF_HISTORY_DB_ENDPOINT_IP, null);

        if (!validator.isValid(getDaUrl()))
            throw new ConfigurationException(getDaUrl() + " is not a valid URL");

    }

    public boolean isHelp() {
        return help;
    }

    public String getDaIP() {
        return daIP;
    }

    public void setDaIP(String daIP) {
        this.daIP = daIP;
    }

    public boolean isVersion() {
        return version;
    }

    public int getDaPort() {
        return daPort;
    }

    public void setDaPort(int daPort) {
        this.daPort = daPort;
    }

    public String getDaUrl() {
        return "http://" + daIP + ":" + daPort;
    }

    public String getMmIP() {
        return mmIP;
    }

    public void setMmIP(String mmIP) {
        this.mmIP = mmIP;
    }

    public int getMmPort() {
        return mmPort;
    }

    public void setMmPort(int mmPort) {
        this.mmPort = mmPort;
    }

    public String getRdfHistoryDbIP() {
        return rdfHistoryDbIP;
    }

    public int getRdfHistoryDbPort() {
        return rdfHistoryDbPort;
    }

    public void setRdfHistoryDbIP(String rdfHistoryDbIP) {
        this.rdfHistoryDbIP = rdfHistoryDbIP;
    }

    public void setRdfHistoryDbPort(int rdfHistoryDbPort) {
        this.rdfHistoryDbPort = rdfHistoryDbPort;
    }

    private String getEnvVar(String varName, String defaultValue) {
        String var = System.getProperty(varName);
        if (var == null)
            var = System.getenv(varName);
        if (var == null)
            var = defaultValue;
        return var;
    }

}