diff --git a/src/Noemi/Gestore.java b/src/Noemi/Gestore.java new file mode 100644 index 0000000..36d33c1 --- /dev/null +++ b/src/Noemi/Gestore.java @@ -0,0 +1,20 @@ +public class Gestore{ + + public Gestore filtroautore(String autore){ + for(Opera o: opere){ + if(o.getAutore().equals(autore)) + ADD + } + } + + public Gestore filtroautore(String autore){ + for(Opera o: opere){ + if(o instanceof Libro) + Libro l=(Libro) o; + if(l.getCasaEd().equals(autore)) + ADD + } + } + + private ArrayList opere; +} \ No newline at end of file diff --git a/src/Noemi/Libro.java b/src/Noemi/Libro.java new file mode 100644 index 0000000..1aa6694 --- /dev/null +++ b/src/Noemi/Libro.java @@ -0,0 +1,11 @@ +public class Libro{ + + public String getAutore(){ + return autore; + } + + private String autore; + private String titolo; + private int anno; + private String casaEd; +} \ No newline at end of file diff --git a/src/Noemi/Opera.java b/src/Noemi/Opera.java new file mode 100644 index 0000000..0d30a74 --- /dev/null +++ b/src/Noemi/Opera.java @@ -0,0 +1,5 @@ +public interface Opera{ + String getTitolo(); + String getAutore(); + int getAnno(); +} \ No newline at end of file diff --git a/src/Temi d'esame/Comune/Cittadini.txt b/src/Temi d'esame/Comune/Cittadini.txt new file mode 100644 index 0000000..325e201 --- /dev/null +++ b/src/Temi d'esame/Comune/Cittadini.txt @@ -0,0 +1,25 @@ +ct01 +Mario +Rossi +10/11/1990 +ct02 +Guido +Bianchi +13/09/1993 +ct03 +Luca +Verdi +14/01/1950 +ct04 +Lucia +Bianchi +17/03/1960 +ct05 +Matilde +Rossi +13/07/1991 +ct06 +Luca +Rossi +09/09/2009 + diff --git a/src/Temi d'esame/Comune/Cittadino.class b/src/Temi d'esame/Comune/Cittadino.class new file mode 100644 index 0000000..79f62d3 Binary files /dev/null and b/src/Temi d'esame/Comune/Cittadino.class differ diff --git a/src/Temi d'esame/Comune/Cittadino.java b/src/Temi d'esame/Comune/Cittadino.java new file mode 100644 index 0000000..f429aad --- /dev/null +++ b/src/Temi d'esame/Comune/Cittadino.java @@ -0,0 +1,84 @@ +import java.util.ArrayList; +import java.util.Date; +import java.util.Scanner; +import java.text.SimpleDateFormat; +import java.text.ParseException; +import java.io.PrintStream; + +public class Cittadino{ + + public Cittadino(String codiceFiscale, String nome, String cnome, Date dataNascita){ + this.codiceFiscale=codiceFiscale; + this.nome=nome; + this.cnome=cnome; + this.dataNascita=dataNascita; + this.famiglia=new ArrayList(); + } + + public static Cittadino read(Scanner sc){ + String codiceFiscale, nome, cnome; + Date dataNascita; + SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy"); + + if(!sc.hasNextLine()) return null; + codiceFiscale=sc.nextLine(); + + if(!sc.hasNextLine()) return null; + nome=sc.nextLine(); + + if(!sc.hasNextLine()) return null; + cnome=sc.nextLine(); + + if(!sc.hasNextLine()) return null; + try{ + dataNascita=sdf.parse(sc.nextLine()); + } + catch(ParseException e){ + System.err.println("Data non inserita correttamente."); + dataNascita=new Date(0); + } + + return new Cittadino(codiceFiscale, nome, cnome, dataNascita); + } + + public String getNome(){ + return nome; + } + + public String getCodice(){ + return codiceFiscale; + } + + public Date getDataNascita(){ + return dataNascita; + } + + public void addFamigliare(Cittadino c, String parentela){ + Parentela p=new Parentela(c, parentela); + famiglia.add(p); + } + + public String toString(){ + SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy"); + return codiceFiscale+" "+nome+" "+cnome+" "+sdf.format(dataNascita); + } + + public void printFamigliari(PrintStream ps){ + for(Parentela p: famiglia) + ps.println(p.toString()); + } + + public boolean hasConiuge(){ + for(Parentela p: famiglia) + if(p.getRelazione().equals("coniuge")) + return true; + + return false; + } + + private String codiceFiscale; + private String nome; + private String cnome; + private Date dataNascita; + private ArrayList famiglia; +} \ No newline at end of file diff --git a/src/Temi d'esame/Comune/CittadinoNonTrovato.class b/src/Temi d'esame/Comune/CittadinoNonTrovato.class new file mode 100644 index 0000000..2b33675 Binary files /dev/null and b/src/Temi d'esame/Comune/CittadinoNonTrovato.class differ diff --git a/src/Temi d'esame/Comune/CittadinoNonTrovato.java b/src/Temi d'esame/Comune/CittadinoNonTrovato.java new file mode 100644 index 0000000..6a38501 --- /dev/null +++ b/src/Temi d'esame/Comune/CittadinoNonTrovato.java @@ -0,0 +1,5 @@ +public class CittadinoNonTrovato extends RuntimeException{ + public CittadinoNonTrovato(){ + + } +} \ No newline at end of file diff --git a/src/Temi d'esame/Comune/Gestore.class b/src/Temi d'esame/Comune/Gestore.class new file mode 100644 index 0000000..1765069 Binary files /dev/null and b/src/Temi d'esame/Comune/Gestore.class differ diff --git a/src/Temi d'esame/Comune/Gestore.java b/src/Temi d'esame/Comune/Gestore.java new file mode 100644 index 0000000..c9c00ed --- /dev/null +++ b/src/Temi d'esame/Comune/Gestore.java @@ -0,0 +1,106 @@ +import java.util.Scanner; +import java.util.ArrayList; +import java.io.PrintStream; +import java.util.Date; +import java.util.Iterator; + +public class Gestore{ + + public Gestore(Scanner scC, Scanner scR){ + ArrayList cittadini=new ArrayList(); + Cittadino c, famigliare; + + c=Cittadino.read(scC); + while(c!=null){ + cittadini.add(c); + c=Cittadino.read(scC); + } + + Relazione r=Relazione.read(scR); + while(r!=null){ + try{ + c=searchCittadino(r.getCodiceCapo()); + famigliare=searchCittadino(r.getCodiceFamigliare()); + c.addFamigliare(famigliare, r.getRelazione()); + if(r.getRelazione().equals("Figlio")) //Se sono padre figlio va cambiato il tipo di parentela + famigliare.addFamigliare(c, "Padre"); + else //Se sono cognugi no + famigliare.addFamigliare(c, r.getRelazione()); + } + catch(CittadinoNonTrovato e){ + System.err.println("Cittadino non trovato"); + } + r=Relazione.read(scR); + } + + } + + private Gestore(ArrayList cittadini){ + this.cittadini=cittadini; + } + + public Cittadino searchCittadino(String codice){ + Iterator iter = cittadini.iterator(); + boolean trovato = false; + Cittadino c=null; + + while(!trovato && iter.hasNext()){ + c=iter.next(); + if(c.getCodice().equals(codice)) + trovato=true; + } + + if(trovato) + return c; + throw new CittadinoNonTrovato(); + } + + public void printStatoFamiglia(PrintStream ps, String codice){ + Cittadino c; + try{ + c=searchCittadino(codice); + ps.println(c.toString()); + c.printFamigliari(ps); + } + catch(CittadinoNonTrovato e){ + System.err.println("Cittadino non trovato"); + } + + } + + public void printStatoFamiglia(PrintStream ps){ + for(Cittadino c: cittadini){ + ps.println(c.toString()); + c.printFamigliari(ps); + } + } + + public Gestore filtroNome(String nome){ + ArrayList cittadiniFilter=new ArrayList(); + + for(Cittadino c: cittadini){ + if(c.getNome().equals(nome)) + cittadiniFilter.add(c); + } + + return new Gestore(cittadiniFilter); + } + + public Gestore filtroDataSposati(Date data){ + ArrayList cittadiniFilter=new ArrayList(); + + for(Cittadino c: cittadini){ + if(c.getDataNascita().before(data) && c.hasConiuge()) + cittadiniFilter.add(c); + } + + return new Gestore(cittadiniFilter); + } + + public void print(PrintStream ps){ + for(Cittadino c: cittadini) + ps.println(c.toString()); + } + + private ArrayList cittadini; +} \ No newline at end of file diff --git a/src/Temi d'esame/Comune/Parentela.class b/src/Temi d'esame/Comune/Parentela.class new file mode 100644 index 0000000..a31bfdf Binary files /dev/null and b/src/Temi d'esame/Comune/Parentela.class differ diff --git a/src/Temi d'esame/Comune/Parentela.java b/src/Temi d'esame/Comune/Parentela.java new file mode 100644 index 0000000..12f9936 --- /dev/null +++ b/src/Temi d'esame/Comune/Parentela.java @@ -0,0 +1,18 @@ +public class Parentela{ + + public Parentela(Cittadino c, String relazione){ + this.parente=c; + this.relazione=relazione; + } + + public String toString(){ + return parente.toString()+" "+relazione; + } + + public String getRelazione(){ + return relazione; + } + + private Cittadino parente; + private String relazione; +} \ No newline at end of file diff --git a/src/Temi d'esame/Comune/RelFam.txt b/src/Temi d'esame/Comune/RelFam.txt new file mode 100644 index 0000000..54eb77a --- /dev/null +++ b/src/Temi d'esame/Comune/RelFam.txt @@ -0,0 +1,9 @@ +ct01 +ct05 +Coniuge +ct01 +ct06 +Figlio +ct03 +ct01 +figlio \ No newline at end of file diff --git a/src/Temi d'esame/Comune/Relazione.class b/src/Temi d'esame/Comune/Relazione.class new file mode 100644 index 0000000..db91ca2 Binary files /dev/null and b/src/Temi d'esame/Comune/Relazione.class differ diff --git a/src/Temi d'esame/Comune/Relazione.java b/src/Temi d'esame/Comune/Relazione.java new file mode 100644 index 0000000..6fba227 --- /dev/null +++ b/src/Temi d'esame/Comune/Relazione.java @@ -0,0 +1,41 @@ +import java.util.Scanner; + +public class Relazione{ + + public Relazione(String codiceCapo, String codiceFamigliare, String relazione){ + this.codiceCapo=codiceCapo; + this.codiceFamigliare=codiceFamigliare; + this.relazione=relazione; + } + + public static Relazione read(Scanner sc){ + String codiceCapo, codiceFamigliare, relazione; + + if(!sc.hasNextLine()) return null; + codiceCapo=sc.nextLine(); + + if(!sc.hasNextLine()) return null; + codiceFamigliare=sc.nextLine(); + + if(!sc.hasNextLine()) return null; + relazione=sc.nextLine(); + + return new Relazione(codiceCapo, codiceFamigliare, relazione); + } + + public String getCodiceCapo(){ + return codiceCapo; + } + + public String getCodiceFamigliare(){ + return codiceFamigliare; + } + + public String getRelazione(){ + return relazione; + } + + private String codiceCapo; + private String codiceFamigliare; + private String relazione; +} \ No newline at end of file diff --git a/src/Temi d'esame/Comune/Test.class b/src/Temi d'esame/Comune/Test.class new file mode 100644 index 0000000..b43465e Binary files /dev/null and b/src/Temi d'esame/Comune/Test.class differ diff --git a/src/Temi d'esame/Comune/Test.java b/src/Temi d'esame/Comune/Test.java new file mode 100644 index 0000000..7879cfd --- /dev/null +++ b/src/Temi d'esame/Comune/Test.java @@ -0,0 +1,18 @@ +import java.io.File; +import java.io.FileNotFoundException; +import java.util.Scanner; + +public class Test{ + public static void main(String [] args){ + Scanner scC=null, scP=null; + try{ + scC=new Scanner(new File("Cittadini.txt")); + scP=new Scanner(new File("RelFam.txt")); + }catch(FileNotFoundException e){ + System.exit(1); + } + Gestore g=new Gestore(scC, scP); + + g.print(System.out); + } +} \ No newline at end of file diff --git a/src/Temi d'esame/Comune1/Cittadino.java b/src/Temi d'esame/Comune1/Cittadino.java new file mode 100644 index 0000000..184e351 --- /dev/null +++ b/src/Temi d'esame/Comune1/Cittadino.java @@ -0,0 +1,53 @@ +import java.util.ArrayList; +import java.util.Date; +import java.util.Scanner; +import java.text.SimpleDateFormat; +import java.text.ParseException; + +public class Cittadino{ + + public Cittadino(String codiceFiscale, String nome, String cnome, Date dataNascita){ + this.codiceFiscale=codiceFiscale; + this.nome=nome; + this.cnome=cnome; + this.dataNascita=dataNascita; + this.famiglia=null; + } + + public static Cittadino read(Scanner sc){ + String codiceFiscale, nome, cnome; + Date dataNascita; + SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy"); + + if(!sc.hasNextLine()) return null; + codiceFiscale=sc.nextLine(); + + if(!sc.hasNextLine()) return null; + nome=sc.nextLine(); + + if(!sc.hasNextLine()) return null; + cnome=sc.nextLine(); + + if(!sc.hasNextLine()) return null; + try{ + dataNascita=sdf.parse(sc.nextLine()); + } + catch(ParseException e){ + System.err.println("Data non inserita correttamente."); + dataNascita=new Date(0); + } + + return new Cittadino(codiceFiscale, nome, cnome, dataNascita); + } + + public String toString(){ + SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy"); + return codiceFiscale+" "+nome+" "+cnome+" "+sdf.format(dataNascita); + } + + private String codiceFiscale; + private String nome; + private String cnome; + private Date dataNascita; + private Famiglia famiglia; +} \ No newline at end of file diff --git a/src/Temi d'esame/Comune1/Famiglia.java b/src/Temi d'esame/Comune1/Famiglia.java new file mode 100644 index 0000000..4253360 --- /dev/null +++ b/src/Temi d'esame/Comune1/Famiglia.java @@ -0,0 +1,8 @@ +import java.util.ArrayList; + +public class Famiglia{ + + private Cittadino capo; + private Cittadino cognuge; + private ArrayList figli; +} \ No newline at end of file diff --git a/src/Temi d'esame/Comune1/Gestore.java b/src/Temi d'esame/Comune1/Gestore.java new file mode 100644 index 0000000..f7b974f --- /dev/null +++ b/src/Temi d'esame/Comune1/Gestore.java @@ -0,0 +1,29 @@ +import java.util.ArrayList; +import java.util.Scanner; + +public class Gestore{ + + public Gestore(Scanner scC, Scanner scP){ + ArrayList cittadini=new ArrayList(); + ArrayList famiglie=new ArrayList(); + + Cittadino famiglare; + Cittadino c=Cittadino.read(scC); + while(c!=null){ + cittadini.add(c); + c=Cittadino.read(scC); + } + + Parentella p = Parentella.read(scP); + while(p!=null){ + try{ + c=searchCapo(p.getCodiceCapo()); + famiglare=searchFamigliare(p.getCodiceFamigliare()); + + } + + } + } + private ArrayList cittadini; + private ArrayList famiglie; +} \ No newline at end of file diff --git a/src/Temi d'esame/Comune1/Parentela.java b/src/Temi d'esame/Comune1/Parentela.java new file mode 100644 index 0000000..d916a2b --- /dev/null +++ b/src/Temi d'esame/Comune1/Parentela.java @@ -0,0 +1,29 @@ +import java.util.Scanner; + +public class Parentela{ + + public Parentela(String codiceCapo, String codiceFamigliare, String relazione){ + this.codiceCapo=codiceCapo; + this.codiceFamigliare=codiceFamigliare; + this.relazione=relazione; + } + + public static void read(Scanner sc){ + String codiceCapo, codiceFamigliare, relazione; + + if(!sc.hasNextLine()) return null; + codiceFiscale=sc.nextLine(); + + if(!sc.hasNextLine()) return null; + nome=sc.nextLine(); + + if(!sc.hasNextLine()) return null; + cnome=sc.nextLine(); + + return new Parentela(codiceCapo, codiceFamigliare, relazione); + } + + private String codiceCapo; + private String codiceFamigliare; + private String relazione; +} \ No newline at end of file diff --git a/src/Temi d'esame/Prova 12-01/Giacenza.class b/src/Temi d'esame/Prova 12-01/Giacenza.class new file mode 100644 index 0000000..9a3402c Binary files /dev/null and b/src/Temi d'esame/Prova 12-01/Giacenza.class differ diff --git a/src/Temi d'esame/Prova 12-01/Giacenza.java b/src/Temi d'esame/Prova 12-01/Giacenza.java new file mode 100644 index 0000000..64de203 --- /dev/null +++ b/src/Temi d'esame/Prova 12-01/Giacenza.java @@ -0,0 +1,93 @@ +import java.util.Scanner; +import java.io.PrintStream; + +public class Giacenza { + + public Giacenza(String codeM, String codeP, int quantità) { + this.codeM = codeM; + this.codeP = codeP; + this.quantità = quantità; + magazino=null; + prodotto=null; + } + + + + + + // GET&&SET + public String getCodeM() { + return codeM; + } + + public void setCodeM(String codeM) { + this.codeM = codeM; + } + + public String getCodeP() { + return codeP; + } + + public void setCodeP(String codeP) { + this.codeP = codeP; + } + + public int getQuantità() { + return quantità; + } + + public void setQuantità(int quantità) { + this.quantità = quantità; + } + + public Magazzino getMagazzino(){ + return magazino; + } + + public void setMagazzino(Magazzino m){ + this.magazino=m; + } + + public Prodotto getProdotto(){ + return prodotto; + } + + public void setProdotto(Prodotto p){ + this.prodotto=p; + } + + + + + // I/O + + public static Giacenza read(Scanner sc){ + String codeM, codeP; + int quantità; + + if(!sc.hasNextLine()) return null; + codeM=sc.nextLine(); + if(!sc.hasNextLine()) return null; + codeP=sc.nextLine(); + if(!sc.hasNextLine()) return null; + quantità=Integer.parseInt(sc.nextLine()); + + return new Giacenza(codeM, codeP, quantità); + } + + public void print(PrintStream ps){ + ps.println(codeM); + ps.println(codeP); + ps.println(quantità); + } + + public String toString(){ + return codeM+" "+codeP+" "+quantità; + } + + private String codeM; + private String codeP; + private int quantità; + private Magazzino magazino; + private Prodotto prodotto; +} diff --git a/src/Temi d'esame/Prova 12-01/Magazzino.class b/src/Temi d'esame/Prova 12-01/Magazzino.class new file mode 100644 index 0000000..9e26010 Binary files /dev/null and b/src/Temi d'esame/Prova 12-01/Magazzino.class differ diff --git a/src/Temi d'esame/Prova 12-01/Magazzino.java b/src/Temi d'esame/Prova 12-01/Magazzino.java new file mode 100644 index 0000000..50f8b73 --- /dev/null +++ b/src/Temi d'esame/Prova 12-01/Magazzino.java @@ -0,0 +1,126 @@ +import java.util.Scanner; +import java.util.LinkedList; +import java.io.PrintStream; + +public class Magazzino { + + public Magazzino(String codeM, String indirizzo, String città, String nazione, String telefono, String fax) { + this.codeM = codeM; + this.indirizzo = indirizzo; + this.città = città; + this.nazione = nazione; + this.telefono = telefono; + this.fax = fax; + giacenze=new LinkedList(); + prodotti=new LinkedList(); + } + + public Magazzino() { + this.codeM = "DEF"; + giacenze=new LinkedList(); + prodotti=new LinkedList(); + } + + public String getCodeM() { + return codeM; + } + + public void setCodeM(String codeM) { + this.codeM = codeM; + } + + public String getTelefono() { + return telefono; + } + + public void setTelefono(String telefono) { + this.telefono = telefono; + } + + public String getFax() { + return fax; + } + + public void setFax(String fax) { + this.fax = fax; + } + + public String getIndirizzo() { + return indirizzo; + } + + public String getCittà() { + return città; + } + + public String getNazione() { + return nazione; + } + + public LinkedList getGiacenze(){ + return giacenze; + } + + public void addGiacenza(Giacenza g){ + giacenze.add(g); + } + + public LinkedList getProdotti(){ + return prodotti; + } + + public void addProdotto(Prodotto p){ + prodotti.add(p); + } + + public static Magazzino read(Scanner sc){ + String codeM, indirizzo, città, nazione, telefono, fax; + + if(!sc.hasNext()) return null; + codeM=sc.nextLine(); + if(!sc.hasNext()) return null; + indirizzo=sc.nextLine(); + if(!sc.hasNext()) return null; + città=sc.nextLine(); + if(!sc.hasNext()) return null; + nazione=sc.nextLine(); + if(!sc.hasNext()) return null; + telefono=sc.nextLine(); + if(!sc.hasNext()) return null; + fax=sc.nextLine(); + + return new Magazzino(codeM, indirizzo, città, nazione, telefono, fax); + } + + public void print(PrintStream ps){ + ps.println(codeM); + ps.println(indirizzo); + ps.println(città); + ps.println(nazione); + ps.println(telefono); + ps.println(fax); + } + + public void printGiacenze(PrintStream ps){ + for(Giacenza g: giacenze) + ps.println(g.toString()); + } + + public void printProdotti(PrintStream ps){ + for(Prodotto p: prodotti) + ps.println(p.toString()); + } + + public String toString(){ + return codeM+" "+indirizzo+" "+città+" "+nazione; + } + + private String codeM; + private String indirizzo; + private String città; + private String nazione; + private String telefono; + private String fax; + private LinkedList giacenze; + private LinkedList prodotti; +} diff --git a/src/Temi d'esame/Prova 12-01/MagazzinoNonTrovato.class b/src/Temi d'esame/Prova 12-01/MagazzinoNonTrovato.class new file mode 100644 index 0000000..2bfd08d Binary files /dev/null and b/src/Temi d'esame/Prova 12-01/MagazzinoNonTrovato.class differ diff --git a/src/Temi d'esame/Prova 12-01/MagazzinoNonTrovato.java b/src/Temi d'esame/Prova 12-01/MagazzinoNonTrovato.java new file mode 100644 index 0000000..0339bd3 --- /dev/null +++ b/src/Temi d'esame/Prova 12-01/MagazzinoNonTrovato.java @@ -0,0 +1,5 @@ +public class MagazzinoNonTrovato extends RuntimeException{ + public MagazzinoNonTrovato(String msg){ + super(msg); + } +} \ No newline at end of file diff --git a/src/Temi d'esame/Prova 12-01/Prodotto.class b/src/Temi d'esame/Prova 12-01/Prodotto.class new file mode 100644 index 0000000..5071a62 Binary files /dev/null and b/src/Temi d'esame/Prova 12-01/Prodotto.class differ diff --git a/src/Temi d'esame/Prova 12-01/Prodotto.java b/src/Temi d'esame/Prova 12-01/Prodotto.java new file mode 100644 index 0000000..023a1db --- /dev/null +++ b/src/Temi d'esame/Prova 12-01/Prodotto.java @@ -0,0 +1,90 @@ +import java.util.Scanner; +import java.util.LinkedList; +import java.io.PrintStream; + +public class Prodotto { + + public Prodotto(String codeP, String descrizione, double prezzo) { + this.codeP = codeP; + this.descrizione = descrizione; + this.prezzo = prezzo; + giacenze=new LinkedList(); + magazzini=new LinkedList(); + } + + public String getCodeP() { + return codeP; + } + + public void setCodeP(String codeP) { + this.codeP = codeP; + } + + public double getPrezzo() { + return prezzo; + } + + public void setPrezzo(double prezzo) { + this.prezzo = prezzo; + } + + public String getDescrizione() { + return descrizione; + } + + public LinkedList getGiacenze(){ + return giacenze; + } + + public void addGiacenza(Giacenza g){ + giacenze.add(g); + } + + public LinkedList getMagazzini(){ + return magazzini; + } + + public void addMagazzino(Magazzino m){ + magazzini.add(m); + } + + public static Prodotto read(Scanner sc){ + String codeP, descrizione; + double prezzo; + + if(!sc.hasNext()) return null; + codeP=sc.nextLine(); + if(!sc.hasNext()) return null; + descrizione=sc.nextLine(); + if(!sc.hasNext()) return null; + prezzo=Double.parseDouble(sc.nextLine()); + + return new Prodotto(codeP, descrizione, prezzo); + } + + public void print(PrintStream ps){ + ps.println(codeP); + ps.println(descrizione); + ps.println(prezzo); + } + + public void printGiacenze(PrintStream ps){ + for(Giacenza g: giacenze) + ps.println(g.toString()); + } + + public void printMagzzini(PrintStream ps){ + for(Magazzino m: magazzini) + ps.println(m.toString()); + } + + public String toString(){ + return codeP+" "+descrizione+" "+prezzo; + } + + private String codeP; + private String descrizione; + private double prezzo; + private LinkedList giacenze; + private LinkedList magazzini; +} diff --git a/src/Temi d'esame/Prova 12-01/ProdottoNonTrovato.class b/src/Temi d'esame/Prova 12-01/ProdottoNonTrovato.class new file mode 100644 index 0000000..42a652a Binary files /dev/null and b/src/Temi d'esame/Prova 12-01/ProdottoNonTrovato.class differ diff --git a/src/Temi d'esame/Prova 12-01/ProdottoNonTrovato.java b/src/Temi d'esame/Prova 12-01/ProdottoNonTrovato.java new file mode 100644 index 0000000..3118ccb --- /dev/null +++ b/src/Temi d'esame/Prova 12-01/ProdottoNonTrovato.java @@ -0,0 +1,5 @@ +public class ProdottoNonTrovato extends RuntimeException{ + public ProdottoNonTrovato(String msg){ + super(msg); + } +} \ No newline at end of file diff --git a/src/Temi d'esame/Prova 12-01/Store.class b/src/Temi d'esame/Prova 12-01/Store.class new file mode 100644 index 0000000..1c2a0de Binary files /dev/null and b/src/Temi d'esame/Prova 12-01/Store.class differ diff --git a/src/Temi d'esame/Prova 12-01/Store.java b/src/Temi d'esame/Prova 12-01/Store.java new file mode 100644 index 0000000..dfe30de --- /dev/null +++ b/src/Temi d'esame/Prova 12-01/Store.java @@ -0,0 +1,116 @@ +import java.util.LinkedList; +import java.util.ListIterator; +import java.util.Scanner; +import java.io.PrintStream; + +public class Store { + + public Store(Scanner scM, Scanner scP, Scanner scG){ + giacenze=new LinkedList(); + prodotti=new LinkedList(); + magazzini=new LinkedList(); + + Magazzino m=Magazzino.read(scM); + while(m!=null){ + magazzini.add(m); + m=Magazzino.read(scM); + } + + Prodotto p=Prodotto.read(scP); + while(p!=null){ + prodotti.add(p); + p=Prodotto.read(scP); + } + + Giacenza g=Giacenza.read(scG); + while(g!=null){ + try{ + m=searchMagazzino(g.getCodeM()); + } + catch(MagazzinoNonTrovato e){ + System.err.println(e.getMessage()); + System.err.println("Impostato a default."); + m=new Magazzino(); + } + try{ + p=searchProdotto(g.getCodeP()); + g.setMagazzino(m); + g.setProdotto(p); + p.addGiacenza(g); + p.addMagazzino(m); + m.addGiacenza(g); + m.addProdotto(p); + giacenze.add(g); + } + catch(ProdottoNonTrovato e){ + System.err.println(e.getMessage()); + System.err.println("Giacenza saltata"); + } + g=Giacenza.read(scG); + } + } + + private Store(LinkedList magazzini, LinkedList prodotti, LinkedList giacenze){ + this.magazzini=magazzini; + this.prodotti=prodotti; + this.giacenze=giacenze; + } + + private Magazzino searchMagazzino(String codeM){ + boolean trovato=false; + ListIterator iter = magazzini.listIterator(); + Magazzino m=null; + while(iter.hasNext() && !trovato){ + m=iter.next(); + if(m.getCodeM().equals(codeM)) + trovato=true; + } + + if(trovato) + return m; + throw new MagazzinoNonTrovato("Il Magazzino con codice: "+codeM+" non è stato trovato"); + } + + private Prodotto searchProdotto(String codeP){ + boolean trovato=false; + ListIterator iter = prodotti.listIterator(); + Prodotto p=null; + while(iter.hasNext() && !trovato){ + p=iter.next(); + if(p.getCodeP().equals(codeP)) + trovato=true; + } + + if(trovato) + return p; + throw new ProdottoNonTrovato("Il Prodotto con codice: "+codeP+" non è stato trovato"); + } + + public Store filtroPrezzoMaggiore(double prezzo){ + LinkedList giacenzeFilter=new LinkedList(); + LinkedList prodottiFilter=new LinkedList(); + LinkedList magazziniFilter=new LinkedList(); + + for(Prodotto p: prodotti) + if(p.getPrezzo()>prezzo){ + prodottiFilter.add(p); + giacenzeFilter.addAll(p.getGiacenze()); + magazziniFilter.addAll(p.getMagazzini()); + } + return new Store(magazziniFilter, prodottiFilter, giacenzeFilter); + } + + public void printReportProdotti(PrintStream ps){ + for(Prodotto p: prodotti){ + ps.println("Descrizione: "+p.getDescrizione()+" Prezzo: "+p.getPrezzo()); + for(Giacenza g: p.getGiacenze()) + ps.println(g.getMagazzino().toString()+" "+g.getQuantità()); + ps.println("*****"); + } + } + + + private LinkedList giacenze; + private LinkedList prodotti; + private LinkedList magazzini; +} diff --git a/src/Temi d'esame/Prova 12-01/Test.class b/src/Temi d'esame/Prova 12-01/Test.class new file mode 100644 index 0000000..89e0f67 Binary files /dev/null and b/src/Temi d'esame/Prova 12-01/Test.class differ diff --git a/src/Temi d'esame/Prova 12-01/Test.java b/src/Temi d'esame/Prova 12-01/Test.java new file mode 100644 index 0000000..051ba33 --- /dev/null +++ b/src/Temi d'esame/Prova 12-01/Test.java @@ -0,0 +1,20 @@ +import java.io.File; +import java.io.FileNotFoundException; +import java.util.Scanner; + +public class Test{ + public static void main(String [] args){ + Scanner scM=null, scP=null, scG=null; + try{ + scM=new Scanner(new File("magazzini.dat")); + scP=new Scanner(new File("prodotti.dat")); + scG=new Scanner(new File("giacenze.dat")); + } + catch(FileNotFoundException e){ + System.err.println("Uno dei file non esiste"); + System.exit(1); + } + Store store=new Store(scM, scP, scG); + store.filtroPrezzoMaggiore(15).printReportProdotti(System.out); + } +} \ No newline at end of file diff --git a/src/Temi d'esame/Prova 12-01/giacenze.dat b/src/Temi d'esame/Prova 12-01/giacenze.dat new file mode 100644 index 0000000..149b062 --- /dev/null +++ b/src/Temi d'esame/Prova 12-01/giacenze.dat @@ -0,0 +1,28 @@ +MG01 +PR01 +50 +MG01 +PR02 +20 +MG01 +PR05 +60 +MG02 +PR01 +20 +MG02 +PR03 +30 +MG02 +PR04 +20 +MG02 +PR05 +40 +MG03 +PR03 +30 +MG03 +PR05 +40 + diff --git a/src/Temi d'esame/Prova 12-01/magazzini.dat b/src/Temi d'esame/Prova 12-01/magazzini.dat new file mode 100644 index 0000000..452c55a --- /dev/null +++ b/src/Temi d'esame/Prova 12-01/magazzini.dat @@ -0,0 +1,18 @@ +MG01 +via delle rose +Benevento +Italia +123456 +123456 +MG02 +via Traiano +Benevento +Italia +1234567 +1234567 +MG03 +Via Traiano +Roma +Italia +12345678 +12345678 \ No newline at end of file diff --git a/src/Temi d'esame/Prova 12-01/prodotti.dat b/src/Temi d'esame/Prova 12-01/prodotti.dat new file mode 100644 index 0000000..7500003 --- /dev/null +++ b/src/Temi d'esame/Prova 12-01/prodotti.dat @@ -0,0 +1,16 @@ +PR01 +Scarpe da calcio +23.90 +PR02 +Scarpe da tennis +45.95 +PR03 +Pallone da basket +25 +PR04 +Pallina da tennis +4.99 +PR05 +trx +20 +