diff --git a/src/AziendaExtends/Azienda.java b/src/AziendaExtends/Azienda.java index ed57599..cd317e2 100644 --- a/src/AziendaExtends/Azienda.java +++ b/src/AziendaExtends/Azienda.java @@ -4,29 +4,19 @@ import java.util.ArrayList; public class Azienda{ - public Azienda(Scanner scDipendenti, Scanner scPresenze) throws Exception{ - ArrayList presenze = new ArrayList(); + public Azienda(Scanner scDipendenti) throws Exception{ dipendenti = new ArrayList(); - - Presenze pres=Presenze.read(scPresenze); - while(pres!=null){ - presenze.add(pres); - pres=Presenze.read(scPresenze); - } - Dipendente dip=read(scDipendenti); while(dip!=null){ - for(Presenze p: presenze) - if(dip.getCodiceFiscale().equals(p.getCodiceFiscale())){ - dip.setOreLavoro(p.getOreLavoro()); - break;//non è molto ortodosso - } - dipendenti.add(dip); dip=read(scDipendenti); } } + private Azienda(ArrayList dipendenti){ + this.dipendenti=dipendenti; + } + private Dipendente read(Scanner sc) throws Exception{ String id; @@ -34,13 +24,65 @@ public class Azienda{ id=sc.next(); if(id.equals("OP")) return Operaio.read(sc); - else + else if(id.equals("DIR")) return Dirigente.read(sc); + else + return null; + } + + public void calcolaPrint(Scanner scPresenze, PrintStream ps) throws Exception{ + Dipendente dip; + Presenze pres = Presenze.read(scPresenze); + + while(pres!=null){ + dip=ricercaDipendentePerCodice(pres.getCodiceFiscale()); + if(dip!=null){ + double paga=dip.calcoloPaga(pres.getOreLavoro()); + dip.print(ps); + ps.println("paga mensile: "+paga); + } + pres=Presenze.read(scPresenze); + } + } + + public Dipendente ricercaDipendentePerCodice(String codiceFiscale){ + boolean trovato=false; + int i=0; + while(i dipendentiFilter = new ArrayList(); + + for(Dipendente dip: this.dipendenti) + if(dip.getCnome().equals(cnome)) + dipendentiFilter.add(dip); + + return new Azienda(dipendentiFilter); + } + + public Azienda filtroOP(){ + ArrayList dipendentiFilter = new ArrayList(); + + for(Dipendente dip: this.dipendenti) + if(dip instanceof Operaio) + dipendentiFilter.add(dip); + + return new Azienda(dipendentiFilter); } public void print(PrintStream ps){ for(Dipendente dip: dipendenti) - ps.println(dip.getCodiceFiscale()+" "+dip.getNome()+" "+dip.getCnome()+" "+dip.calcoloPaga()); + dip.print(ps); } private ArrayList dipendenti; diff --git a/src/AziendaExtends/Dipendente.java b/src/AziendaExtends/Dipendente.java index 9ef8219..d108c23 100644 --- a/src/AziendaExtends/Dipendente.java +++ b/src/AziendaExtends/Dipendente.java @@ -1,7 +1,7 @@ import java.util.Scanner; import java.io.PrintStream; -public class Dipendente{ +public abstract class Dipendente{ public Dipendente(String codiceFiscale, String nome, String cnome, double paga){ @@ -9,13 +9,9 @@ public class Dipendente{ this.nome=nome; this.cnome=cnome; this.paga=paga; - this.oreLavoro=0; - } - - public double calcoloPaga(){ - return oreLavoro*getPaga(); } + public abstract double calcoloPaga(int oreLavoro); //METODI GET public String getCodiceFiscale(){ @@ -34,13 +30,6 @@ public class Dipendente{ return paga; } - public int getOreLavoro(){ - return oreLavoro; - } - - public void setOreLavoro(int ore){ - oreLavoro=ore; - } @@ -50,13 +39,8 @@ public class Dipendente{ return codiceFiscale+" "+nome+" "+cnome+" "+paga; } - public void print(PrintStream ps){ - ps.println(codiceFiscale); - ps.println(nome); - ps.println(cnome); - ps.println(paga); - } - + public abstract void print(PrintStream ps); +/* public static Dipendente read(Scanner sc) throws Exception{ String codiceFiscale, nome, cnome; double paga; @@ -71,13 +55,12 @@ public class Dipendente{ paga=sc.nextDouble(); return new Dipendente(codiceFiscale, nome, cnome, paga); - } + }*/ - private String codiceFiscale; - private String nome; - private String cnome; - private double paga; - private int oreLavoro; + protected String codiceFiscale; + protected String nome; + protected String cnome; + protected double paga; } diff --git a/src/AziendaExtends/Dirigente.java b/src/AziendaExtends/Dirigente.java index bf08e92..540aa87 100644 --- a/src/AziendaExtends/Dirigente.java +++ b/src/AziendaExtends/Dirigente.java @@ -9,8 +9,11 @@ public class Dirigente extends Dipendente{ } public void print(PrintStream ps){ - super.print(ps); - ps.println(areaResponsabilità); + ps.print(getCodiceFiscale()+" "); + ps.print(getNome()+" "); + ps.print(getCnome()+" "); + ps.print(areaResponsabilità+" "); + ps.println(getPaga()); } public static Dirigente read(Scanner sc) throws Exception{ @@ -30,5 +33,13 @@ public class Dirigente extends Dipendente{ return new Dirigente(codiceFiscale, nome, cnome, paga, areaResponsabilità); } + public String getAreaResponsabilità(){ + return areaResponsabilità; + } + + public double calcoloPaga(int oreLavoro){ + return oreLavoro*getPaga(); + } + private String areaResponsabilità; } \ No newline at end of file diff --git a/src/AziendaExtends/Operaio.java b/src/AziendaExtends/Operaio.java index a9759ea..9f31956 100644 --- a/src/AziendaExtends/Operaio.java +++ b/src/AziendaExtends/Operaio.java @@ -10,21 +10,23 @@ public class Operaio extends Dipendente{ } public void print(PrintStream ps){ - super.print(ps); - ps.println(funzione); - ps.println(livello); + ps.print(getCodiceFiscale()+" "); + ps.print(getNome()+" "); + ps.print(getCnome()+" "); + ps.print(funzione+" "); + ps.print(livello+" "); + ps.println(getPaga()); } public String toString(){ return super.toString()+" "+funzione+" "+livello; } - public double calcoloPaga(){ - int oreLavoro=super.getOreLavoro(); + public double calcoloPaga(int oreLavoro){ if(oreLavoro>165) return ((oreLavoro-165)*0.3+165)*super.getPaga(); else - return super.calcoloPaga(); + return oreLavoro*getPaga(); } public static Operaio read(Scanner sc) throws Exception{ @@ -47,6 +49,14 @@ public class Operaio extends Dipendente{ return new Operaio(codiceFiscale, nome, cnome, paga, funzione, livello); } + public String getLivello(){ + return livello; + } + + public String getFunzione(){ + return funzione; + } + private String livello; private String funzione; } \ No newline at end of file diff --git a/src/AziendaExtends/Test.java b/src/AziendaExtends/Test.java index fb79c6b..c5490b8 100644 --- a/src/AziendaExtends/Test.java +++ b/src/AziendaExtends/Test.java @@ -5,7 +5,11 @@ public class Test{ public static void main(String [] args) throws Exception{ Scanner scDipendenti = new Scanner(new File("dipendenti.dat")); Scanner scOreLavoro = new Scanner(new File("presenze.dat")); - Azienda azienda = new Azienda(scDipendenti, scOreLavoro); - azienda.print(System.out); + Azienda azienda = new Azienda(scDipendenti); + azienda.calcolaPrint(scOreLavoro, System.out); + System.out.println("******"); + scOreLavoro = new Scanner(new File("presenze.dat")); + Azienda az1= azienda.filtroOP(); + az1.calcolaPrint(scOreLavoro, System.out); } } \ No newline at end of file