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

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

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

import java.net.Inet4Address;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;

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.SimpleTEDB;
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 es.tid.topologyModuleBase.COPServiceTopology.model.Edge.EdgeTypeEnum;

public class TranslateModel {
    public static Node getNodeById(DomainTEDB db, String nodeId){
  	  for (Object n : db.getIntraDomainLinksvertexSet()){
  		  if(n instanceof es.tid.tedb.elements.Node){
  			  Node node= translateNode(db, (es.tid.tedb.elements.Node)n);
  			  if(node.getNodeId().equals(nodeId)){
  				  return node;
  			  }
  		  }else if(n instanceof Inet4Address){
  			  Node node= translateNodeIp(db, (Inet4Address)n, db.getNodeTable().get(n));
  			  if(node.getNodeId().equals(nodeId)){
  				  return node;
  			  }
  		  }
  	  }
  	  return null;
    }
	
	public static Node translateNode(DomainTEDB db, es.tid.tedb.elements.Node n){
		  //System.out.println("DEBUG translateNode: NodeInput: "+n);
			Node node = new Node();
		  //node.setName(n.getNodeID());
		  if(n.getAddress().size()>0){
			  node.setName(n.getAddress().get(0));
		  }else{
			  node.setName(n.getNodeID());
		  }
		  node.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 Node translateNodeIp(DomainTEDB ted, Inet4Address n, Node_Info nodeInfo) {
		Node node = new Node();
		System.out.println("DEBUG translateNodeIP, nodeInfo (of node "+n+"):"+nodeInfo);
		node.setName(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 EdgeEnd translateEdgeEnd(es.tid.tedb.elements.Node n, es.tid.tedb.elements.Intf i){
		  EdgeEnd edgeEnd = new EdgeEnd();
		  edgeEnd.setEdgeEndId(i.getName());
		  edgeEnd.setName(i.getName());
		  
		  //edgeEnd.setPeerNodeId(i.getAddress().get(0)); //correct map?
		  //edgeEnd.setSwitchingCap(SwitchingCapEnum.lsc);
		  
		  return edgeEnd;
	  }
	  
	public static EdgeEnd translateEdgeEnd(DomainTEDB db, es.tid.tedb.elements.EndPoint e){
		  EdgeEnd edgeEnd = new EdgeEnd();
		  edgeEnd.setEdgeEndId(e.getNode()+"-"+e.getIntf());
		  edgeEnd.setName(e.getNode()+"-"+e.getIntf());
		  edgeEnd.setPeerNodeId(e.getNode()); //correct map?
		  //edgeEnd.setSwitchingCap(SwitchingCapEnum.lsc);
		  return edgeEnd;
	  }
	  
	  
	
	  
	public static Bitmap translateBitmap(TE_Information te_Information){
		  Bitmap bitmap = new Bitmap();
		  
		  return bitmap;
	  }
	public static Edge translateEdge(DomainTEDB db,IntraDomainEdge e){
		//if(e.getTE_info()==null){
			return translateEthEdge(db, e);
		//}else{
		//	return translateDwdmEdge(db, e);
		//}
	}
	
	public static Edge translateEdge(MultiDomainTEDB db,InterDomainEdge e){
		//if(e.getTE_info()==null){
			return translateEthEdge(db, e);
		//}else{
		//	return translateDwdmEdge(db, e);
		//}
	}
	
	public static DwdmEdge translateDwdmEdge(DomainTEDB db, IntraDomainEdge e){
		  DwdmEdge dwdmEdge = new DwdmEdge();
		  dwdmEdge.setName(e.getLinkID());
		  dwdmEdge.setEdgeId(e.getLinkID());
		  dwdmEdge.setEdgeType(EdgeTypeEnum.dwdm_edge);
		  dwdmEdge.setMetric(e.getTemetric()+"");
		  if(e.getBw()!=null){
			  dwdmEdge.setMaxResvBw(e.getBw().getMaxBandwidth()+"");
			  dwdmEdge.setUnreservBw(e.getBw().getUnreservedBw()+"");
		  }
		  Object src = e.getSrc_Numif_id();
		  if( src instanceof es.tid.tedb.elements.EndPoint ){
			  Node node = TranslateModel.getNodeById( db, ((es.tid.tedb.elements.EndPoint) src).getNode());
			  dwdmEdge.setSource(node);
			  for(EdgeEnd end : node.getEdgeEnd()){
				  if(end.getName().equals(((es.tid.tedb.elements.EndPoint) src).getIntf()) ){
					  dwdmEdge.setLocalIfid(end);
				  }
			  }
			  
		  }
		  Object dst = e.getDst_Numif_id();
		  if( dst instanceof es.tid.tedb.elements.EndPoint ){
			  Node node = TranslateModel.getNodeById( db, ((es.tid.tedb.elements.EndPoint) dst).getNode());
			  dwdmEdge.setTarget(node);
			  for(EdgeEnd end : node.getEdgeEnd()){
				  if(end.getName().equals(((es.tid.tedb.elements.EndPoint) dst).getIntf()) ){
					  dwdmEdge.setRemoteIfid(end);
				  }
			  }
		  }	
		  //Write special DWDM fields
		  if(e.getTE_info().getAvailableLabels()!=null && e.getTE_info().getAvailableLabels().getLabelSet()!=null){
			  byte[] bytesBitMap = ((BitmapLabelSet)e.getTE_info().getAvailableLabels().getLabelSet()).getBytesBitMap();
			  List lBits = new ArrayList();
			  for(byte b : bytesBitMap){
				  for(int i=0;i<8;i++){
					  if(lBits.size()<=((BitmapLabelSet)e.getTE_info().getAvailableLabels().getLabelSet()).getNumLabels())
						  lBits.add(b|(1< edges = new ArrayList();
		  for(IntraDomainEdge link : ted.getIntraDomainLinks()){
			  edges.add(translateEdge(ted, link));
		  }
		  topology.setEdges(edges);
		  
		  List nodes = new ArrayList();
		  for(Object node : ted.getIntraDomainLinksvertexSet()){
			 // System.out.println("DEBUG nodeInTopology, (class "+node.getClass()+"):" +node );
			  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.setNodes(nodes);
		  
		  //topology.setUnderlayTopology(); //TODO
		  
		  return topology;
	  }
	
	public static Topology translateTopology(String topId, MultiDomainTEDB ted){
		//System.out.println("DEBUG translateTopology: TEDinput: "+ted.printTopology());
		  Topology topology = new Topology();
		  /*if(ted==null){
			  topology.setTopologyId("topology null Exception");
			  return topology;
		  }
		  if(ted.getDomainID()==null){
			  topology.setTopologyId("getDomainID null Exception");
			  return topology;
		  }*/
		  topology.setTopologyId(topId);
		  
		  List edges = new ArrayList();
		  for(InterDomainEdge link : ted.getInterDomainLinks()){
			  edges.add(translateEdge(ted, link));
		  }
		  topology.setEdges(edges);
		  
//		  List nodes = new ArrayList();
//		  for(Object node : ted.getIntraDomainLinksvertexSet()){
//			 // System.out.println("DEBUG nodeInTopology, (class "+node.getClass()+"):" +node );
//			  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.setNodes(nodes);
		  
		  //topology.setUnderlayTopology(); //TODO
		  
		  return topology;
	  }


	

	public static es.tid.tedb.elements.Node translate2Node(Node node) {
		es.tid.tedb.elements.Node n = new es.tid.tedb.elements.Node();
		n.setNodeID(node.getName());
		n.setDomain(Integer.parseInt(node.getDomain()));
		n.setLayer(node.getNodetype());
		n.setNodeID(node.getNodeId());
		try{
			Inet4Address addr = (Inet4Address)Inet4Address.getByName(node.getName());
			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()){
			  intList.add(translate2EdgeEnd(node, end));
		  }
		n.setIntfList(intList);
		
		return n;
	}

	private static Intf translate2EdgeEnd(Node 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;
	}

	public static Link translate2Link(Edge e) {
		System.out.println("translate2Link, Edge: "+e);
		Link link= new Link();
		link.setLinkID(e.getEdgeId());
		link.setSource(translate2EndPoint(e.getSource(),e.getLocalIfid()));
		link.setDest(translate2EndPoint(e.getTarget(), e.getRemoteIfid()));	
		link.setDirectional(false);
		if(e.getEdgeType() != null){
			link.setType(e.getEdgeType().toString());
		}
		return link;
	}

	private static EndPoint translate2EndPoint(Node source, EdgeEnd edgeEnd) {
		System.out.println("translate2EndPoint, node: "+source+"\nEdgeEnd: "+edgeEnd);
		return (new EndPoint(source.getNodeId(),edgeEnd.getName()));
	}
	  

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy