This commit is contained in:
orange 2017-01-27 16:15:22 +01:00
parent c44cf35969
commit 4f918b14d2
4 changed files with 244 additions and 0 deletions

View File

@ -0,0 +1,81 @@
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.text.ParseException;
public class Capoprogetto {
public Capoprogetto(String matricola, String nome, String cognome, Date data) {
this.matricola = matricola;
this.nome = nome;
this.cognome = cognome;
this.data = data;
this.progetti = null;
}
public String getMatricola() {
return matricola;
}
public String getNome() {
return nome;
}
public String getCognome() {
return cognome;
}
public ArrayList<Progetto> getProgetto() {
return progetti;
}
public void setProgetto(ArrayList<Progetto> progetti) {
this.progetti = progetti;
}
public Date getData() {
return data;
}
public void addProgetto(Progetto p){
progetti.add(p);
}
public static Capoprogetto read(Scanner sc){
String matricola, nome, cognome;
Date data=null;
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
if(!sc.hasNextLine()) return null;
matricola=sc.nextLine();
if(!sc.hasNextLine()) return null;
nome=sc.nextLine();
if(!sc.hasNextLine()) return null;
cognome=sc.nextLine();
if(!sc.hasNextLine()) return null;
try{
data=sdf.parse(sc.nextLine());
}
catch(ParseException e){
System.err.println("Impossibile leggere la data. Impostata a zero");
data=new Date(0);
}
return new Capoprogetto(matricola, nome, cognome, data);
}
public String toString(){
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
return matricola+" "+nome+" "+cognome+" "+sdf.format(data);
}
private String matricola;
private String nome;
private String cognome;
private Date data;
private ArrayList<Progetto> progetti;
}

View File

@ -0,0 +1,106 @@
import java.util.ArrayList;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.Scanner;
public class Progetto {
public Progetto(String id, String matricola, Date inizio, Date fine, double importo) {
super();
this.id = id;
this.matricola = matricola;
this.inizio = inizio;
this.fine = fine;
this.importo = importo;
this.capoprogetto = null;
}
public Date getInizio() {
return inizio;
}
public void setInizio(Date inizio) {
this.inizio = inizio;
}
public Date getFine() {
return fine;
}
public void setFine(Date fine) {
this.fine = fine;
}
public double getImporto() {
return importo;
}
public void setImporto(double importo) {
this.importo = importo;
}
public String getId() {
return id;
}
public String getMatricola() {
return matricola;
}
public Capoprogetto getCapoprogetto() {
return capoprogetto;
}
public void setCapoprogetto(Capoprogetto capoprogetto) {
this.capoprogetto = capoprogetto;
}
public static Progetto read(Scanner sc){
String id, matricola;
Date inizio=null, fine=null;
double importo=10000;
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
if(!sc.hasNextLine()) return null;
id=sc.nextLine();
if(!sc.hasNextLine()) return null;
matricola=sc.nextLine();
if(!sc.hasNextLine()) return null;
try{
inizio=sdf.parse(sc.nextLine());
}
catch(ParseException e){
System.err.println("Impossibile leggere la data. Impostata a zero");
inizio=new Date(0);
}
if(!sc.hasNextLine()) return null;
try{
fine=sdf.parse(sc.nextLine());
}
catch(ParseException e){
System.err.println("Impossibile leggere la data. Impostata a zero");
fine=new Date(0);
}
if(!sc.hasNextLine()) return null;
importo = Double.parseDouble(sc.nextLine());
return new Progetto(id, matricola, inizio, fine, importo);
}
public String toString(){
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
return id+" "+matricola+" "+sdf.format(inizio)+" "+sdf.format(fine)+" "+importo;
}
private String id;
private String matricola;
private Date inizio;
private Date fine;
private double importo;
private Capoprogetto capoprogetto;
}

View File

@ -0,0 +1,9 @@
public class ProgettoNonTrovato extends RuntimeException{
public ProgettoNonTrovato(){}
public ProgettoNonTrovato(String msg){
super(msg);
}
}

View File

@ -0,0 +1,48 @@
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Iterator;
public class Segreteria{
public Segreteria(Scanner scP, Scanner scCP){
progetti = new ArrayList<Progetto>();
capoprogetti = new ArrayList<Capoprogetto>();
Capoprogetto cp=Capoprogetto.read(scCP);
while(cp!=null){
capoprogetti.add(cp);
cp=Capoprogetto.read(scCP);
}
Progetto p=Progetto.read(scP);
while(p!=null){
try{
cp=searchCapoprogetto(p.getMatricola());
cp.addProgetto(p);
p.setCapoprogetto(cp);
}
catch(ProgettoNonTrovato e){
System.err.println(e.getMessage());
}
p=Progetto.read(scP);
}
}
private Capoprogetto searchCapoprogetto(String matricola){
Iterator<Capoprogetto> iter = capoprogetti.iterator();
Capoprogetto cp=null;
boolean trovato=false;
while(iter.hasNext() && !trovato){
cp=iter.next();
if (cp.getMatricola().equals(matricola))
trovato=true;
}
if(trovato)
return cp;
throw new ProgettoNonTrovato("Il capoprogetto: "+matricola+" non è stato trovato");
}
private ArrayList<Progetto> progetti;
private ArrayList<Capoprogetto> capoprogetti;
}