package org.opennaas.extensions.vnmapper; import java.io.Serializable; import java.util.ArrayList; import java.util.List; public class Path implements Serializable { private static final long serialVersionUID = -8058566845188905088L; private int id; private int node1Id; private int node2Id; private ArrayList<PLink> links; private int capacity; private int maxCapacity; private int delay; // /// method to calculate the capacity and delay of a path based on the included links public Path() { links = new ArrayList<PLink>(); } public int getId() { return id; } public void setId(int id) { this.id = id; } public int getNode1Id() { return node1Id; } public void setNode1Id(int node1Id) { this.node1Id = node1Id; } public int getNode2Id() { return node2Id; } public void setNode2Id(int node2Id) { this.node2Id = node2Id; } public ArrayList<PLink> getLinks() { return links; } public void setLinks(ArrayList<PLink> links) { this.links = links; } public int getCapacity() { return capacity; } public void setCapacity(int capacity) { this.capacity = capacity; } public int getMaxCapacity() { return maxCapacity; } public void setMaxCapacity(int maxCapacity) { this.maxCapacity = maxCapacity; } public int getDelay() { return delay; } public void setDelay(int delay) { this.delay = delay; } public void findPathCapacityAndDelay(List<List<PLink>> connections) { int minCapacity, delay; minCapacity = 1000000; delay = 0; this.maxCapacity = 0; int n1, n2, n3; for (int i = 0; i < (int) this.links.size(); i++) { n1 = this.links.get(i).getNode1Id(); n2 = this.links.get(i).getNode2Id(); if (n2 < n1) { n3 = n2; n2 = n1; n1 = n3; } if (connections.get(n1).get(n2).getCapacity() < minCapacity) minCapacity = connections.get(n1).get(n2).getCapacity(); if (connections.get(n1).get(n2).getCapacity() > this.maxCapacity) this.maxCapacity = connections.get(n1).get(n2).getCapacity(); delay = delay + links.get(i).getDelay(); } this.capacity = minCapacity; this.delay = delay; } // / method to add a link to a path public Path addLinkToPath(PLink l) { Path res = new Path(); int size = this.links.size(); for (int i = 0; i < (int) this.links.size(); i++) res.links.add(i, this.links.get(i)); res.links.add(size, l); // res->findPathCapacityAndDelay(); return res; } @Override public String toString() { String pathString = ""; pathString += node1Id + "--"; int previous = node1Id; int n1, n2; if ((node1Id == this.links.get(0).getNode1Id()) || (node1Id == this.links.get(0).getNode2Id())) { for (int i = 0; i < (int) this.links.size(); i++) { n1 = this.links.get(i).getNode1Id(); n2 = this.links.get(i).getNode2Id(); // System.out.println(n1+"--"+n2); if (n1 == previous) { pathString += n2 + "--"; previous = n2; } else { pathString += n1 + "--"; previous = n1; } } } else { for (int i = (int) this.links.size() - 1; i >= 0; i--) { n1 = this.links.get(i).getNode1Id(); n2 = this.links.get(i).getNode2Id(); // System.out.println(n1+"--"+n2); if (n1 == previous) { pathString += n2 + "--"; previous = n2; } else { pathString += n1 + "--"; previous = n1; } } } if (pathString.endsWith("--")) pathString = pathString.substring(0, pathString.length() - 2); return pathString; } }