aboutsummaryrefslogtreecommitdiff
path: root/structure/Graph.java
diff options
context:
space:
mode:
Diffstat (limited to 'structure/Graph.java')
-rw-r--r--structure/Graph.java108
1 files changed, 108 insertions, 0 deletions
diff --git a/structure/Graph.java b/structure/Graph.java
new file mode 100644
index 0000000..fd26653
--- /dev/null
+++ b/structure/Graph.java
@@ -0,0 +1,108 @@
+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;
+
+ 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;
+
+ // Build node
+ for(Router r : this.grid.getGrid()){
+ this.addNode(r.name);
+
+ }
+
+ // Build Edges
+ this.buildEdges();
+
+ //Build bestLink
+ this.showBestLink();
+
+ }
+
+
+
+ public void buildEdges(){
+
+ 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{
+ //graph.addEdge(current+currentRouter, current, currentRouter).addAttribute("ui.style", "fill-color: rgb(0,100,255);");
+
+ /* if(g.isEdgeOfLink(bestLink, r, currentRouter)){
+ toAdd=graph.addEdge(current+currentRouterName, current, currentRouterName);
+ toAdd.setAttribute("ui.label", relier.get(currentRouter));
+ toAdd.setAttribute("ui.style", "fill-color:red;");
+
+ }else{*/
+ this.addEdge(current+currentRouterName, current, currentRouterName).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.getBestLinkIndex());
+ 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;");
+ }
+ }
+
+ }
+ }
+ }
+ }
+
+
+}