
es.tid.topologyModuleBase.IETFTopoModel.model.TranslateModel Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of topology Show documentation
Show all versions of topology Show documentation
Traffic Engineering Database, BGP-LS peer, Topology Module
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