Demo entry 6684689

AlEstrella

   

Submitted by anonymous on Dec 16, 2017 at 22:08
Language: Java. Code size: 10.8 kB.

package app;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import arbolAEstrella.Arbol;
import grafo.Grafo;
import grafo.Nodo;
import jdd.graph.*;

public class AlEstrella {
	private Grafo grafo;
	Nodo salida;
	Nodo llegada;
	String seleccion;
	public AlEstrella(String salida, String llegada, String seleccion){
		//Busqueda nodos llegada y salida
		grafo = new Grafo(true);
		this.seleccion=seleccion;
		grafo = getGrafo(grafo,seleccion);
		Iterator<Edge> l = grafo.getMap().get(salida).iterator();
		boolean cond = true;
		Edge tramo;
		while(l.hasNext() && cond){
			tramo = l.next();
			if(((Nodo)tramo.n1).getNombre() == salida){
				this.salida = (Nodo)tramo.n1;
				cond = false;
			}
		}
		l = grafo.getMap().get(llegada).iterator();
		cond = true;
		while(l.hasNext() && cond){
			tramo = l.next();
			if(((Nodo)tramo.n1).getNombre() == llegada){
				this.llegada = (Nodo)tramo.n1;
				cond = false;
			}
		}
	}
	public List<Coordenadas> recorridoObtimo(){
		String linea = "";
		String lineaA = "Linea0";
		int tiempo=0;
		Arbol arbol = new Arbol(salida, llegada, grafo);
		//Se calcula el camino minimo
		List<Nodo> camino = arbol.recorridoObtimo(arbol.CalcularRecorrido());
		List<Coordenadas> recorrido = new ArrayList<Coordenadas>();
		Iterator<Nodo> iterador = camino.iterator();
		Iterator<Nodo> iterador2 = camino.iterator();
		iterador2.next();
		//Convertimos los nodos a Coordenadas para utilizarlos en recorrido con el dibujo final
		while(iterador.hasNext()){
			Nodo nodo = iterador.next();
			Nodo nodo2;
			if (iterador2.hasNext()){
				nodo2 = iterador2.next();
				Iterator<Edge> l = grafo.getMap().get(nodo.getNombre()).iterator();
				boolean cond = true;
				Edge tramo;
				while(l.hasNext() && cond){
					tramo = l.next();
					if(((Nodo)tramo.n2).getNombre() == nodo2.getNombre()){
						if (cond && linea == lineaA){
							//Al encontrar el nodo al que queremos ir guardamos la linea de la arista,
							//su tiempo y salimos
							linea = tramo.getLabel();
							tiempo = tramo.getTime();
							cond = false;
						}
						else {
							//En la ultima estacion 
							linea = tramo.getLabel();
							tiempo = tramo.getTime();
						}
					}
				}
				//Linea actual actualizada
				lineaA=linea;
			}
			else {
				//Al llegar al final
				linea = "";
				tiempo=0;
			}
			Coordenadas pixel = new Coordenadas(nodo.getX(),nodo.getY(),nodo.getNombre(),linea,tiempo);
			recorrido.add(pixel);
		}
		return recorrido;
	}

