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

es.tid.tedb.SimpleITTEDB Maven / Gradle / Ivy

The newest version!
package es.tid.tedb;

import es.tid.ospf.ospfv2.lsa.tlv.subtlv.complexFields.BitmapLabelSet;
import es.tid.pce.pcep.objects.tlvs.StorageTLV;
import org.jgrapht.graph.SimpleDirectedWeightedGraph;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.net.Inet4Address;
import java.util.*;


/**
 * Base de datos de ingenieria de trafico
 * CLASE DE PRUEBA REESTRUCTURAR DESPUES!!!!!!!!!!
 * @author Alejandro Tovar
 *
 */
public class SimpleITTEDB implements DomainTEDB{
	private long graphId;
	private SimpleDirectedWeightedGraph networkGraph;
	private LinkedList interDomainLinks; //MARTA
	//public SimpleDirectedWeightedGraph grafo;
	//private byte[] domainReachabilityIPv4Prefix;
	//private Object domainId;
	//private byte[] mask;
	
	private Hashtable  it_site_id_domain_ed;
	private Hashtable  resource_id_domain_ed;
	
	private Hashtable  storage_domain_ed;
	ReachabilityEntry reachabilityEntry;
	
	private Logger log;
	
	public SimpleDirectedWeightedGraph getDuplicatedNetworkGraph(){
		it_site_id_domain_ed=new Hashtable ();
		resource_id_domain_ed=new Hashtable ();
		SimpleDirectedWeightedGraph graphCopy= (SimpleDirectedWeightedGraph) networkGraph.clone();
		log = LoggerFactory.getLogger("PCEServer");
		return graphCopy;
	}
	
	public void initializeFromFile(String file){
		
		interDomainLinks = FileTEDBUpdater.readInterDomainLinks(file);//MARTA
		storage_domain_ed = FileTEDBUpdater.getStorageCharacteristics(file);
		
		it_site_id_domain_ed=FileTEDBUpdater.getITSites(file);
		resource_id_domain_ed=FileTEDBUpdater.getResource(file);
		
		reachabilityEntry = new ReachabilityEntry();
		FileTEDBUpdater.getDomainReachabilityFromFile(file,reachabilityEntry);
		
		networkGraph=FileTEDBUpdater.readITNetwork(file);
//		domainId=FileTEDBUpdater.readNetworkDomain(file);
//		domainReachabilityIPv4Prefix=new byte[4];
//		domainReachabilityIPv4Prefix[0]=(byte)172;
//		domainReachabilityIPv4Prefix[1]=(byte)16;
//		domainReachabilityIPv4Prefix[2]=(byte)101;
//		domainReachabilityIPv4Prefix[3]=(byte)0;
//		mask=new byte[4];
//		mask[0]=(byte)255;
//		mask[1]=(byte)255;
//		mask[2]=(byte)255;
//		mask[3]=(byte)0;
		
	}

	@Override
	public void initializeFromFile(String file, String learnFrom) {

	}

	public long getGraphId() {
		return graphId;
	}
	public void setGraphId(long graphId) {
		this.graphId = graphId;
	}
	
	
	public boolean belongsToDomain(Object addr){
		int i;
		byte[] addrbytes=((Inet4Address)addr).getAddress();
		for (i=0;i<4;++i){
			int a= ((int)addrbytes[i])&0xFF;
			log.info("addrbytes["+i+"]= "+a);
			addrbytes[i]=(byte) (addrbytes[i]&(reachabilityEntry.getMask())[i]);
			int aa= ((int)addrbytes[i])&0xFF;
			log.info("addrbytesMask["+i+"]= "+aa);
		}
		for (i=0;i<4;++i){
			
		    if (addrbytes[i]!=(reachabilityEntry.getAggregatedIPRange().getAddress())[i]){
		    	log.info("addrbytes[i] "+addrbytes[i]);
		    	log.info("domainAddress[i] "+((int)((reachabilityEntry.getAggregatedIPRange().getAddress())[i])&0xFF));
		    	return false;
		    }
		}
		return true;
	}

//	public byte[] getDomainReachabilityIPv4Prefix() {
//		return domainReachabilityIPv4Prefix;
//	}

//	public void setDomainReachabilityIPv4Prefix(byte[] domainReachabilityIPv4Prefix) {
//		this.domainReachabilityIPv4Prefix = domainReachabilityIPv4Prefix;
//	}

//	public Object getDomainId() {
//		return domainId;
//	}

//	public void setDomainId(Object domainId) {
//		this.domainId = domainId;
//	}
	
