/**
 * Copyright (c) 2012 EBM WebSourcing, 2012-2013 Linagora
 * 
 * This program/library is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 2.1 of the License, or (at your
 * option) any later version.
 * 
 * This program/library is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
 * for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program/library; If not, see <http://www.gnu.org/licenses/>
 * for the GNU Lesser General Public License version 2.1.
 */
package org.ow2.petals.admin.topology;

import java.util.HashMap;


/**
 * 
 * @author Nicolas Oddoux - EBM WebSourcing
 */
public class Container {

    public enum NodeType {MASTER,PEER,SLAVE,STANDALONE}

    public enum PortType {
        
        JMX("JMX port"),
        HTTP_WEBSERVICE("HTTP Webservice port"),
        REGISTRY("Registry port"),
        TCP_TRANSPORT("TCP port");
        
        private String displayValue;
        
        PortType(String displayValue) {
            this.displayValue = displayValue;
        }
    
        public String toString(){
            return this.displayValue;
        }
    }
    
    private String containerName;
    
    private NodeType nodeType;

    private String host;
    
    private HashMap<PortType, Integer> ports;
    
    private final String jmxUsername;

    private final String jmxPassword;

    public Container(String containerName, NodeType nodeType, String host,
            HashMap<PortType, Integer> ports, final String jmxUsername, final String jmxPassword) {
        assert  containerName != null;
        assert  nodeType != null;
        assert  host != null;
        assert  ports != null;
        
        this.containerName = containerName;
        this.nodeType = nodeType;
        this.host = host;
        this.ports = ports;
        this.jmxPassword = jmxPassword;
        this.jmxUsername = jmxUsername;
    }

    public String getContainerName() {
        return this.containerName;
    }

    public NodeType getNodeType() {
        return this.nodeType;
    }
    
    public String getHost() {
        return this.host;
    }
    
    public HashMap<PortType, Integer> getPorts() {
        return this.ports;
    }

    public String getJmxUsername() {
        return this.jmxUsername;
    }

    public String getJmxPassword() {
        return this.jmxPassword;
    }
}
