diff --git a/src/Azienda/Azienda.java b/src/Azienda/Azienda.java index c0f3253..11c5953 100644 --- a/src/Azienda/Azienda.java +++ b/src/Azienda/Azienda.java @@ -2,9 +2,15 @@ import java.util.ArrayList; import java.util.Scanner; import java.io.PrintStream; import java.io.File; +import java.util.Date; +import java.text.SimpleDateFormat; public class Azienda{ + + + //COSTRUTTORI + public Azienda(String srcSedi, String srcImpiegati) throws Exception{ sedi = new ArrayList(); ArrayList impiegati = new ArrayList(); @@ -33,6 +39,12 @@ public class Azienda{ this.sedi=sedi; } + + + + + //I/O + public void print(PrintStream ps){ ps.println("*****"); for(Sede s: sedi){ @@ -44,6 +56,12 @@ public class Azienda{ } } + + + + + //FILTRI SEDI + public Azienda filtroSedeId(String id){ boolean trovato = false; int j=0; @@ -61,6 +79,46 @@ public class Azienda{ return new Azienda(sediFilter); } + public Azienda filtroStato(String stato){ + boolean trovato = false; + int j=0; + ArrayList sediFilter = new ArrayList(); + + for(Sede s: sedi) + if(s.getStato().equals(stato)) + sediFilter.add(s); + + return new Azienda(sediFilter); + } + + + + + + //FILTRI DIPENDENTI + + public Azienda filtroLivello(String livello){ + ArrayList sediFilter = new ArrayList(); + ArrayList impiegatiFilter; + boolean almenoUno; + + for(Sede s: sedi){ + almenoUno=false; + impiegatiFilter=new ArrayList(); + for(Impiegato i: s.getImpiegati()){ + if(i.getLivello().equals(livello)){ + impiegatiFilter.add(i); + almenoUno=true; + } + + } + if(almenoUno) + sediFilter.add(s.copySede(impiegatiFilter)); + + } + return new Azienda(sediFilter); + } + public Azienda filtroNome(String nome){ ArrayList sediFilter = new ArrayList(); ArrayList impiegatiFilter; @@ -83,5 +141,98 @@ public class Azienda{ return new Azienda(sediFilter); } + public Azienda filtroPagaMaggiore(double paga){ + ArrayList sediFilter = new ArrayList(); + ArrayList impiegatiFilter; + boolean almenoUno; + + for(Sede s: sedi){ + almenoUno=false; + impiegatiFilter=new ArrayList(); + for(Impiegato i: s.getImpiegati()){ + if(i.getPaga()>=paga){ + impiegatiFilter.add(i); + almenoUno=true; + } + + } + if(almenoUno) + sediFilter.add(s.copySede(impiegatiFilter)); + + } + return new Azienda(sediFilter); + } + + public Azienda filtroPagaMinore(double paga){ + ArrayList sediFilter = new ArrayList(); + ArrayList impiegatiFilter; + boolean almenoUno; + + for(Sede s: sedi){ + almenoUno=false; + impiegatiFilter=new ArrayList(); + for(Impiegato i: s.getImpiegati()){ + if(i.getPaga() sediFilter = new ArrayList(); + ArrayList impiegatiFilter; + boolean almenoUno; + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); + Date data = sdf.parse(dataString); + + for(Sede s: sedi){ + almenoUno=false; + impiegatiFilter=new ArrayList(); + for(Impiegato i: s.getImpiegati()){ + if(i.getData().before(data)){ + impiegatiFilter.add(i); + almenoUno=true; + } + + } + if(almenoUno) + sediFilter.add(s.copySede(impiegatiFilter)); + + } + return new Azienda(sediFilter); + } + + public Azienda filtroNatoDopo(String dataString) throws Exception{ + ArrayList sediFilter = new ArrayList(); + ArrayList impiegatiFilter; + boolean almenoUno; + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); + Date data = sdf.parse(dataString); + + for(Sede s: sedi){ + almenoUno=false; + impiegatiFilter=new ArrayList(); + for(Impiegato i: s.getImpiegati()){ + + if(i.getData().after(data)){ + impiegatiFilter.add(i); + almenoUno=true; + } + + } + if(almenoUno) + sediFilter.add(s.copySede(impiegatiFilter)); + + } + return new Azienda(sediFilter); + } + private ArrayList sedi; } diff --git a/src/Azienda/Impiegato.java b/src/Azienda/Impiegato.java index e71ecaa..a907a42 100644 --- a/src/Azienda/Impiegato.java +++ b/src/Azienda/Impiegato.java @@ -58,7 +58,7 @@ public class Impiegato{ public String toString(){ SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); - return codiceFiscale+" "+nome+" "+cnome+" "+sdf.format(data)+" "+livello+" "+paga+"€."; + return codiceFiscale+" "+nome+" "+cnome+" "+sdf.format(data)+" "+livello+" "+paga+"."; } public void print(PrintStream ps){ diff --git a/src/Azienda/Personale.dati b/src/Azienda/Personale.dati index b9028f5..19d5755 100644 --- a/src/Azienda/Personale.dati +++ b/src/Azienda/Personale.dati @@ -1,3 +1,10 @@ -codice1 nome1 cognome1 sedeid1 livello1 89 12/01/1990 -codice2 nome cognome2 sedeid2 livello2 90 13/02/1222 -codice3 nome cognome3 sedeid1 livello3 91 14/01/1234 +GFYDFG67J15A789M Paperino Duck PP01 Base 12000 12/01/1970 +GDRSFG67B12Y456Y Pippo Goofy TP01 Base 12000 13/02/1972 +HJKDTF34G11G134G Topolino Mouse TP01 Boss 60000 14/01/1974 +GFHHHH56U77U894G Pluto Pluto TP01 Base 12000 14/08/1976 +GSDHBG12H34H765F Eta Beta TP01 ET 100000 03/07/1276 +MFGTYG12F44H897Y Qui Duck PP01 Esperto 22000 15/09/1999 +MGRFGH16J0JU908M Quo Duck PP02 Esperto 22000 15/09/1999 +GSDHBG12H34H765F Qua Duck PP01 Esperto 22000 15/09/1999 +XDDHBG12Y84H767J Paperino Fauntleroy PP02 Pro 33000 12/01/1970 +GSDTGB12H31E764Y Goku Son IG01 Over9000 100000 05/03/1988 diff --git a/src/Azienda/Sedi.dati b/src/Azienda/Sedi.dati index 8765c2d..4782d67 100644 --- a/src/Azienda/Sedi.dati +++ b/src/Azienda/Sedi.dati @@ -1,8 +1,16 @@ -sedeid1 -via delle streghe -Benevento -ita -sedeid2 -via a caso -Milano -ita +TP01 +Via del Papero +Topolinia +US +PP01 +Via del Topo +Paperopoli +US +PP02 +Via del Gatto +Paperopoli +US +IG01 +Isola Del Genio +Isola Del Genio +Isola Del Genio diff --git a/src/Azienda/Test.java b/src/Azienda/Test.java index 47768f4..d0493a8 100644 --- a/src/Azienda/Test.java +++ b/src/Azienda/Test.java @@ -1,10 +1,20 @@ -import java.util.Scanner; +import java.io.PrintStream; public class Test{ public static void main(String [] args) throws Exception{ - Azienda azienda1 = new Azienda("Sedi.dati", "Personale.dati"); - //azienda1.print(System.out); - //azienda1.filtroSedeId("sedeid2").print(System.out); - azienda1.filtroNome("nome").print(System.out); + Azienda azienda = new Azienda("Sedi.dati", "Personale.dati"); + PrintStream ps = System.out; + + ps.println("Stampa degli impiegati in US con paga minore di 20000"); + azienda.filtroStato("US").filtroPagaMinore(20000).print(ps); + + ps.println("Stampa degli impiegati con paga compresa tra 50000 e 80000"); + azienda.filtroPagaMinore(80000).filtroPagaMaggiore(50000).print(ps); + + ps.println("Stampa degli ilmpiegati nella sede PP01 nati dopo il 1990"); + azienda.filtroNatoDopo("31/12/1989").filtroSedeId("PP01").print(ps); + + ps.println("Stampa degli impiegati di livello over9000"); + azienda.filtroLivello("Over9000").print(ps); } }