diff options
Diffstat (limited to 'structure/MyGraph.java')
| -rw-r--r-- | structure/MyGraph.java | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/structure/MyGraph.java b/structure/MyGraph.java new file mode 100644 index 0000000..1c2dc0f --- /dev/null +++ b/structure/MyGraph.java @@ -0,0 +1,162 @@ +package structure; + +import java.util.*; + +import org.graphstream.graph.Edge; +import org.graphstream.graph.Graph; +import org.graphstream.graph.Node; +import org.graphstream.graph.implementations.SingleGraph; +import org.graphstream.ui.layout.springbox.EdgeSpring; +import org.graphstream.ui.swingViewer.basicRenderer.EdgeRenderer; +import org.graphstream.ui.util.EdgePoints; + + +public class MyGraph extends SingleGraph{ + + + private Grid grid; + + private int miss=0; + private int success=0; + + public MyGraph(String title, Grid grid) { + super(title); + // Allow CSS on view + System.setProperty("org.graphstream.ui.renderer", "org.graphstream.ui.j2dviewer.J2DGraphRenderer"); + // Set graph CSS + this.addAttribute("ui.stylesheet", "url('resources/style.css')"); + + // Assign grid + this.grid=grid; + + int i=0; + int ll=this.grid.getGrid().size(); + // Build node + for(Router r : this.grid.getGrid()){ + if(i==0){ + this.addNode(r.name).setAttribute("ui.label", "Source"); + } + else{ + if(i==ll-1){ + this.addNode(r.name).setAttribute("ui.label", "Destination"); + + } + else{ + this.addNode(r.name); + + } + + } + i++; + + } + + // Build Edges + this.buildEdges(); + + //Build bestLink + this.showBestLink(); + + } + + + + public void buildEdges(){ + + /*Iterator<Edge> edges=this.getEdgeIterator(); + while(edges.hasNext()){ + Edge edge=edges.next(); + this.removeEdge(edge); + }*/ + + for(Router r : this.grid.getGrid()){ + + String current=r.name; + + + HashMap<Router, Integer> relier=r.getLinks(); + Set<Router> k=relier.keySet(); + Iterator<Router> i=k.iterator(); + while(i.hasNext()){ + Router currentRouter=i.next(); + + String currentRouterName=currentRouter.name; + try{ + Edge toAdd=this.addEdge(current+currentRouterName, current, currentRouterName); + toAdd.setAttribute("ui.label", relier.get(currentRouter)); + } + catch(Exception e){ + // System.out.println("Bug de merde."); + } + + } + + } + } + + public void showBestLink(){ + ArrayList<Integer> bestLink=this.grid.getLinks().get(this.grid.getBestLinkByProtocol()); + for(int i=0;i<bestLink.size();i++){ + Iterator<Node> nodes= this.getNodeIterator(); + while(nodes.hasNext()){ + Node node=nodes.next(); + Iterator<Edge> edges=node.getEdgeIterator(); + while(edges.hasNext()){ + Edge edge=edges.next(); + + if(i<(bestLink.size()-1)){ + int destIndex=bestLink.get(i+1); + String src=this.grid.getGrid().get(bestLink.get(i)).name; + String dest=this.grid.getGrid().get(bestLink.get(i+1)).name; + if((edge.getNode0().getId().equals(src) && edge.getNode1().getId().equals(dest))||(edge.getNode1().getId().equals(src) && edge.getNode0().getId().equals(dest))){ + edge.setAttribute("ui.style", "fill-color:red;"); + } + } + + } + } + } + } + + public void update(){ + // Reset color + Iterator<Edge> edges=this.getEdgeIterator(); + while(edges.hasNext()){ + Edge edge=edges.next(); + edge.setAttribute("ui.style", "fill-color:black;"); + } + // Update label + edges=this.getEdgeIterator(); + while(edges.hasNext()){ + Edge edge=edges.next(); + for(Router r : this.grid.getGrid()){ + String current=r.name; + + HashMap<Router, Integer> relier=r.getLinks(); + Set<Router> k=relier.keySet(); + Iterator<Router> i=k.iterator(); + while(i.hasNext()){ + Router currentRouter=i.next(); + + String currentRouterName=currentRouter.name; + if(edge.getId().equals(current+currentRouterName)||edge.getId().equals(currentRouterName+current)){ + edge.setAttribute("ui.label", relier.get(currentRouter)); + } + } + } + + } + + if(this.grid.getBestLinkByProtocol()==this.grid.getBestLinkIndex()){ + this.success++; + } + else{ + this.miss++; + } + System.out.println("Success = " + this.success + " Miss = " + this.miss + " try number :"+(this.success+this.miss)) ; + + //Build bestLink + this.showBestLink(); + } + +} |
