Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package gestioneTaxi;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.HashMap;
- import java.util.LinkedList;
- import java.util.List;
- import java.util.Map;
- import java.util.Queue;
- public class TaxiCompany {
- private Map<String,Taxi> elencoTaxi;
- private Map<String,Quartiere> elencoQuartieri;
- private Queue<Taxi> codaTaxi;
- private Map<Taxi, ArrayList<Corsa>> corseTaxi;
- private int corsePerse = 0;
- public TaxiCompany() {
- elencoTaxi = new HashMap<>();
- elencoQuartieri = new HashMap<>();
- codaTaxi = new LinkedList<>();
- corseTaxi = new HashMap<>();
- }
- public void addTaxi(String id) throws InvalidTaxiName {
- if(elencoTaxi.containsKey(id))
- throw (new InvalidTaxiName());
- Taxi t = new Taxi(id);
- elencoTaxi.put(id, t);
- t.setCompany(this);
- corseTaxi.put(t, new ArrayList<Corsa>());
- codaTaxi.add(t);
- }
- public Queue<Taxi> getLiberi() {
- return codaTaxi;
- }
- public Taxi chiamataTaxi(Passeggero p) {
- if(codaTaxi.isEmpty()){
- corsePerse++;
- return null;
- }
- else {
- Taxi t = codaTaxi.remove();
- t.chiamata(p);
- return t;
- }
- }
- public void nuovaCorsa(Taxi t, Corsa c){
- ArrayList<Corsa> corse = corseTaxi.get(t);
- corse.add(c);
- corseTaxi.put(t, corse);
- }
- public void corsaTerminata (Taxi t, Luogo arrivo) {
- codaTaxi.add(t);
- String qid = arrivo.getQuartiere();
- Quartiere q = elencoQuartieri.get(qid);
- if(q == null){
- q = new Quartiere(qid);
- elencoQuartieri.put(qid, q);
- }
- q.addCorsa();
- }
- public List<Corsa> getCorse(String id) throws InvalidTaxiName {
- Taxi t = elencoTaxi.get(id);
- if(t == null)
- throw (new InvalidTaxiName());
- return corseTaxi.get(t);
- }
- public int getCorsePerse(){
- return corsePerse;
- }
- public ArrayList<InfoI> statisticheTaxi() {
- ArrayList<InfoI> list = new ArrayList<InfoI>(elencoTaxi.values());
- Collections.sort(list);
- return list;
- }
- public ArrayList<InfoI> statisticheQuartieri() {
- ArrayList<InfoI> list = new ArrayList<InfoI>(elencoQuartieri.values());
- Collections.sort(list);
- return list;
- }
- }
- package gestioneTaxi;
- public interface InfoI extends Comparable<InfoI>{
- String getId();
- int getValore();
- }
- package gestioneTaxi;
- public class Corsa {
- private Luogo partenza, arrivo;
- public Corsa(Luogo p, Luogo a) {
- partenza = p;
- arrivo = a;
- }
- public String toString() {
- return partenza + "," + arrivo;
- }
- }package gestioneTaxi;
- public class Taxi implements InfoI{
- private TaxiCompany company;
- private Luogo partenza, arrivo;
- private Passeggero passeggero;
- private String id;
- private int numCorse;
- public Taxi(String ids) {
- id = ids;
- numCorse = 0;
- }
- public void setCompany(TaxiCompany tc){
- company = tc;
- }
- public void chiamata(Passeggero p) {
- partenza = p.getPosizione();
- passeggero = p;
- }
- public void inizioCorsa(Luogo destinazione) {
- arrivo = destinazione;
- company.nuovaCorsa(this, new Corsa(partenza, arrivo));
- }
- public void fineCorsa(){
- passeggero.setPosizione(arrivo);
- company.corsaTerminata(this, arrivo);
- numCorse++;
- }
- public String toString(){
- return id;
- }
- @Override
- public String getId() {
- return id;
- }
- @Override
- public int getValore() {
- return numCorse;
- }
- @Override
- public int compareTo(InfoI o) {
- int d = o.getValore() - numCorse;
- if(d != 0)
- return d;
- return id.compareTo(o.getId());
- }
- }
- package gestioneTaxi;
- public class Quartiere implements InfoI {
- private String id;
- private int numCorse;
- public Quartiere (String ids){
- id = ids;
- numCorse = 0;
- }
- public void addCorsa(){
- numCorse++;
- }
- @Override
- public int compareTo(InfoI o) {
- int d = o.getValore() - numCorse;
- if(d != 0)
- return d;
- return id.compareTo(o.getId());
- }
- @Override
- public String getId() {
- return id;
- }
- @Override
- public int getValore() {
- return numCorse;
- }
- }package gestioneTaxi;
- public class Passeggero {
- private Luogo posizione;
- public Passeggero(Luogo pos) {
- posizione = pos;
- }
- public Luogo getPosizione() {
- return posizione;
- }
- public void setPosizione(Luogo pos) {
- posizione = pos;
- }
- }
- package gestioneTaxi;
- public class Luogo {
- private String indirizzo;
- private String quartiere;
- public Luogo(String ind, String quart) {
- indirizzo = ind;
- quartiere = quart;
- }
- public String getQuartiere(){
- return quartiere;
- }
- public String toString() {
- return indirizzo;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement