All Downloads are FREE. Search and download functionalities are using the official Maven repository.

es.tid.abno.modules.ABNOParameters Maven / Gradle / Ivy

The newest version!
package es.tid.abno.modules;

import java.io.File;
import java.util.Hashtable;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.eclipse.jetty.util.log.Log;
import org.w3c.dom.CharacterData;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import es.tid.abno.modules.policy.L0PCECapabilities;
import es.tid.abno.modules.policy.MediaChannel;
import es.tid.abno.modules.policy.Policy;




public class ABNOParameters
{
	public static final int ABNOOpticalLayer = 4;
  
  private int abnoPort;
  private int pcepPortPM;
  private PCEParameters pceOpticalLayer;
  private String PMAddress;
  private int abnoMode;
  private String confFile;
  private String ipRedis;
  private Integer portRedis;
  private String Demo=null;
  
  private Hashtable policy  = new Hashtable();

  public ABNOParameters()
  {
    setConfFile("ABNOConfiguration.xml");
  }

  public ABNOParameters(String confFile)
  {
    if (confFile != null)
      setConfFile(confFile);
    else
      confFile = "ABNOConfiguration.xml";
  }

  public void initialize()
  {
    try
    {
      DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
      File confFile = new File(this.confFile);
      Document doc = builder.parse(confFile);

      NodeList nodes_ABNOPort = doc.getElementsByTagName("ABNOPort");
      Element abnoPort = (Element)nodes_ABNOPort.item(0);
      this.abnoPort = Integer.parseInt(getCharacterDataFromElement(abnoPort));

      NodeList nodes_PCEPPort = doc.getElementsByTagName("PCEPPortPM");
      Element pcepPortPM = (Element)nodes_PCEPPort.item(0);
      this.pcepPortPM = Integer.parseInt(getCharacterDataFromElement(pcepPortPM));

      NodeList nodes_ABNOMode = doc.getElementsByTagName("ABNOMode");
      Element abnoMode = (Element)nodes_ABNOMode.item(0);
      this.abnoMode = Integer.parseInt(getCharacterDataFromElement(abnoMode));
      
      NodeList nodes_PMAddress = doc.getElementsByTagName("PMAddress");
      Element PMAddressEl = (Element)nodes_PMAddress.item(0);
      this.PMAddress = getCharacterDataFromElement(PMAddressEl);
          
      NodeList nodes_PCEPParameters = doc.getElementsByTagName("PCEParameters");
      for (int i = 0; i < nodes_PCEPParameters.getLength(); i++) {
        Element pcepParameters = (Element)nodes_PCEPParameters.item(i);

        NodeList node_PCEPort = pcepParameters.getElementsByTagName("PCEPort");
        Element pcePortElement = (Element)node_PCEPort.item(0);
        int pcePort = Integer.parseInt(getCharacterDataFromElement(pcePortElement));

        NodeList node_PCEAddress = pcepParameters.getElementsByTagName("PCEAddress");
        Element pceAddressElement = (Element)node_PCEAddress.item(0);
        String pceAddress = getCharacterDataFromElement(pceAddressElement);
        
        //Policy
        if (pcepParameters.getElementsByTagName("Policy")!=null){
        	NodeList nodes_Policy = pcepParameters.getElementsByTagName("Policy");
            for (int iPolicy = 0; iPolicy < nodes_Policy.getLength(); iPolicy++) {
            	Element parametersPolicy = (Element)nodes_Policy.item(i);
            	Policy policyread = new Policy();
            	
            	//WFName
            	//If there is Policy, WFName is  required 
            	NodeList nodes_WFName = parametersPolicy.getElementsByTagName("WFName");
                Element wfNameElement = (Element)nodes_WFName.item(0);
                policyread.setWfName(getCharacterDataFromElement(wfNameElement));
                
                //MediaChannel
                if (parametersPolicy.getElementsByTagName("MediaChannel").getLength()!=0){
                	NodeList nodes_MediaChannel = parametersPolicy.getElementsByTagName("MediaChannel");
                    Element mediaChannelParameters = (Element)nodes_MediaChannel.item(0);
                    MediaChannel mediaChannelread = new MediaChannel();
                    
                    if (mediaChannelParameters.getElementsByTagName("OFCode").item(0)!=null){                    	
                    	Element ofCodeElement = (Element) mediaChannelParameters.getElementsByTagName("OFCode").item(0);                       
                        mediaChannelread.setOfCode(Integer.parseInt(getCharacterDataFromElement(ofCodeElement)));                    	
                    }
                    
                    policyread.setMediaChannel(mediaChannelread);
                }
             
                
                //L0PCECapabilities
                if (parametersPolicy.getElementsByTagName("L0PCECapabilities")!=null){
                	NodeList nodes_L0PCECapabilities = parametersPolicy.getElementsByTagName("L0PCECapabilities");
                    Element l0PCECapabilitiesParameters = (Element)nodes_L0PCECapabilities.item(0);
                    L0PCECapabilities l0pceCapabilitiesread = new L0PCECapabilities();
                    if (l0PCECapabilitiesParameters.getElementsByTagName("Instantiation")!=null){
                    	NodeList node_Instantiation = l0PCECapabilitiesParameters.getElementsByTagName("Instantiation");
                        Element instantiationElement = (Element)node_Instantiation.item(0);
                        l0pceCapabilitiesread.setInstantiation(Boolean.parseBoolean(getCharacterDataFromElement(instantiationElement)));
                    }
                    policyread.setL0pceCapabilities(l0pceCapabilitiesread);            	
                }       
                this.policy.put(getCharacterDataFromElement(wfNameElement), policyread);
            }
        }        
        //End policy parameters

        NodeList node_PCEMode = pcepParameters.getElementsByTagName("PCEMode");
        Element pceModeElement = (Element)node_PCEMode.item(0);
        int pceMode = Integer.parseInt(getCharacterDataFromElement(pceModeElement));
        switch (pceMode) {
        case 2:
          this.pceOpticalLayer = new PCEParameters(pceAddress, pcePort);
        }

      }

    }
    catch (Exception e)
    {
      e.printStackTrace();
    }
  }

