package main;

import java.util.ArrayList;
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;

import structure.Grid;
import structure.Router;

public class Main {

	public static void main(String[] args) {
		Grid g=new Grid();

		
		System.setProperty("org.graphstream.ui.renderer", "org.graphstream.ui.j2dviewer.J2DGraphRenderer");
		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();
			 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)){
						 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));

					 }
						


				 }
				 catch(Exception e){
					// System.out.println("Bug de merde.");
				 }
				 
			 }
			 
		 }
		 g.printLinkWeight();
		 
		graph.display();
	}
}