	public ReachabilityEntry getReachabilityEntry() {
		return reachabilityEntry;
	}

	public void setReachabilityEntry(ReachabilityEntry reachabilityEntry) {
		this.reachabilityEntry = reachabilityEntry;
	}

	public SimpleDirectedWeightedGraph getNetworkGraph() {
		return networkGraph;
	}

	public void setNetworkGraph(
			SimpleDirectedWeightedGraph networkGraph) {
		this.networkGraph = networkGraph;
	}
	
	public LinkedList getInterDomainLinks() {
		return interDomainLinks;
	}

	public void setInterDomainLinks(LinkedList interDomainLinks) {
		this.interDomainLinks = interDomainLinks;
	}
	
	public Hashtable getStorageCharacteristics() {
		return storage_domain_ed;
	}

	public void setStorageCharacteristics(Hashtable storage_domain_ed) {
		this.storage_domain_ed = storage_domain_ed;
	}


//	public DirectedWeightedMultigraph getDuplicatedMDNetworkGraph() {
//		// TODO Auto-generated method stub
//		return null;
//	}

	@Override
	public String printTopology() {
		
		String topoString;
		Set vetexSet= networkGraph.vertexSet();
		Iterator  vertexIterator=vetexSet.iterator();
		topoString="Domains: \r\n";
		while (vertexIterator.hasNext()){
			Object vertex= vertexIterator.next();
			topoString=topoString+"\t"+vertex.toString()+"\r\n";
			Enumeration site = it_site_id_domain_ed.keys();
			Enumeration resource = resource_id_domain_ed.keys();
			if(site.hasMoreElements()){
				while(site.hasMoreElements()){
					Object ele=site.nextElement();
					Object dom=it_site_id_domain_ed.get(ele);
					if(dom.equals(vertex)){
						topoString=topoString+"\t -IT site:\t"+ele.toString()+"\r\n";
						while (resource.hasMoreElements()){
							Object res=resource.nextElement();
							Object dombis=resource_id_domain_ed.get(res);
							if (dombis.equals(vertex))
								topoString=topoString+"\t  -IT Resource:\t"+res.toString()+"\r\n";
							}
					}

				}
			}
			
		}
		topoString=topoString+"Intradomain Link list: \r\n";
		Set edgeSet= networkGraph.edgeSet();
		Iterator  edgeIterator=edgeSet.iterator();
		while (edgeIterator.hasNext()){
			IntraDomainEdge edge= edgeIterator.next();
			topoString=topoString+"\t"+edge.toString()+"\r\n";
		}
		topoString=topoString+printInterDomainLinks();
		return topoString;
	}


	@Override
	public String printInterDomainLinks() {
String topoString="";
		
    	int size = interDomainLinks.size();
    	topoString="Interdomain Link list: \r\n";
    	for (int i=0;i sourceVertexList,
			LinkedList targetVertexList, int wavelength,
			boolean bidirectional) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void notifyWavelengthEndReservation(
			LinkedList sourceVertexList,
			LinkedList targetVertexList, int wavelength,
			boolean bidirectional) {
		// TODO Auto-generated method stub
		
	}
	
	@Override
	public void notifyWavelengthReservationSSON(
			LinkedList sourceVertexList,
			LinkedList targetVertexList, int wavelength,
			boolean bidirectional, int m) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void notifyNewEdgeIP(Object source, Object destination,
			TE_Information informationTEDB) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void notifyWavelengthEndReservationSSON(
			LinkedList sourceVertexList,
			LinkedList targetVertexList, int wavelength,
			boolean bidirectional, int m) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void registerSSON(SSONListener compAlgPreComp) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public SSONInformation getSSONinfo() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Set getIntraDomainLinks() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void notifyWavelengthReservationWLAN(
			LinkedList sourceVertexList,
			LinkedList targetVertexList,
			LinkedList wlans, boolean bidirectional) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public Inet4Address getDomainID() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void setWSONinfo(WSONInformation wSONinfo) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void setSSONinfo(SSONInformation sSONinfo) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void createGraph() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public Set getIntraDomainLinksvertexSet() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Hashtable getNodeTable() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public IT_Resources getItResources() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void setItResources(IT_Resources itResources) {
		// TODO Auto-generated method stub
		
	}


	
	

}