aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoic Guegan <16000511@e003m10.istic.univ-rennes1.fr>2016-03-21 15:40:39 +0100
committerLoic Guegan <16000511@e003m10.istic.univ-rennes1.fr>2016-03-21 15:40:39 +0100
commit9cb19346dadb23e81a89cec151d43aa5fa33dc15 (patch)
tree299d7fb67ded798f75c7ff13122a8c141e7cbe3a
parent0676d16b3a5c13e2b75e97e7140b938b323cd79e (diff)
Ajout affichage meilleur chemin
-rw-r--r--main/Main.java17
-rw-r--r--structure/Grid.java49
2 files changed, 62 insertions, 4 deletions
diff --git a/main/Main.java b/main/Main.java
index 51e3c59..c1a4e1c 100644
--- a/main/Main.java
+++ b/main/Main.java
@@ -5,6 +5,7 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
+import org.graphstream.graph.Edge;
import org.graphstream.graph.Graph;
import org.graphstream.graph.implementations.SingleGraph;
@@ -21,11 +22,14 @@ public class Main {
Graph graph = new SingleGraph("Tutorial 1");
graph.addAttribute("ui.stylesheet", "url('resources/style.css')");
+
ArrayList<Router> grid=g.getGrid();
for(Router r : grid){
graph.addNode(r.name);
}
+
+ ArrayList<Integer> bestLink=g.getLinks().get(g.getBestLinkIndex());
for(Router r : grid){
String current=r.name;
HashMap<Router, Integer> relier=r.getLinks();
@@ -36,8 +40,17 @@ public class Main {
String currentRouterName=currentRouter.name;
try{
//graph.addEdge(current+currentRouter, current, currentRouter).addAttribute("ui.style", "fill-color: rgb(0,100,255);");
- graph.addEdge(current+currentRouterName, current, currentRouterName).setAttribute("ui.label", relier.get(currentRouter));
+
+ if(g.isEdgeOfLink(bestLink, r, currentRouter)){
+ Edge toAdd=graph.addEdge(current+currentRouterName, current, currentRouterName);
+ toAdd.setAttribute("ui.label", relier.get(currentRouter));
+ toAdd.setAttribute("ui.style", "fill-color:red;");
+
+ }else{
+ graph.addEdge(current+currentRouterName, current, currentRouterName).setAttribute("ui.label", relier.get(currentRouter));
+ }
+
}
@@ -48,6 +61,8 @@ public class Main {
}
}
+ g.printLinkWeight();
+
graph.display();
}
}
diff --git a/structure/Grid.java b/structure/Grid.java
index eb76638..bd0af2a 100644
--- a/structure/Grid.java
+++ b/structure/Grid.java
@@ -131,7 +131,7 @@ public class Grid {
return currentBestLink;
}
- private int getMaxBottleneck(ArrayList<Integer> link){
+ /*private int getMaxBottleneck(ArrayList<Integer> link){
int max=this.getWeigthOfLink(link.get(0), link.get(1));
for(int j=1;j<link.size()-1;j++){
int currentMax=this.getWeigthOfLink(link.get(j), link.get(j+1));
@@ -141,6 +141,17 @@ public class Grid {
}
return max;
+ }*/
+ private int getMaxBottleneck(ArrayList<Integer> link){
+ int max=this.getWeigthOfLink(link.get(0), link.get(1));
+ for(int j=1;j<link.size()-1;j++){
+ int currentMax=this.getWeigthOfLink(link.get(j), link.get(j+1));
+ if(max>currentMax){
+ max=currentMax;
+ }
+
+ }
+ return max;
}
private int getWeigthOfLink(int router1,int router2){
@@ -153,14 +164,46 @@ public class Grid {
ArrayList<Integer> link=this.links.get(i);
System.out.print("Link number " + i + " ==> ");
for(int j=0;j<link.size()-1;j++){
- //System.out.print(this.getWeigthOfLink(link.get(j), link.get(j+1)) + " ");
+ System.out.print(this.getWeigthOfLink(link.get(j), link.get(j+1)) + " ");
}
- System.out.println(this.getMaxBottleneck(link));
+ System.out.println(" Goulot :"+this.getMaxBottleneck(link));
//System.out.println();
}
}
+
+
+ public boolean isEdgeOfLink(ArrayList<Integer>link, Router src, Router dest){
+ for(int j=0;j<link.size()-1;j++){
+ Router current=this.grid.get(link.get(j));
+ if(src.name.equals(current.name)){
+ if(j<link.size()-1){
+ Router currentDest=this.grid.get(link.get(j+1));
+
+ if(currentDest.name.equals(dest.name)){
+ return true;
+ }
+ }
+ }
+ }
+ for(int j=0;j<link.size()-1;j++){
+ Router current=this.grid.get(link.get(j));
+ if(dest.name.equals(current.name)){
+ if(j<link.size()-1){
+ Router currentDest=this.grid.get(link.get(j+1));
+
+ if(currentDest.name.equals(src.name)){
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+
+
public ArrayList<Router> getGrid() {
return grid;
}