package es.tid.tedb; import java.net.Inet4Address; import com.google.gson.Gson; import es.tid.ospf.ospfv2.lsa.OSPFTEv2LSA; import es.tid.ospf.ospfv2.lsa.tlv.subtlv.AvailableLabels; import es.tid.ospf.ospfv2.lsa.tlv.subtlv.complexFields.BitmapLabelSet; /** * * Class for simplified database write of LSAs * * @author Fernando Mu�oz del Nuevo * * * */ public class DatabaseControlSimplifiedLSA { public Inet4Address advertisingRouter; public Inet4Address linkId; public long linkLocalIdentifier; public long linkRemoteIdentifier; public String bitmapLabelSet; public float maximumBandwidth; public float unreservedBandwidth; public float maximumReservableBandwidth; //protected LinkedList<Inet4Address> labelSet; public Inet4Address getAdvertisingRouter() { return advertisingRouter; } public void setAdvertisingRouter(Inet4Address advertisingRouter) { this.advertisingRouter = advertisingRouter; } public Inet4Address getLinkId() { return linkId; } public void setLinkId(Inet4Address linkId) { this.linkId = linkId; } public long getLinkLocalIdentifier() { return linkLocalIdentifier; } public void setLinkLocalIdentifier(long linkLocalIdentifier) { this.linkLocalIdentifier = linkLocalIdentifier; } public long getLinkRemoteIdentifier() { return linkRemoteIdentifier; } public void setLinkRemoteIdentifier(long linkRemoteIdentifier) { this.linkRemoteIdentifier = linkRemoteIdentifier; } public String getBitmapLabelSet() { return bitmapLabelSet; } public void setBitmapLabelSet(String bitmapLabelSet) { this.bitmapLabelSet = bitmapLabelSet; } public float getMaximumBandwidth() { return maximumBandwidth; } public void setMaximumBandwidth(float maximumBandwidth) { this.maximumBandwidth = maximumBandwidth; } public float getUnreservedBandwidth() { return unreservedBandwidth; } public void setUnreservedBandwidth(float unreservedBandwidth) { this.unreservedBandwidth = unreservedBandwidth; } public float getMaximumReservableBandwidth() { return maximumReservableBandwidth; } public void setMaximumReservableBandwidth(float maximumReservableBandwidth) { this.maximumReservableBandwidth = maximumReservableBandwidth; } public void fillBitmap(AvailableLabels availableLabels){ int num_wavelength = 0; bitmapLabelSet = ""; while(num_wavelength < availableLabels.getLabelSet().getNumLabels()){ int num_byte=num_wavelength/8; boolean isFree = ((((BitmapLabelSet)availableLabels.getLabelSet()).getBytesBitMap()[num_byte]&(0x80>>>(num_wavelength%8)))==0); if(isFree){ bitmapLabelSet = bitmapLabelSet + "0"; }else{ bitmapLabelSet = bitmapLabelSet + "1"; } num_wavelength++; } } public void fillSimplifiedLsa(OSPFTEv2LSA lsa){ if (lsa.getAdvertisingRouter()!=null) this.setAdvertisingRouter(lsa.getAdvertisingRouter()); if (lsa.getLinkTLV().getLinkID().getLinkID()!=null) this.setLinkId(lsa.getLinkTLV().getLinkID().getLinkID()); if (lsa.getLinkTLV().getLinkLocalRemoteIdentifiers()!=null){ this.setLinkLocalIdentifier(lsa.getLinkTLV().getLinkLocalRemoteIdentifiers().getLinkLocalIdentifier()); this.setLinkRemoteIdentifier(lsa.getLinkTLV().getLinkLocalRemoteIdentifiers().getLinkRemoteIdentifier()); } if (lsa.getLinkTLV().getMaximumBandwidth()!=null) this.setMaximumBandwidth(lsa.getLinkTLV().getMaximumBandwidth().getMaximumBandwidth()); if (lsa.getLinkTLV().getUnreservedBandwidth()!=null){ this.setMaximumBandwidth(lsa.getLinkTLV().getUnreservedBandwidth().unreservedBandwidth[0]); } if (lsa.getLinkTLV().getMaximumReservableBandwidth()!=null){ this.setMaximumReservableBandwidth(lsa.getLinkTLV().getMaximumReservableBandwidth().maximumReservableBandwidth); } if (lsa.getLinkTLV().getAvailableLabels()!=null){ this.fillBitmap(lsa.getLinkTLV().getAvailableLabels()); } } public String logJsonSimplifiedLSA(){ Gson gson = new Gson(); String json = gson.toJson(this); return json; //IPInterfaceTrafficRequest iitr2 = gson.fromJson(json, DatabaseControlSimplifiedLSA.class); } }