package it.fdev.unisaconnect.data; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.WeakHashMap; public class BusTratta1 { private String compagnia; private String capolinea; private List<BusCorsa1> corseVersoUni; private List<BusCorsa1> corseDaUni; private List<String> stazioniVersoUni; private List<String> stazioniDaUni; public BusTratta1() { } public BusTratta1(String compagnia, String capolinea, List<BusCorsa1> corse, List<String> stazioniVersoUni, List<String> stazioniDaUni) { this.compagnia = compagnia; this.capolinea = capolinea; corseVersoUni = new ArrayList<BusCorsa1>(); corseDaUni = new ArrayList<BusCorsa1>(); for (BusCorsa1 cCorsa : corse) { if (cCorsa.isVersoUni()) { corseVersoUni.add(cCorsa); } else { corseDaUni.add(cCorsa); } } Collections.sort(corseVersoUni); Collections.sort(corseDaUni); this.stazioniVersoUni = stazioniVersoUni; this.stazioniDaUni = stazioniDaUni; } public String getCompagnia() { return compagnia; } public String getCapolinea() { return capolinea; } public List<BusCorsa1> getCorseVersoUni() { return corseVersoUni; } public List<BusCorsa1> getCorseDaUni() { return corseDaUni; } public void addCorsa(BusCorsa1 corsa) { if (corsa.isVersoUni()) { corseVersoUni.add(corsa); Collections.sort(corseVersoUni); } else { corseDaUni.add(corsa); Collections.sort(corseDaUni); } } public List<String> getStazioniVersoUni() { return stazioniVersoUni; } public List<String> getStazioniDaUni() { return stazioniDaUni; } public static class BusCorsa1 implements Comparable<BusCorsa1> { private BusTratta1 tratta; private boolean versoUni; private String giorni; private int oraPartenza; private List<BusFermata1> fermate; private WeakHashMap<String, BusFermata1> fermateIndexed; public BusCorsa1(BusTratta1 tratta, boolean versoUni, String giorni, int oraPartenza, List<BusFermata1> fermate) { this.tratta = tratta; this.versoUni = versoUni; this.giorni = giorni; this.oraPartenza = oraPartenza; this.fermate = fermate; fermateIndexed = new WeakHashMap<String, BusFermata1>(fermate.size()); for (BusFermata1 cFermata : fermate) { fermateIndexed.put(cFermata.getStazione(), cFermata); } // // oraPartenza = Integer.MAX_VALUE; // for (BusFermata cFermata : fermate) { // oraPartenza = Math.min(oraPartenza, cFermata.getOra()); // } } public BusCorsa1(boolean versoUni, String giorni, int oraPartenza, List<BusFermata1> fermate) { this(null, versoUni, giorni, oraPartenza, fermate); } public BusTratta1 getTratta() { return tratta; } public boolean isVersoUni() { return versoUni; } public String getGiorni() { return giorni; } public int getOraPartenza() { return oraPartenza; } public List<BusFermata1> getFermate() { return fermate; } public int getOraFermata(String fermata) { if (fermateIndexed.containsKey(fermata)) { return fermateIndexed.get(fermata).getOra(); } return -1; } @Override public int compareTo(BusCorsa1 another) { return this.oraPartenza - another.getOraPartenza(); } public static class BusFermata1 implements Comparable<BusFermata1> { private BusCorsa1 corsa; private String stazione; private int ora; private int posizione; public BusFermata1(BusCorsa1 corsa, String stazione, int ora, int posizione) { this.corsa = corsa; this.stazione = stazione; this.ora = ora; this.posizione = posizione; } public BusFermata1(String stazione, int ora, int posizione) { this(null, stazione, ora, posizione); } public BusCorsa1 getCorsa() { return corsa; } public String getStazione() { return stazione; } public int getOra() { return ora; } public int getPosizione() { return posizione; } public void setCorsa(BusCorsa1 corsa) { this.corsa = corsa; } @Override public int compareTo(BusFermata1 another) { // return ora - another.getOra(); return posizione - another.getPosizione(); } } } }