  public int getPcepPortPM() { return this.pcepPortPM; }

  public void setPcepPortPM(int pcepPortPM)
  {
    this.pcepPortPM = pcepPortPM;
  }

  private String getCharacterDataFromElement(Element e) {
    Node child = e.getFirstChild();
    if ((child instanceof CharacterData)) {
      CharacterData cd = (CharacterData)child;
      return cd.getData();
    }
    return "?";
  }

  public String getConfFile() {
    return this.confFile;
  }

  public void setConfFile(String confFile) {
    this.confFile = confFile;
  }

  public int getPcepPortTM()
  {
    return this.pcepPortPM;
  }

  public void setPcepPortTM(int pcepPortTM) {
    this.pcepPortPM = pcepPortTM;
  }

  public int getAbnoPort() {
    return this.abnoPort;
  }

  public void setAbnoPort(int abnoPort) {
    this.abnoPort = abnoPort;
  }

  public int getAbnoMode() {
    return this.abnoMode;
  }

  public void setAbnoMode(int abnoMode) {
    this.abnoMode = abnoMode;
  }

  public PCEParameters getPceOpticalLayer() {
    return this.pceOpticalLayer;
  }

  public void setPceOpticalLayer(PCEParameters pceOpticalLayer) {
    this.pceOpticalLayer = pceOpticalLayer;
  }


  public String getPMAddress() {
    return this.PMAddress;
  }

  public void setPMAddress(String pMAddress) {
    this.PMAddress = pMAddress;
  }

  public String getIpRedis() {
    return this.ipRedis;
  }

  public void setIpRedis(String ipRedis) {
    this.ipRedis = ipRedis;
  }

  public Integer getPortRedis() {
    return this.portRedis;
  }

  public void setPortRedis(Integer portRedis) {
    this.portRedis = portRedis;
  }
  
  public String getDemo() {
	return Demo;
  }

  public void setDemo(String demo) {
	Demo = demo;
  }


	public Hashtable getPolicy() {
		return policy;
	}
	
	public void setPolicy(Hashtable policy) {
		this.policy = policy;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy