diff --git a/src/Temi d'esame/Progetto/Capoprogetto.java b/src/Temi d'esame/Progetto/Capoprogetto.java index 561b622..0171524 100644 --- a/src/Temi d'esame/Progetto/Capoprogetto.java +++ b/src/Temi d'esame/Progetto/Capoprogetto.java @@ -1,6 +1,7 @@ import java.util.ArrayList; import java.util.Scanner; import java.util.Date; +import java.io.PrintStream; import java.text.SimpleDateFormat; import java.text.ParseException; @@ -13,7 +14,7 @@ public class Capoprogetto { this.cognome = cognome; this.data = data; this.progetti = null; - + progetti = new ArrayList(); } public String getMatricola() { @@ -28,7 +29,7 @@ public class Capoprogetto { return cognome; } - public ArrayList getProgetto() { + public ArrayList getProgetti() { return progetti; } @@ -44,6 +45,11 @@ public class Capoprogetto { progetti.add(p); } + public void printProgetti(PrintStream ps){ + for(Progetto p: progetti) + ps.println(" + "+p.toString()); + } + public static Capoprogetto read(Scanner sc){ String matricola, nome, cognome; Date data=null; diff --git a/src/Temi d'esame/Progetto/ImportoNegativo.java b/src/Temi d'esame/Progetto/ImportoNegativo.java new file mode 100644 index 0000000..0a4278a --- /dev/null +++ b/src/Temi d'esame/Progetto/ImportoNegativo.java @@ -0,0 +1,5 @@ +public class ImportoNegativo extends RuntimeException{ + public ImportoNegativo(String msg){ + super(msg); + } +} \ No newline at end of file diff --git a/src/Temi d'esame/Progetto/Prog-2013-05-06.pdf b/src/Temi d'esame/Progetto/Prog-2013-05-06.pdf new file mode 100644 index 0000000..121994f Binary files /dev/null and b/src/Temi d'esame/Progetto/Prog-2013-05-06.pdf differ diff --git a/src/Temi d'esame/Progetto/Progetto.java b/src/Temi d'esame/Progetto/Progetto.java index 9c86eb8..749584d 100644 --- a/src/Temi d'esame/Progetto/Progetto.java +++ b/src/Temi d'esame/Progetto/Progetto.java @@ -60,7 +60,7 @@ public class Progetto { public static Progetto read(Scanner sc){ String id, matricola; Date inizio=null, fine=null; - double importo=10000; + double importo=1000; SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); if(!sc.hasNextLine()) return null; @@ -84,7 +84,21 @@ public class Progetto { fine=new Date(0); } if(!sc.hasNextLine()) return null; - importo = Double.parseDouble(sc.nextLine()); + try{ + importo = Double.parseDouble(sc.nextLine()); + if(importo<0) + throw new ImportoNegativo("L'importo del progetto: "+id+" è negativo."); + } + catch(NumberFormatException e){ + System.err.println("Impossibile leggere correttamente l'importo del progetto: "+id); + System.err.println("Importo impostato a 1000"); + } + catch(ImportoNegativo in){ + System.err.println(in.getMessage()); + System.err.println("Importo inpostato a positivo."); + importo*=-1; + } + return new Progetto(id, matricola, inizio, fine, importo); diff --git a/src/Temi d'esame/Progetto/Segreteria.java b/src/Temi d'esame/Progetto/Segreteria.java index 9bce202..295d143 100644 --- a/src/Temi d'esame/Progetto/Segreteria.java +++ b/src/Temi d'esame/Progetto/Segreteria.java @@ -1,6 +1,7 @@ import java.util.ArrayList; import java.util.Scanner; import java.util.Iterator; +import java.io.PrintStream; public class Segreteria{ @@ -20,6 +21,7 @@ public class Segreteria{ cp=searchCapoprogetto(p.getMatricola()); cp.addProgetto(p); p.setCapoprogetto(cp); + progetti.add(p); } catch(ProgettoNonTrovato e){ System.err.println(e.getMessage()); @@ -28,6 +30,11 @@ public class Segreteria{ } } + private Segreteria(ArrayList progetti, ArrayList capoprogetti){ + this.progetti=progetti; + this.capoprogetti=capoprogetti; + } + private Capoprogetto searchCapoprogetto(String matricola){ Iterator iter = capoprogetti.iterator(); Capoprogetto cp=null; @@ -43,6 +50,44 @@ public class Segreteria{ throw new ProgettoNonTrovato("Il capoprogetto: "+matricola+" non è stato trovato"); } + public Segreteria filtroImportoMaggiore(double importo){ + ArrayList progettiFilter=new ArrayList(); + ArrayList capoprogettiFilter=new ArrayList(); + for(Progetto p: progetti) + if(p.getImporto()>importo){ + progettiFilter.add(p); + capoprogettiFilter.add(p.getCapoprogetto()); + } + return new Segreteria(progettiFilter, capoprogettiFilter); + } + + public Segreteria filtroNomeCapo(String nome){ + ArrayList progettiFilter=new ArrayList(); + ArrayList capoprogettiFilter=new ArrayList(); + for(Capoprogetto cp: capoprogetti) + if(cp.getNome().equals(nome)){ + progettiFilter.addAll(cp.getProgetti()); + capoprogettiFilter.add(cp); + } + return new Segreteria(progettiFilter, capoprogettiFilter); + } + + public void printReportCapi(PrintStream ps){ + for(Capoprogetto cp: capoprogetti){ + ps.println(cp.toString()); + cp.printProgetti(ps); + ps.println("*****"); + } + } + + public void printReportProgetti(PrintStream ps){ + for(Progetto p: progetti){ + ps.println(p.toString()); + ps.println(" + "+p.getCapoprogetto().toString()); + ps.println("*****"); + } + } + private ArrayList progetti; private ArrayList capoprogetti; } \ No newline at end of file diff --git a/src/Temi d'esame/Progetto/Test.java b/src/Temi d'esame/Progetto/Test.java new file mode 100644 index 0000000..5294899 --- /dev/null +++ b/src/Temi d'esame/Progetto/Test.java @@ -0,0 +1,22 @@ +import java.util.Scanner; +import java.io.File; +import java.io.FileNotFoundException; + +public class Test{ + public static void main(String [] args){ + Scanner scCP=null, scP=null; + try{ + scCP=new Scanner(new File("capi.dat")); + scP=new Scanner(new File("progetti.dat")); + } + catch(FileNotFoundException e){ + System.err.println("Uno dei due file non esiste"); + System.exit(0); + } + Segreteria sg1 = new Segreteria(scP, scCP); + sg1=sg1.filtroNomeCapo("Nome1"); + sg1.printReportCapi(System.out); + System.out.println("-------------------"); + sg1.printReportProgetti(System.out); + } +} \ No newline at end of file diff --git a/src/Temi d'esame/Progetto/capi.dat b/src/Temi d'esame/Progetto/capi.dat new file mode 100644 index 0000000..6569909 --- /dev/null +++ b/src/Temi d'esame/Progetto/capi.dat @@ -0,0 +1,16 @@ +MT01 +Pinco +Panco +12/08/1990 +MT02 +Nome +Cognome +03/09/1286 +MT03 +Paperone +De Paperoni +24/11/1943 +MT04 +Nome1 +Cognome1 +08/12/1961 \ No newline at end of file diff --git a/src/Temi d'esame/Progetto/progetti.dat b/src/Temi d'esame/Progetto/progetti.dat new file mode 100644 index 0000000..7013646 --- /dev/null +++ b/src/Temi d'esame/Progetto/progetti.dat @@ -0,0 +1,30 @@ +PG01 +MT03 +20/03/2015 +02/11/2016 +20000 +PG02 +MT01 +04/08/2014 +09/12/2016 +30000 +PG03 +MT03 +23/09/2012 +24/11/2012 +800hj +PG04 +MT02 +23/01/2000 +24/15/2006 +100000 +PG05 +MT04 +04/09/2013 +18/07/2014 +-20000 +PG06 +MT04 +23/09/2015 +06/07/2016 +10000