programmazione-java/src/Azienda/Azienda.java

205 lines
5.5 KiB
Java

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<Sede>();
ArrayList<Impiegato> impiegati = new ArrayList<Impiegato>();
Scanner scSedi = new Scanner(new File(srcSedi));
Scanner scImpiegati = new Scanner(new File(srcImpiegati));
Impiegato i = Impiegato.read(scImpiegati);
while(i!=null){
impiegati.add(i);
i = Impiegato.read(scImpiegati);
}
Sede s = Sede.read(scSedi);
while(s!=null){
for(Impiegato imp: impiegati){
if(s.getId().equals(imp.getSedeId()))
s.getImpiegati().add(imp);
imp=Impiegato.read(scImpiegati);
}
sedi.add(s);
s=Sede.read(scSedi);
}
}
private Azienda(ArrayList<Sede> sedi){
this.sedi=sedi;
}
//I/O
public void print(PrintStream ps){
ps.println("*****");
for(Sede s: sedi){
ps.println("SEDE:");
s.print(ps);
ps.println(" IMPIEGATI:");
for(Impiegato i: s.getImpiegati())
ps.println(" *"+i.toString());
}
}
//FILTRI SEDI
public Azienda filtroSedeId(String id){
boolean trovato = false;
int i=0;
ArrayList<Sede> sediFilter = new ArrayList<Sede>();
while(i<sedi.size() && !trovato){
if(sedi.get(i).getId().equals(id)) trovato = true;
else i++;
}
if(!trovato) return null;
sediFilter.add(sedi.get(i));
return new Azienda(sediFilter);
}
public Azienda filtroStato(String stato){
ArrayList<Sede> sediFilter = new ArrayList<Sede>();
for(Sede s: sedi)
if(s.getStato().equals(stato))
sediFilter.add(s);
return new Azienda(sediFilter);
}
//FILTRI DIPENDENTI
public Azienda filtroLivello(String livello){
ArrayList<Sede> sediFilter = new ArrayList<Sede>();
ArrayList<Impiegato> impiegatiFilter;
for(Sede s: sedi){
impiegatiFilter=new ArrayList<Impiegato>();
for(Impiegato i: s.getImpiegati())
if(i.getLivello().equals(livello))
impiegatiFilter.add(i);
if(impiegatiFilter.size()>0)
sediFilter.add(s.copySede(impiegatiFilter));
}
return new Azienda(sediFilter);
}
public Azienda filtroNome(String nome){
ArrayList<Sede> sediFilter = new ArrayList<Sede>();
ArrayList<Impiegato> impiegatiFilter;
for(Sede s: sedi){
impiegatiFilter=new ArrayList<Impiegato>();
for(Impiegato i: s.getImpiegati())
if(i.getNome().equals(nome))
impiegatiFilter.add(i);
if(impiegatiFilter.size()>0)
sediFilter.add(s.copySede(impiegatiFilter));
}
return new Azienda(sediFilter);
}
public Azienda filtroPagaMaggiore(double paga){
ArrayList<Sede> sediFilter = new ArrayList<Sede>();
ArrayList<Impiegato> impiegatiFilter;
for(Sede s: sedi){
impiegatiFilter=new ArrayList<Impiegato>();
for(Impiegato i: s.getImpiegati())
if(i.getPaga()>=paga)
impiegatiFilter.add(i);
if(impiegatiFilter.size()>0)
sediFilter.add(s.copySede(impiegatiFilter));
}
return new Azienda(sediFilter);
}
public Azienda filtroPagaMinore(double paga){
ArrayList<Sede> sediFilter = new ArrayList<Sede>();
ArrayList<Impiegato> impiegatiFilter;
for(Sede s: sedi){
impiegatiFilter=new ArrayList<Impiegato>();
for(Impiegato i: s.getImpiegati())
if(i.getPaga()<paga)
impiegatiFilter.add(i);
if(impiegatiFilter.size()>0)
sediFilter.add(s.copySede(impiegatiFilter));
}
return new Azienda(sediFilter);
}
public Azienda filtroNatoPrima(String dataString) throws Exception{
ArrayList<Sede> sediFilter = new ArrayList<Sede>();
ArrayList<Impiegato> impiegatiFilter;
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date data = sdf.parse(dataString);
for(Sede s: sedi){
impiegatiFilter=new ArrayList<Impiegato>();
for(Impiegato i: s.getImpiegati())
if(i.getData().before(data))
impiegatiFilter.add(i);
if(impiegatiFilter.size()>0)
sediFilter.add(s.copySede(impiegatiFilter));
}
return new Azienda(sediFilter);
}
public Azienda filtroNatoDopo(String dataString) throws Exception{
ArrayList<Sede> sediFilter = new ArrayList<Sede>();
ArrayList<Impiegato> impiegatiFilter;
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date data = sdf.parse(dataString);
for(Sede s: sedi){
impiegatiFilter=new ArrayList<Impiegato>();
for(Impiegato i: s.getImpiegati())
if(i.getData().after(data))
impiegatiFilter.add(i);
if(impiegatiFilter.size()>0)
sediFilter.add(s.copySede(impiegatiFilter));
}
return new Azienda(sediFilter);
}
private ArrayList<Sede> sedi;
}