diff --git a/it/unisa/info13d/Articoli/BeniDiConsumo.java b/it/unisa/info13d/Articoli/BeniDiConsumo.java index 0f9bf54..e41586c 100644 --- a/it/unisa/info13d/Articoli/BeniDiConsumo.java +++ b/it/unisa/info13d/Articoli/BeniDiConsumo.java @@ -1,6 +1,7 @@ package it.unisa.info13d.Articoli; import java.io.Serializable; +import java.util.GregorianCalendar; /** * Created with MONSTER. @@ -64,7 +65,11 @@ public class BeniDiConsumo implements Utilizzabile, Serializable{ public void setBeniInStock(int beniInStock) { this.beniInStock = beniInStock; } - + + public GregorianCalendar getScadenza() { + return scadenza; + } + public void setBeniVenduti() { beniInStock--; beniVenduti++; @@ -75,4 +80,5 @@ public class BeniDiConsumo implements Utilizzabile, Serializable{ private double prezzoBene; private int beniInStock; //Numero totale di prodotti da vendere private int beniVenduti; //Numero di prodotti venduti + private GregorianCalendar scadenza = new GregorianCalendar(99999,0,1); } diff --git a/it/unisa/info13d/GestioneCatalogo/Catalogo.java b/it/unisa/info13d/GestioneCatalogo/Catalogo.java index 8cb1f53..1811d40 100644 --- a/it/unisa/info13d/GestioneCatalogo/Catalogo.java +++ b/it/unisa/info13d/GestioneCatalogo/Catalogo.java @@ -1,4 +1,5 @@ package it.unisa.info13d.GestioneCatalogo; +import java.util.*; import it.unisa.info13d.Articoli.BeniDiConsumo; import it.unisa.info13d.Articoli.CeneInRistoranti; @@ -24,11 +25,7 @@ import java.io.ObjectOutputStream; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.GregorianCalendar; -import java.util.Scanner; + /** * Created with PC-STATION. * User: lebon @@ -236,7 +233,83 @@ public class Catalogo{ } } } - + + public void print_cat_admin (ArrayList a){ + for(Utilizzabile deal: a) + { + if(deal instanceof Vacanze) + { + Vacanze dealVacanza = (Vacanze)deal; + if((dealVacanza.eAcquistabile())) + { + visualizzaVacanza(dealVacanza); + } + continue; + } + if(deal instanceof BeniDiConsumo) + { + BeniDiConsumo dealBene = (BeniDiConsumo)deal; + if((dealBene.eAcquistabile())) + { + visualizzaBene(dealBene); + } + continue; + } + if(deal instanceof CeneInRistoranti) + { + CeneInRistoranti dealCena = (CeneInRistoranti)deal; + + if((dealCena.eAcquistabile())) + { + visualizzaCena(dealCena); + } + continue; + } + } + } + + public void print_cat_user (ArrayList a, String location_user_to_compare){ + for(Utilizzabile deal: a) + { + if(deal instanceof Vacanze) + { + Vacanze dealVacanza = (Vacanze)deal; + if((dealVacanza.eAcquistabile())) + { + visualizzaVacanza(dealVacanza); + } + continue; + } + if(deal instanceof BeniDiConsumo) + { + BeniDiConsumo dealBene = (BeniDiConsumo)deal; + if((dealBene.eAcquistabile())) + { + visualizzaBene(dealBene); + } + continue; + } + if(deal instanceof CeneInRistoranti) + { + CeneInRistoranti dealCena = (CeneInRistoranti)deal; + + if((dealCena.eAcquistabile() && dealCena.getLuogo().equals(location_user_to_compare ))) + { + visualizzaCena(dealCena); + } + continue; + } + } + } + + + protected long convert_calendar_to_int (GregorianCalendar in){ + return in.getTimeInMillis(); + + + } + + /** * Questo metodo visualizza le offerte attive del catalogo * @throws IOException @@ -248,40 +321,303 @@ public class Catalogo{ Entry loggedUser = Access.get_user_data(user); if(!(loggedUser.getType())) { - //DO SOMETHING ! - } - - for(Utilizzabile deal: catalogoOfferte) - { - if(deal instanceof Vacanze) - { - Vacanze dealVacanza = (Vacanze)deal; - if((dealVacanza.eAcquistabile())) - { - visualizzaVacanza(dealVacanza); - } - continue; - } - if(deal instanceof BeniDiConsumo) - { - BeniDiConsumo dealBene = (BeniDiConsumo)deal; - if((dealBene.eAcquistabile())) - { - visualizzaBene(dealBene); - } - continue; - } - if(deal instanceof CeneInRistoranti) - { - CeneInRistoranti dealCena = (CeneInRistoranti)deal; - - if((dealCena.eAcquistabile())) - { - visualizzaCena(dealCena); - } - continue; - } - } + Scanner reader = new Scanner(System.in); + + + System.out.println("1 --> Ordina Per Data di Scadenza"); + System.out.println("2 --> Ordina Per ID"); + + String choice; + choice = reader.nextLine(); + for ( ; !(choice.equals("1")) && !(choice.equals("2")) ;){ + System.out.println("Scelta Errata. Riprovare"); + choice = reader.nextLine(); + } + + if (choice.equals("1")){ + + class CompareDataScadenza implements Comparator { + + @Override + public int compare(Utilizzabile e1, Utilizzabile e2) { + + if (e1 instanceof BeniDiConsumo){ + //beni vs + if (e2 instanceof Vacanze){ + //beni vs vacanze + if (((BeniDiConsumo)e1).getScadenza().getTimeInMillis() < ((Vacanze)e2).getScadenzaOfferta().getTimeInMillis()) + return -1; + return 1; + + }else{ + if (e2 instanceof BeniDiConsumo){ + //bene vs //bene + + if (((BeniDiConsumo)e1).getScadenza().getTimeInMillis() < ((BeniDiConsumo)e2).getScadenza().getTimeInMillis()) + return -1; + return 1; + + }else{ + //bene vs cena + + if (((BeniDiConsumo)e1).getScadenza().getTimeInMillis() < ((CeneInRistoranti)e2).getDataScadenzaOffertaCena().getTimeInMillis()) + return -1; + return 1; + } + } + }else{ + if (e1 instanceof Vacanze){ + //vacanze vs + if (e2 instanceof BeniDiConsumo){ + //vacanze vs bene + if (((Vacanze)e1).getScadenzaOfferta().getTimeInMillis() < ((BeniDiConsumo)e2).getScadenza().getTimeInMillis()) + return -1; + return 1; + + }else{ + if (e2 instanceof Vacanze){ + //vacabnza vs vacanza + + if (((Vacanze)e1).getScadenzaOfferta().getTimeInMillis() < ((Vacanze)e2).getScadenzaOfferta().getTimeInMillis()) + return -1; + return 1; + + + }else{ + //vacanza vs cena + + if (((Vacanze)e1).getScadenzaOfferta().getTimeInMillis() < ((CeneInRistoranti)e2).getDataScadenzaOffertaCena().getTimeInMillis()) + return -1; + return 1; + + } + } + + }else{ + //Cene vs + if (e2 instanceof Vacanze){ + //cena vs vacanza + + if (((CeneInRistoranti)e1).getDataScadenzaOffertaCena().getTimeInMillis() < ((Vacanze)e2).getScadenzaOfferta().getTimeInMillis()) + return -1; + return 1; + + }else{ + if (e2 instanceof CeneInRistoranti){ + //cena vs cena + + if (((CeneInRistoranti)e1).getDataScadenzaOffertaCena().getTimeInMillis() < ((CeneInRistoranti)e2).getDataScadenzaOffertaCena().getTimeInMillis()) + return -1; + return 1; + }else{ + //cena vs bene + + if (((CeneInRistoranti)e1).getDataScadenzaOffertaCena().getTimeInMillis() < ((BeniDiConsumo)e2).getScadenza().getTimeInMillis()) + return -1; + return 1; + } + } + + } + } + + } + } + + Collections.sort(catalogoOfferte,new CompareDataScadenza()); + print_cat_admin (catalogoOfferte); + }else{ + + class CompareID implements Comparator { + + @Override + public int compare(Utilizzabile e1, Utilizzabile e2) { + + if (e1 instanceof BeniDiConsumo){ + //beni vs + if (e2 instanceof Vacanze){ + //beni vs vacanze + if (((BeniDiConsumo)e1).getIdBene() < ((Vacanze)e2).getIdViaggio()) + return -1; + return 1; + + }else{ + if (e2 instanceof BeniDiConsumo){ + //bene vs //bene + + if (((BeniDiConsumo)e1).getIdBene() < ((BeniDiConsumo)e2).getIdBene()) + return -1; + return 1; + + }else{ + //bene vs cena + + if (((BeniDiConsumo)e1).getIdBene() < ((CeneInRistoranti)e2).getIdCena()) + return -1; + return 1; + } + } + }else{ + if (e1 instanceof Vacanze){ + //vacanze vs + if (e2 instanceof BeniDiConsumo){ + //vacanze vs bene + if (((Vacanze)e1).getIdViaggio() < ((BeniDiConsumo)e2).getIdBene()) + return -1; + return 1; + + }else{ + if (e2 instanceof Vacanze){ + //vacabnza vs vacanza + + if (((Vacanze)e1).getIdViaggio() < ((Vacanze)e2).getIdViaggio()) + return -1; + return 1; + + + }else{ + //vacanza vs cena + + if (((Vacanze)e1).getIdViaggio() < ((CeneInRistoranti)e2).getIdCena()) + return -1; + return 1; + + } + } + + }else{ + //Cene vs + if (e2 instanceof Vacanze){ + //cena vs vacanza + + if (((CeneInRistoranti)e1).getIdCena() < ((Vacanze)e2).getIdViaggio()) + return -1; + return 1; + + }else{ + if (e2 instanceof CeneInRistoranti){ + //cena vs cena + + if (((CeneInRistoranti)e1).getIdCena() < ((CeneInRistoranti)e2).getIdCena()) + return -1; + return 1; + }else{ + //cena vs bene + + if (((CeneInRistoranti)e1).getIdCena() < ((BeniDiConsumo)e2).getIdBene()) + return -1; + return 1; + } + } + + } + } + + } + } + + + Collections.sort(catalogoOfferte,new CompareID()); + print_cat_admin (catalogoOfferte); + + } + + + } else{ + + class CompareIDUser implements Comparator { + + @Override + public int compare(Utilizzabile e1, Utilizzabile e2) { + + if (e1 instanceof BeniDiConsumo){ + //beni vs + if (e2 instanceof Vacanze){ + //beni vs vacanze + if (((BeniDiConsumo)e1).getIdBene() < ((Vacanze)e1).getIdViaggio()) + return -1; + return 1; + + }else{ + if (e2 instanceof BeniDiConsumo){ + //bene vs //bene + + if (((BeniDiConsumo)e1).getIdBene() < ((BeniDiConsumo)e1).getIdBene()) + return -1; + return 1; + + }else{ + //bene vs cena + + if (((BeniDiConsumo)e1).getIdBene() < ((CeneInRistoranti)e1).getIdCena()) + return -1; + return 1; + } + } + }else{ + if (e1 instanceof Vacanze){ + //vacanze vs + if (e2 instanceof BeniDiConsumo){ + //vacanze vs bene + if (((Vacanze)e1).getIdViaggio() < ((BeniDiConsumo)e1).getIdBene()) + return -1; + return 1; + + }else{ + if (e2 instanceof Vacanze){ + //vacabnza vs vacanza + + if (((Vacanze)e1).getIdViaggio() < ((Vacanze)e1).getIdViaggio()) + return -1; + return 1; + + + }else{ + //vacanza vs cena + + if (((Vacanze)e1).getIdViaggio() < ((CeneInRistoranti)e1).getIdCena()) + return -1; + return 1; + + } + } + + }else{ + //Cene vs + if (e2 instanceof Vacanze){ + //cena vs vacanza + + if (((CeneInRistoranti)e1).getIdCena() < ((Vacanze)e1).getIdViaggio()) + return -1; + return 1; + + }else{ + if (e2 instanceof CeneInRistoranti){ + //cena vs cena + + if (((CeneInRistoranti)e1).getIdCena() < ((CeneInRistoranti)e1).getIdCena()) + return -1; + return 1; + }else{ + //cena vs bene + + if (((CeneInRistoranti)e1).getIdCena() < ((BeniDiConsumo)e1).getIdBene()) + return -1; + return 1; + } + } + + } + } + + } + } + + + Collections.sort(catalogoOfferte,new CompareIDUser()); + print_cat_user(catalogoOfferte,loggedUser.getLocation()); + + } } /**