	private Grafo getGrafo(Grafo grafoOrigen, String seleccion){
		//Inicializacion del grafo con sus nodos(estaciones)
		Grafo grafo = grafoOrigen;
		Nodo Bisceglie;
		Nodo Inganni;
		Nodo Primaticcio;
		Nodo Bande_Nere;
		Nodo Gambara;
		Nodo De_Angelis;
		Nodo Wagner;
		Nodo Buonarroti;
		Nodo Pagano;
		Nodo Amendola_Fiera;
		Nodo Lotto_Fiera;
		Nodo QT8;
		Nodo Conciliazione;
		Nodo Cadorna;
		Nodo Cairoli;
		Nodo Cordusio;
		Nodo Duomo;
		Nodo SBabila;
		Nodo Palestro;
		Nodo Pta_Venezia;
		Nodo Lima;
		Nodo Loreto;
		Nodo Pasteur;
		Nodo Rovereto;
		Nodo Turro;
		Nodo Gorla;
		Nodo Precotto;
		Nodo Villa_San_Giovanni;
		Nodo Famagosta;
		Nodo Romolo;
		Nodo Pta_Genova_FS;
		Nodo Sagostino;
		Nodo Sambrogio;
		Nodo Lanza;
		Nodo Moscova;
		Nodo Garibaldi;
		Nodo Gioia;
		Nodo Centrale;
		Nodo Caiazzo;
		Nodo Piola;
		Nodo Lambrate_FS;
		Nodo Udine;
		Nodo Cimiano;
		Nodo Crescenzago;
		Nodo Cascina_Gobba;
		Nodo Lodi_Tibb;
		Nodo Porta_Romana;
		Nodo Crocetta;
		Nodo Missori;
		Nodo Montenapoleone;
		Nodo Turati;
		Nodo Repubblica;
		Nodo Sondrio;
		Nodo Zara;
		Nodo Maciachini;
		Bisceglie = grafo.addNode("Bisceglie", 45.455415,9.112898);
		Inganni = grafo.addNode("Inganni", 45.457447,9.122522);
		Primaticcio = grafo.addNode("Primaticcio",45.459404, 9.129249);
		Bande_Nere = grafo.addNode("Bande Nere", 45.461511, 9.136459);
		Gambara = grafo.addNode("Gambara", 45.464920, 9.143057);
		De_Angelis = grafo.addNode("De Angelis", 45.466425, 9.149526);
		Wagner = grafo.addNode("Wagner", 45.467852, 9.155337);
		Buonarroti = grafo.addNode("Buonarroti", 45.470410, 9.155279);
		Pagano = grafo.addNode("Pagano", 45.468326, 9.161051);
		Amendola_Fiera = grafo.addNode("Amendola Fiera", 45.473683, 9.150966);
		Lotto_Fiera = grafo.addNode("Lotto Fiera", 45.478861, 9.144008);
		QT8 = grafo.addNode("QT8", 45.485944,9.137164);
		Conciliazione = grafo.addNode("Conciliazione", 45.467536, 9.166491);
		Cadorna = grafo.addNode("Cadorna", 45.467950, 9.176362);
		Cairoli = grafo.addNode("Cairoli", 45.468245, 9.182240);
		Cordusio = grafo.addNode("Cordusio", 45.465560, 9.186198);
		Duomo = grafo.addNode("Duomo", 45.464188, 9.189665);
		SBabila = grafo.addNode("S.Babila", 45.466519, 9.197528);
		Palestro = grafo.addNode("Palestro", 45.471456, 9.201917);
		Pta_Venezia = grafo.addNode("P.ta Venezia", 45.474939, 9.205232);
		Lima = grafo.addNode("Lima", 45.480371, 9.211026);
		Loreto = grafo.addNode("Loreto", 45.484568, 9.215436);
		Pasteur = grafo.addNode("Pasteur", 45.491074,9.218215);
		Rovereto = grafo.addNode("Rovereto", 45.495684,9.219470);
		Turro = grafo.addNode("Turro", 45.500482, 9.221026);
		Gorla = grafo.addNode("Gorla",45.506738, 9.222732);
		Precotto = grafo.addNode("Precotto", 45.512054, 9.224524);
		Villa_San_Giovanni = grafo.addNode("Villa San Giovanni",45.517452, 9.226166);
		Famagosta = grafo.addNode("Famagosta",45.437254, 9.168626);
		Romolo = grafo.addNode("Romolo", 45.443756, 9.168009);
		Pta_Genova_FS = grafo.addNode("P.ta Genova FS", 45.452774, 9.169393);
		Sagostino = grafo.addNode("S.Agostino", 45.458599,9.169723);
		Sambrogio = grafo.addNode("S.Ambrogio",45.461625, 9.173457);
		Lanza = grafo.addNode("Lanza",45.472222, 9.182591);
		Moscova = grafo.addNode("Moscova",45.477824, 9.184572);
		Garibaldi = grafo.addNode("Garibaldi",45.483652,9.187314);
		Gioia = grafo.addNode("Goioia",45.484930, 9.195029);
		Centrale = grafo.addNode("Centrale", 45.484684, 9.203103);
		Caiazzo = grafo.addNode("Caiazzo", 45.485521,9.209420);
		Piola = grafo.addNode("Piola", 45.481182, 9.225004);
		Lambrate_FS = grafo.addNode("Lambrate FS",45.484247, 9.235152);
		Udine = grafo.addNode("Udine",45.491407, 9.236975);
		Cimiano = grafo.addNode("Cimiano",45.500034,9.241812);
		Crescenzago = grafo.addNode("Crescenzago", 45.505245,9.248235);
		Cascina_Gobba = grafo.addNode("Cascina Gobba",45.511615,9.260478);
		Lodi_Tibb = grafo.addNode("Lodi Tibb",45.446944, 9.210278);
		Porta_Romana = grafo.addNode("Porta Romana",45.451667, 9.203056);
		Crocetta = grafo.addNode("Crocetta", 45.456111, 9.195556);
		Missori = grafo.addNode("Missori", 45.460556, 9.188333);
		Montenapoleone = grafo.addNode("Montenapoleone", 45.470278,9.192222);
		Turati = grafo.addNode("Turati", 45.474400, 9.195036);
		Repubblica = grafo.addNode("Repubblica", 45.478333,9.196944);
		Sondrio = grafo.addNode("Sondrio",45.489722, 9.201111);
		Zara = grafo.addNode("Zara", 45.492389, 9.1925);
		Maciachini = grafo.addNode("Maciachini",45.497778, 9.184722);

		if(seleccion.equals("normal")){ 
			grafo.addEdge (Bisceglie, Inganni, 795.49,1, "Linea 1");
			grafo.addEdge(Inganni, Primaticcio,580.39,1,"Linea 1");
			grafo.addEdge(Primaticcio, Bande_Nere, 608.26,1, "Linea 1");
			grafo.addEdge(Bande_Nere, Gambara, 648.46,1, "Linea 1");
			grafo.addEdge(Gambara, De_Angelis, 538.06,1, "Linea 1");
			grafo.addEdge(De_Angelis, Wagner, 548.04,3, "Linea 1");
			grafo.addEdge(Buonarroti, Pagano, 536.41, 1,"Linea 1");
			grafo.addEdge(Wagner, Pagano, 417.4,2, "Linea 1");
			grafo.addEdge(Buonarroti, Amendola_Fiera, 490.18,1, "Linea 1");
			grafo.addEdge(Amendola_Fiera, Lotto_Fiera, 828.69,2, "Linea 1");
			grafo.addEdge(Lotto_Fiera, QT8, 911.3,2, "Linea 1");
			grafo.addEdge(Pagano, Conciliazione,437.11,1,"Linea 1");
			grafo.addEdge(Conciliazione, Cadorna, 781.97,2, "Linea 1");
			grafo.addEdge(Cadorna, Cairoli, 547.17,1, "Linea 1");
			grafo.addEdge(Cairoli, Cordusio, 433.54,1, "Linea 1");
			grafo.addEdge(Cordusio, Duomo, 286.64,2, "Linea 1");
			grafo.addEdge(Duomo, SBabila, 680.55,1, "Linea 1");
			grafo.addEdge(SBabila, Palestro, 659.86,2, "Linea 1");
			grafo.addEdge(Palestro, Pta_Venezia, 409.59,1,"Linea 1");
			grafo.addEdge(Pta_Venezia, Lima, 808.28,2, "Linea 1");
			grafo.addEdge(Lima, Loreto, 812.73,1,"Linea 1");
			grafo.addEdge(Loreto, Pasteur, 560.5,2, "Linea 1");
			grafo.addEdge(Pasteur, Rovereto, 510.06,1, "Linea 1");
			grafo.addEdge(Rovereto, Turro, 543.51,2, "Linea 1");
			grafo.addEdge(Turro, Gorla, 702.61,1, "Linea 1");
			grafo.addEdge(Gorla, Precotto, 605.1,1, "Linea 1");
			grafo.addEdge(Precotto, Villa_San_Giovanni, 612.84,2, "Linea 1");
			grafo.addEdge(Famagosta, Romolo, 775.37,1, "Linea 2");
			grafo.addEdge(Romolo, Pta_Genova_FS, 1010,2, "Linea 2");
			grafo.addEdge(Pta_Genova_FS, Sagostino, 741.96,1, "Linea 2");
			grafo.addEdge(Sagostino, Sambrogio, 426.59,2, "Linea 2");
			grafo.addEdge(Sambrogio,Cadorna , 794.77 ,2, "Linea 2");
			grafo.addEdge(Cadorna, Lanza, 630.14,2, "Linea 2");
			grafo.addEdge(Lanza, Moscova, 617.18 ,1, "Linea 2");
			grafo.addEdge(Moscova, Garibaldi, 791.64,2, "Linea 2");
			grafo.addEdge(Garibaldi, Gioia, 902.78,2, "Linea 2");
			grafo.addEdge(Gioia, Centrale, 650.76,2, "Linea 2");
			grafo.addEdge(Centrale, Caiazzo, 539.76,1, "Linea 2");
			grafo.addEdge(Caiazzo, Loreto, 493.55,1, "Linea 2");
			grafo.addEdge(Loreto, Piola, 1000,2, "Linea 2");
			grafo.addEdge(Piola, Lambrate_FS, 790.17,2,"Linea 2");
			grafo.addEdge(Lambrate_FS, Udine, 877.37,2, "Linea 2");
			grafo.addEdge(Udine, Cimiano, 1160,2, "Linea 2");
			grafo.addEdge(Cimiano, Crescenzago, 786.39,2, "Linea 2");
			grafo.addEdge(Crescenzago, Cascina_Gobba, 1260,2, "Linea 2");
			grafo.addEdge(Lodi_Tibb, Porta_Romana, 779.19,1, "Linea 3");
			grafo.addEdge(Porta_Romana, Crocetta, 861.70,2, "Linea 3");
			grafo.addEdge(Crocetta, Missori, 617.36,1,"Linea 3");
			grafo.addEdge(Missori, Duomo, 462.53,1, "Linea 3");
			grafo.addEdge(Duomo, Montenapoleone,793.47,2,"Linea 3");
			grafo.addEdge(Montenapoleone, Turati, 616.03,1, "Linea 3");
			grafo.addEdge(Turati, Repubblica, 663.35,1, "Linea 3");
			grafo.addEdge(Repubblica, Centrale, 571.52,2, "Linea 3");
			grafo.addEdge(Centrale, Sondrio, 687.60,2, "Linea 3");
			grafo.addEdge(Sondrio, Zara, 692.53,1, "Linea 3");
			grafo.addEdge(Zara, Maciachini, 870.31,1, "Linea 3");
		}
		else if(seleccion.equals("opcion1")){
			//OTRAS CONDICIONES: en caso de que se quiera modificar los tiempos entre estaciones por retrasos 
			//u otras modificaciones
		}
		return grafo;
	}
}

This snippet took 0.02 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).