Azienda implementazione base

This commit is contained in:
Orange_Dugongo 2016-11-03 11:21:06 +01:00
parent 9bf839d2af
commit ea9373bad1
6 changed files with 288 additions and 0 deletions

87
src/Azienda/Azienda.java Normal file
View File

@ -0,0 +1,87 @@
import java.util.ArrayList;
import java.util.Scanner;
import java.io.PrintStream;
import java.io.File;
public class Azienda{
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;
}
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());
}
}
public Azienda filtroSedeId(String id){
boolean trovato = false;
int j=0;
ArrayList<Sede> sediFilter = new ArrayList<Sede>();
while(j<sedi.size() && !trovato){
if(sedi.get(j).getId().equals(id))
trovato = true;
j++;
}
if(!trovato) return null;
sediFilter.add(sedi.get(j-1));
return new Azienda(sediFilter);
}
public Azienda filtroNome(String nome){
ArrayList<Sede> sediFilter = new ArrayList<Sede>();
ArrayList<Impiegato> impiegatiFilter;
boolean almenoUno;
for(Sede s: sedi){
almenoUno=false;
impiegatiFilter=new ArrayList<Impiegato>();
for(Impiegato i: s.getImpiegati()){
if(i.getNome().equals(nome)){
impiegatiFilter.add(i);
almenoUno=true;
}
}
if(almenoUno)
sediFilter.add(s.copySede(impiegatiFilter));
}
return new Azienda(sediFilter);
}
private ArrayList<Sede> sedi;
}

108
src/Azienda/Impiegato.java Normal file
View File

@ -0,0 +1,108 @@
import java.util.Date;
import java.util.Scanner;
import java.io.PrintStream;
import java.text.SimpleDateFormat;
public class Impiegato{
public Impiegato(String codiceFiscale, String nome, String cnome, String sedeId, String livello, double paga, Date data){
this.codiceFiscale=codiceFiscale;
this.nome=nome;
this.cnome=cnome;
this.sedeId=sedeId;
this.livello=livello;
this.paga=paga;
this.data=data;
}
public String getCodiceFiscale(){
return codiceFiscale;
}
public String getNome(){
return nome;
}
public String getCnome(){
return cnome;
}
public String getSedeId(){
return sedeId;
}
public String getLivello(){
return livello;
}
public Date getData(){
return data;
}
public double getPaga(){
return paga;
}
public void setPaga(double newPaga){
paga=newPaga;
}
public void setLivello(String newLivello){
livello=newLivello;
}
public void setSedeId(String newSedeId){
sedeId=newSedeId;
}
public String toString(){
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
return codiceFiscale+" "+nome+" "+cnome+" "+sdf.format(data)+" "+livello+" "+paga+"€.";
}
public void print(PrintStream ps){
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
ps.println(codiceFiscale);
ps.println(nome);
ps.println(cnome);
ps.println(sedeId);
ps.println(livello);
ps.println(paga);
ps.println(sdf.format(data));
}
public static Impiegato read(Scanner sc) throws Exception{
String codiceFiscale, nome, cnome, sedeId, livello;
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date data;
double paga;
if(!sc.hasNext()) return null;
codiceFiscale=sc.next();
if(!sc.hasNext()) return null;
nome=sc.next();
if(!sc.hasNext()) return null;
cnome=sc.next();
if(!sc.hasNext()) return null;
sedeId=sc.next();
if(!sc.hasNext()) return null;
livello=sc.next();
if(!sc.hasNextDouble()) return null;
paga=sc.nextDouble();
if(!sc.hasNextLine()) return null;
data = sdf.parse(sc.next());
return new Impiegato(codiceFiscale, nome, cnome, sedeId, livello, paga, data);
}
private String codiceFiscale;
private String nome;
private String cnome;
private Date data;
private String livello;
private double paga;
private String sedeId;
}

View File

@ -0,0 +1,3 @@
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

72
src/Azienda/Sede.java Normal file
View File

@ -0,0 +1,72 @@
import java.io.PrintStream;
import java.util.Scanner;
import java.util.ArrayList;
public class Sede{
public Sede(String id, String via, String comune, String stato){
this.id=id;
this.via=via;
this.comune=comune;
this.stato=stato;
impiegati = new ArrayList<Impiegato>();
}
public String getId(){
return id;
}
public String getVia(){
return via;
}
public String getComune(){
return comune;
}
public String getStato(){
return stato;
}
public ArrayList<Impiegato> getImpiegati(){
return impiegati;
}
public Sede copySede(ArrayList<Impiegato> impiegati){
Sede sede = new Sede(getId(), getVia(), getComune(), getStato());
sede.impiegati=impiegati;
return sede;
}
public String toString(){
return id + " " + via + " " + comune + " " + stato + ".";
}
public void print(PrintStream ps){
ps.println(id);
ps.println(via);
ps.println(comune);
ps.println(stato);
}
public static Sede read(Scanner sc){
String id, via, comune, stato;
if(!sc.hasNextLine()) return null;
id=sc.nextLine();
if(!sc.hasNextLine()) return null;
via=sc.nextLine();
if(!sc.hasNextLine()) return null;
comune=sc.nextLine();
if(!sc.hasNextLine()) return null;
stato=sc.nextLine();
return new Sede(id, via, comune, stato);
}
private String id;
private String via;
private String comune;
private String stato;
private ArrayList<Impiegato> impiegati;
}

8
src/Azienda/Sedi.dati Normal file
View File

@ -0,0 +1,8 @@
sedeid1
via delle streghe
Benevento
ita
sedeid2
via a caso
Milano
ita

10
src/Azienda/Test.java Normal file
View File

@ -0,0 +1,10 @@
import java.util.Scanner;
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);
}
}