com.abiquo.abicloud.model.config.ConfigurationManager.java Source code

Java tutorial

Introduction

Here is the source code for com.abiquo.abicloud.model.config.ConfigurationManager.java

Source

/*
 * The contents of this file are subject to the Mozilla Public License
 * Version 1.1 (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.mozilla.org/MPL/
 * 
 * Software distributed under the License is distributed on an "AS IS"
 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
 * License for the specific language governing rights and limitations
 * under the License.
 * 
 * The Original Code is available at http://www.abiquo.com/.....
 * 
 * The Initial Developer of the Original Code is Soluciones Grid, S.L. (www.abiquo.com),
 * Consell de Cent 296 principal 2, 08007 Barcelona, Spain.
 * No portions of the Code have been created by third parties. 
 * All Rights Reserved.
 * 
 * Contributor(s): ______________________________________.
 * 
 * Graphical User Interface of this software may be used under the terms
 * of the Common Public Attribution License Version 1.0 (the  "CPAL License",
 * available at http://cpal.abiquo.com), in which case the provisions of CPAL
 * License are applicable instead of those above. In relation of this portions 
 * of the Code, a Legal Notice according to Exhibits A and B of CPAL Licence 
 * should be provided in any distribution of the corresponding Code to Graphical
 * User Interface.
 */
package com.abiquo.abicloud.model.config;

import java.io.File;
import java.io.InputStream;
import java.net.URL;
import java.util.List;

import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.XMLConfiguration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.abiquo.abicloud.model.AbiCloudModel;

/**
 * Class to manage and load the configuration file
 * 
 * @author pnavarro
 */
public class ConfigurationManager {
    /**
     * The default abicloud config file location
     */
    private final static String DEFAULT_CONFIG_FILE = "conf/config.xml";

    /** The logger */
    private static final Logger logger = LoggerFactory.getLogger(ConfigurationManager.class);

    /**
     * Main configuration file
     */
    private Configuration configuration;

    public ConfigurationManager() {
        configuration = new Configuration();
        try {
            loadXML();
        } catch (ConfigurationException e) {
            logger.error("An configuration erro was occured: {}", e.getMessage());
        }
    }

    /**
     * Loads the XML
     * 
     * @throws ConfigurationException
     */
    private void loadXML() throws ConfigurationException {
        URL configUrl = this.getClass().getClassLoader().getResource(DEFAULT_CONFIG_FILE);

        XMLConfiguration xmlConfig = new XMLConfiguration(configUrl);

        /**
         * Hypervisors
         */
        // Vmware hpervisor
        VmwareHypervisorConfiguration vmwareHyperConfig = new VmwareHypervisorConfiguration();
        vmwareHyperConfig.setDatastoreSanName(
                xmlConfig.getString("hypervisors.vmware.SanDatastore[@name]", "nfsrepository"));
        vmwareHyperConfig
                .setDatastoreVmfsName(xmlConfig.getString("hypervisors.vmware.VmfsDatastore[@name]", "datastore1"));
        vmwareHyperConfig.setDatacenterName(xmlConfig.getString("hypervisors.vmware.datacenter", "ha-datacenter"));
        vmwareHyperConfig.setUser(xmlConfig.getString("hypervisors.vmware.user", "root"));
        vmwareHyperConfig.setPassword(xmlConfig.getString("hypervisors.vmware.password", null));
        vmwareHyperConfig.setIgnorecert(xmlConfig.getBoolean("hypervisors.vmware.ignorecert", true));
        configuration.setVmwareHyperConfig(vmwareHyperConfig);

        /**
         * Repository
         */
        configuration.setRemoteHost(xmlConfig.getString("repository.remoteHost", null));
        configuration.setRemotePath(xmlConfig.getString("repository.remotePath", "/opt/vm_repository"));

    }

    /**
     * Gets the configuration
     * 
     * @return the configuration
     */
    public Configuration getConfiguration() {
        return configuration;
    }

    /**
     * Sets the configuration
     * 
     * @param configuration the configuration to set
     */
    public void setConfiguration(Configuration configuration) {
        this.configuration = configuration;
    }

}