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

es.tid.topologyModuleBase.IETFTopoModel.model.TranslateModel Maven / Gradle / Ivy

The newest version!
package es.tid.topologyModuleBase.IETFTopoModel.model;

import es.tid.ospf.ospfv2.lsa.tlv.subtlv.complexFields.BitmapLabelSet;
import es.tid.tedb.DomainTEDB;
import es.tid.tedb.InterDomainEdge;
import es.tid.tedb.IntraDomainEdge;
import es.tid.tedb.MultiDomainTEDB;
import es.tid.tedb.Node_Info;
import es.tid.tedb.TEDB;
import es.tid.tedb.TE_Information;
import es.tid.tedb.elements.EndPoint;
import es.tid.tedb.elements.Intf;
import es.tid.tedb.elements.Link;
import java.net.Inet4Address;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;

/**
 * This class is used to translate TEDB model to a topology container following 
 * IETEF model.
 */
public class TranslateModel {
    public static NetworksSchemaNode getNodeById(DomainTEDB db, String nodeId){
  	  for (Object n : db.getIntraDomainLinksvertexSet()){
  		  if(n instanceof es.tid.tedb.elements.Node){
  			NetworksSchemaNode node= translateNode(db, (es.tid.tedb.elements.Node)n);
  			  if(node.getNodeId().equals(nodeId)){
  				  return node;
  			  }
  		  }else if(n instanceof Inet4Address){
  			NetworksSchemaNode node= translateNodeIp(db, (Inet4Address)n, db.getNodeTable().get(n));
  			  if(node.getNodeId().equals(nodeId)){
  				  return node;
  			  }
  		  }
  	  }
  	  return null;
    }
    
        
    /**
     * This method translate a MultiDomainTEDB object to a NetworksSchemaNetwork
     * @param topId String with the identification for the current multi domain
     * model.
     * @param ted MultiDomainTEDB object.
     * @return Network topology container object.
     */
    public static NetworksSchemaNetwork translateTopology(String topId, MultiDomainTEDB ted){
        // TODO: Need to be developed.
        NetworksSchemaNetwork topology = common(topId, ted);
        // LinkedList ted.getInterDomainLinks();
        /*List node = new ArrayList();
        for(InterDomainEdge link : ted.getInterDomainLinks()){
			  node.add(translateEdge(ted, link));
		  }
        topology.setNode(node);
		  topology.setNode(node);.setEdges(node);
        */
        return topology;

    }
    
    /**
     * This method translate a DomainTEDB object to a NetworksSchemaNetwork
     * @param topId String with the identification for the current domain model.
     * @param ted DomainTEDB object.
     * @return Network topology container object.
     */
    public static NetworksSchemaNetwork translateTopology(String topId, DomainTEDB ted) {
        NetworksSchemaNetwork topology = common(topId, ted);
		  
        List nodes = new ArrayList();
        for(Object node : ted.getIntraDomainLinksvertexSet()){
             if(node instanceof es.tid.tedb.elements.Node){
                     nodes.add(translateNode(ted, (es.tid.tedb.elements.Node)node));
             }
             else if(node instanceof java.net.Inet4Address){
                     nodes.add(translateNodeIp(ted, (java.net.Inet4Address)node, ted.getNodeTable().get(node)));
             }
        }
        topology.setNode(nodes);
        return topology;
    }
    
    public static NetworksSchemaNode translateNode(DomainTEDB db, es.tid.tedb.elements.Node n){
		  //System.out.println("DEBUG translateNode: NodeInput: "+n);
    	NetworksSchemaNode node = new NetworksSchemaNode();
		  //node.setName(n.getNodeID());
		  if(n.getAddress().size()>0){
			  node.setNodeId(n.getAddress().get(0));
		  }else{
			  node.setNodeId(n.getNodeID());
		  }
		  //node.s.setDomain(n.getDomain()+"");
		  //node.setNodetype(n.getLayer());
		  //node.setNodeId(n.getNodeID());
		  
		  
		  //ListintList = new ArrayList();
		  //for (es.tid.tedb.elements.Intf i : n.getIntfList()){
			  //intList.add(translateEdgeEnd( n, i));
		  //}
		  //node.setEdgeEnd(intList);
		  ////node.setUnderlayAbstractTopology(underlayAbstractTopology);
		  
		  return node;
	  }
    
   
    
	public static NetworksSchemaNode translateNodeIp(DomainTEDB ted, Inet4Address n, Node_Info nodeInfo) {
		NetworksSchemaNode node = new NetworksSchemaNode();
		System.out.println("DEBUG translateNodeIP, nodeInfo (of node "+n+"):"+nodeInfo);
		node.setNodeId(n.getHostAddress());
		//node.setNodeId(n.getHostAddress());
		if(nodeInfo==null){
			System.out.println("No node Info: DomainID:"+ted.getDomainID());
			//node.setDomain(ted.getDomainID().getHostAddress());
		}else{
			//node.setDomain(nodeInfo.getAs_number().getHostAddress());
		}
		//node.setEdgeEnd(new ArrayList());
		return node;
	}
    
        public static es.tid.tedb.elements.Node translate2Node(NodeSchema node) {
		es.tid.tedb.elements.Node n = new es.tid.tedb.elements.Node();
		//n.setNodeID(node.getName());
                n.setNodeID(node.getNodeId());
		//n.setDomain(Integer.parseInt(node.getDomain()));
		//n.setLayer(node.getNodetype());
		n.setNodeID(node.getNodeId());
		try{
			//Inet4Address addr = (Inet4Address)Inet4Address.getByName(node.getName());
                        Inet4Address addr = (Inet4Address)Inet4Address.getByName(node.getNodeId());
			ArrayList l_addr= new ArrayList();
			l_addr.add(addr.getHostAddress());
			n.setAddress(l_addr);
		}catch(UnknownHostException e){
			//TODO
		}
//		ArrayListintList = new ArrayList();
//		  //for (EdgeEnd end : node.getEdgeEnd()){
//                  for (EdgeEnd end : node.getEdgeEnd()){
//			  intList.add(translate2EdgeEnd(node, end));
//		  }
		//n.setIntfList(intList);
		
		return n;
	}
        
//        private static Intf translate2EdgeEnd(NodeSchema node, EdgeEnd edgeEnd) {
//		Intf intf = new Intf();
//		intf.setName(edgeEnd.getName());
//		ArrayList adds = new ArrayList(1);
//		adds.add(edgeEnd.getPeerNodeId());
//		intf.setAddress(adds);
//		//edgeEnd.setEdgeEndId(e.getNode()+"-"+e.getIntf());
//		//edgeEnd.setName(e.getNode()+"-"+e.getIntf());
//		//edgeEnd.setPeerNodeId(e.getNode()); //correct map?
//		  //edgeEnd.setSwitchingCap(SwitchingCapEnum.lsc);
//		return intf;
//	}
        
        
        
    /**
     * Common code for the previous methods.
     * @param topId String with the identification for the current domain model.
     * @param ted TEDB object.
     * @return Initialized NetworksSchemaNetwork object.
     */
    private static NetworksSchemaNetwork common(String topId, TEDB ted){
        NetworksSchemaNetwork topology = new NetworksSchemaNetwork();
        topology.setNetworkId(topId);
        return topology;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy