package baseconocimiento.utilidades;
import baseconocimiento.ArchivoExcelBaseConocimiento;
import java.util.ArrayList;
import modelo.Barrio;
import modelo.Localidad;
import modelo.Mapa;
/**
*
* @author UNL
*/
public class Mapeo {
private ArrayList<Barrio> barrios;
private ArchivoExcelBaseConocimiento baseConocimiento;
private Mapa mapa;
public Mapeo() {
this.barrios = new ArrayList<Barrio>();
this.baseConocimiento = new ArchivoExcelBaseConocimiento();
}
public void mapearBarrios() {
this.barrios = this.baseConocimiento.leerBarrios();
}
public void presentarBarrios() {
for (Barrio barrio : this.barrios) {
System.out.println(barrio);
}
}
public void presentarListaBarrios(ArrayList<Barrio> listaBarrios) {
ArrayList<Barrio> imprimir = listaBarrios;
int cont = 0;
for (Barrio barrio : imprimir) {
System.out.println("Barrio" + cont + ": " + barrio);
cont++;
}
}
public void presentarListaLocalidades(ArrayList<Localidad> listaLocalidades) {
ArrayList<Localidad> imprimir = listaLocalidades;
int cont = 0;
for (Localidad localidad : imprimir) {
System.out.println("Localidad" + cont + ": " + localidad);
cont++;
}
}
public ArrayList<Barrio> mapearVecinos(Barrio b) {
ArrayList<Barrio> barriosVecinos = new ArrayList<Barrio>();
int idBarrio = b.getId() - 1;
String[][] stringReglas = this.baseConocimiento.leerReglas();
for (int i = 0; i < stringReglas[idBarrio].length; i++) {
if (!stringReglas[idBarrio][i].equals("-")) {
int idBarrioVecino = Integer.parseInt(stringReglas[idBarrio][i]);
barriosVecinos.add(leerBarrioVecino(idBarrioVecino));
}
}
return barriosVecinos;
}
public ArrayList<Integer> mapearHeuristica(Barrio b){
ArrayList<Integer> heuristicaBarrio = new ArrayList<Integer>();
int idBarrio = b.getId() - 1;
String[][] stringHeuristicas = this.baseConocimiento.leerHeuristicaDLRPuntos();
for (int i = 0; i < stringHeuristicas[idBarrio].length; i++) {
if (!stringHeuristicas[idBarrio][i].equals("-")) {
int distBarrioVecino = Integer.parseInt(stringHeuristicas[idBarrio][i]);
heuristicaBarrio.add(distBarrioVecino);
}
}
Utilidad.imprimirArray(stringHeuristicas, "Id Barrio: "+ b.getId()+"--------------------------");
return heuristicaBarrio;
}
public Barrio leerBarrioVecino(int idBarrio) {
Barrio barrioVecino = new Barrio();
for (Barrio barrio : this.barrios) {
if (barrio.getId() == idBarrio) {
barrioVecino = barrio;
break;
}
}
return barrioVecino;
}
public ArrayList<Localidad> mapearLocalidades() {
mapearBarrios();
ArrayList<Localidad> listaLocalidades = new ArrayList<Localidad>();
for (Barrio barrio : this.barrios) {
Localidad localidad = new Localidad(barrio, mapearVecinos(barrio),mapearHeuristica(barrio));
listaLocalidades.add(localidad);
}
return listaLocalidades;
}
public void mapearMapa() {
this.mapa = new Mapa(1, "Loja", mapearLocalidades());
}
public ArrayList<Barrio> getBarrios() {
return barrios;
}
public void setBarrios(ArrayList<Barrio> barrios) {
this.barrios = barrios;
}
public ArchivoExcelBaseConocimiento getBaseConocimiento() {
return baseConocimiento;
}
public void setBaseConocimiento(ArchivoExcelBaseConocimiento baseConocimiento) {
this.baseConocimiento = baseConocimiento;
}
public Mapa getMapa() {
return mapa;
}
public void setMapa(Mapa mapa) {
this.mapa = mapa;
}
public static void main(String[] args) {
Mapeo mapeo = new Mapeo();
mapeo.mapearBarrios();
mapeo.presentarBarrios();
System.out.println("Barrios vecinos del Barrio " + mapeo.getBarrios().get(0).getId() + "\n");
mapeo.presentarListaBarrios(mapeo.mapearVecinos(mapeo.getBarrios().get(0)));
System.out.println("\n\tMapeando Localidades\n");
mapeo.presentarListaLocalidades(mapeo.mapearLocalidades());
//mapeo.getMapa().toString();
}
}