programmazione-java/src/AziendaExtends/Azienda.java

98 lines
2.8 KiB
Java
Raw Normal View History

2016-11-18 18:06:16 +00:00
import java.util.Scanner;
import java.io.PrintStream;
import java.util.ArrayList;
2016-11-27 17:41:28 +00:00
import java.io.IOException;
2016-11-18 18:06:16 +00:00
public class Azienda{
2016-11-21 12:07:30 +00:00
public Azienda(Scanner scDipendenti) throws Exception{
2016-11-18 18:06:16 +00:00
dipendenti = new ArrayList<Dipendente>();
2016-11-19 10:46:30 +00:00
Dipendente dip=read(scDipendenti);
2016-11-18 18:06:16 +00:00
while(dip!=null){
dipendenti.add(dip);
dip=read(scDipendenti);
}
}
2016-11-21 12:07:30 +00:00
private Azienda(ArrayList<Dipendente> dipendenti){
this.dipendenti=dipendenti;
}
2016-11-18 18:06:16 +00:00
private Dipendente read(Scanner sc) throws Exception{
String id;
2016-11-28 19:14:54 +00:00
if(!sc.hasNext()) return null;
id=sc.next();
if(id.equals("OP"))
return Operaio.read(sc);
else if(id.equals("DIR"))
return Dirigente.read(sc);
else{
sc.nextLine();
return read(sc);
2016-11-27 17:41:28 +00:00
}
2016-11-21 12:07:30 +00:00
}
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){
2016-11-27 17:41:28 +00:00
try{
double paga=dip.calcoloPaga(pres.getOreLavoro());
if(paga<=0) throw new IOException("Dipendente lavativo");
dip.print(ps);
ps.println("paga mensile: "+paga);
}
catch(IOException Exception){
System.err.println("Il dipendente "+dip.getNome()+" "+dip.getCnome()+" non ha svolto il suo lavoro");
}
2016-11-21 12:07:30 +00:00
}
pres=Presenze.read(scPresenze);
}
}
public Dipendente ricercaDipendentePerCodice(String codiceFiscale){
boolean trovato=false;
int i=0;
while(i<dipendenti.size() && !trovato){
if(dipendenti.get(i).getCodiceFiscale().equals(codiceFiscale)){
trovato=true;
}else
i++;
}
if(trovato)
return dipendenti.get(i);
return null;
}
public Azienda filtroCnome(String cnome){
ArrayList<Dipendente> dipendentiFilter = new ArrayList<Dipendente>();
for(Dipendente dip: this.dipendenti)
if(dip.getCnome().equals(cnome))
dipendentiFilter.add(dip);
return new Azienda(dipendentiFilter);
}
public Azienda filtroOP(){
ArrayList<Dipendente> dipendentiFilter = new ArrayList<Dipendente>();
for(Dipendente dip: this.dipendenti)
if(dip instanceof Operaio)
dipendentiFilter.add(dip);
return new Azienda(dipendentiFilter);
2016-11-18 18:06:16 +00:00
}
public void print(PrintStream ps){
for(Dipendente dip: dipendenti)
2016-11-21 12:07:30 +00:00
dip.print(ps);
2016-11-18 18:06:16 +00:00
}
private ArrayList<Dipendente> dipendenti;
}