filtri e eccezioni
This commit is contained in:
parent
4f918b14d2
commit
77d32c3326
@ -1,6 +1,7 @@
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.io.PrintStream;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
|
|
||||||
@ -13,7 +14,7 @@ public class Capoprogetto {
|
|||||||
this.cognome = cognome;
|
this.cognome = cognome;
|
||||||
this.data = data;
|
this.data = data;
|
||||||
this.progetti = null;
|
this.progetti = null;
|
||||||
|
progetti = new ArrayList<Progetto>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getMatricola() {
|
public String getMatricola() {
|
||||||
@ -28,7 +29,7 @@ public class Capoprogetto {
|
|||||||
return cognome;
|
return cognome;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArrayList<Progetto> getProgetto() {
|
public ArrayList<Progetto> getProgetti() {
|
||||||
return progetti;
|
return progetti;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,6 +45,11 @@ public class Capoprogetto {
|
|||||||
progetti.add(p);
|
progetti.add(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void printProgetti(PrintStream ps){
|
||||||
|
for(Progetto p: progetti)
|
||||||
|
ps.println(" + "+p.toString());
|
||||||
|
}
|
||||||
|
|
||||||
public static Capoprogetto read(Scanner sc){
|
public static Capoprogetto read(Scanner sc){
|
||||||
String matricola, nome, cognome;
|
String matricola, nome, cognome;
|
||||||
Date data=null;
|
Date data=null;
|
||||||
|
5
src/Temi d'esame/Progetto/ImportoNegativo.java
Normal file
5
src/Temi d'esame/Progetto/ImportoNegativo.java
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
public class ImportoNegativo extends RuntimeException{
|
||||||
|
public ImportoNegativo(String msg){
|
||||||
|
super(msg);
|
||||||
|
}
|
||||||
|
}
|
BIN
src/Temi d'esame/Progetto/Prog-2013-05-06.pdf
Normal file
BIN
src/Temi d'esame/Progetto/Prog-2013-05-06.pdf
Normal file
Binary file not shown.
@ -60,7 +60,7 @@ public class Progetto {
|
|||||||
public static Progetto read(Scanner sc){
|
public static Progetto read(Scanner sc){
|
||||||
String id, matricola;
|
String id, matricola;
|
||||||
Date inizio=null, fine=null;
|
Date inizio=null, fine=null;
|
||||||
double importo=10000;
|
double importo=1000;
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
|
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
|
||||||
|
|
||||||
if(!sc.hasNextLine()) return null;
|
if(!sc.hasNextLine()) return null;
|
||||||
@ -84,7 +84,21 @@ public class Progetto {
|
|||||||
fine=new Date(0);
|
fine=new Date(0);
|
||||||
}
|
}
|
||||||
if(!sc.hasNextLine()) return null;
|
if(!sc.hasNextLine()) return null;
|
||||||
|
try{
|
||||||
importo = Double.parseDouble(sc.nextLine());
|
importo = Double.parseDouble(sc.nextLine());
|
||||||
|
if(importo<0)
|
||||||
|
throw new ImportoNegativo("L'importo del progetto: "+id+" è negativo.");
|
||||||
|
}
|
||||||
|
catch(NumberFormatException e){
|
||||||
|
System.err.println("Impossibile leggere correttamente l'importo del progetto: "+id);
|
||||||
|
System.err.println("Importo impostato a 1000");
|
||||||
|
}
|
||||||
|
catch(ImportoNegativo in){
|
||||||
|
System.err.println(in.getMessage());
|
||||||
|
System.err.println("Importo inpostato a positivo.");
|
||||||
|
importo*=-1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return new Progetto(id, matricola, inizio, fine, importo);
|
return new Progetto(id, matricola, inizio, fine, importo);
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
import java.io.PrintStream;
|
||||||
|
|
||||||
public class Segreteria{
|
public class Segreteria{
|
||||||
|
|
||||||
@ -20,6 +21,7 @@ public class Segreteria{
|
|||||||
cp=searchCapoprogetto(p.getMatricola());
|
cp=searchCapoprogetto(p.getMatricola());
|
||||||
cp.addProgetto(p);
|
cp.addProgetto(p);
|
||||||
p.setCapoprogetto(cp);
|
p.setCapoprogetto(cp);
|
||||||
|
progetti.add(p);
|
||||||
}
|
}
|
||||||
catch(ProgettoNonTrovato e){
|
catch(ProgettoNonTrovato e){
|
||||||
System.err.println(e.getMessage());
|
System.err.println(e.getMessage());
|
||||||
@ -28,6 +30,11 @@ public class Segreteria{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Segreteria(ArrayList<Progetto> progetti, ArrayList<Capoprogetto> capoprogetti){
|
||||||
|
this.progetti=progetti;
|
||||||
|
this.capoprogetti=capoprogetti;
|
||||||
|
}
|
||||||
|
|
||||||
private Capoprogetto searchCapoprogetto(String matricola){
|
private Capoprogetto searchCapoprogetto(String matricola){
|
||||||
Iterator<Capoprogetto> iter = capoprogetti.iterator();
|
Iterator<Capoprogetto> iter = capoprogetti.iterator();
|
||||||
Capoprogetto cp=null;
|
Capoprogetto cp=null;
|
||||||
@ -43,6 +50,44 @@ public class Segreteria{
|
|||||||
throw new ProgettoNonTrovato("Il capoprogetto: "+matricola+" non è stato trovato");
|
throw new ProgettoNonTrovato("Il capoprogetto: "+matricola+" non è stato trovato");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Segreteria filtroImportoMaggiore(double importo){
|
||||||
|
ArrayList<Progetto> progettiFilter=new ArrayList<Progetto>();
|
||||||
|
ArrayList<Capoprogetto> capoprogettiFilter=new ArrayList<Capoprogetto>();
|
||||||
|
for(Progetto p: progetti)
|
||||||
|
if(p.getImporto()>importo){
|
||||||
|
progettiFilter.add(p);
|
||||||
|
capoprogettiFilter.add(p.getCapoprogetto());
|
||||||
|
}
|
||||||
|
return new Segreteria(progettiFilter, capoprogettiFilter);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Segreteria filtroNomeCapo(String nome){
|
||||||
|
ArrayList<Progetto> progettiFilter=new ArrayList<Progetto>();
|
||||||
|
ArrayList<Capoprogetto> capoprogettiFilter=new ArrayList<Capoprogetto>();
|
||||||
|
for(Capoprogetto cp: capoprogetti)
|
||||||
|
if(cp.getNome().equals(nome)){
|
||||||
|
progettiFilter.addAll(cp.getProgetti());
|
||||||
|
capoprogettiFilter.add(cp);
|
||||||
|
}
|
||||||
|
return new Segreteria(progettiFilter, capoprogettiFilter);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void printReportCapi(PrintStream ps){
|
||||||
|
for(Capoprogetto cp: capoprogetti){
|
||||||
|
ps.println(cp.toString());
|
||||||
|
cp.printProgetti(ps);
|
||||||
|
ps.println("*****");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void printReportProgetti(PrintStream ps){
|
||||||
|
for(Progetto p: progetti){
|
||||||
|
ps.println(p.toString());
|
||||||
|
ps.println(" + "+p.getCapoprogetto().toString());
|
||||||
|
ps.println("*****");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private ArrayList<Progetto> progetti;
|
private ArrayList<Progetto> progetti;
|
||||||
private ArrayList<Capoprogetto> capoprogetti;
|
private ArrayList<Capoprogetto> capoprogetti;
|
||||||
}
|
}
|
22
src/Temi d'esame/Progetto/Test.java
Normal file
22
src/Temi d'esame/Progetto/Test.java
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
import java.util.Scanner;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
|
||||||
|
public class Test{
|
||||||
|
public static void main(String [] args){
|
||||||
|
Scanner scCP=null, scP=null;
|
||||||
|
try{
|
||||||
|
scCP=new Scanner(new File("capi.dat"));
|
||||||
|
scP=new Scanner(new File("progetti.dat"));
|
||||||
|
}
|
||||||
|
catch(FileNotFoundException e){
|
||||||
|
System.err.println("Uno dei due file non esiste");
|
||||||
|
System.exit(0);
|
||||||
|
}
|
||||||
|
Segreteria sg1 = new Segreteria(scP, scCP);
|
||||||
|
sg1=sg1.filtroNomeCapo("Nome1");
|
||||||
|
sg1.printReportCapi(System.out);
|
||||||
|
System.out.println("-------------------");
|
||||||
|
sg1.printReportProgetti(System.out);
|
||||||
|
}
|
||||||
|
}
|
16
src/Temi d'esame/Progetto/capi.dat
Normal file
16
src/Temi d'esame/Progetto/capi.dat
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
MT01
|
||||||
|
Pinco
|
||||||
|
Panco
|
||||||
|
12/08/1990
|
||||||
|
MT02
|
||||||
|
Nome
|
||||||
|
Cognome
|
||||||
|
03/09/1286
|
||||||
|
MT03
|
||||||
|
Paperone
|
||||||
|
De Paperoni
|
||||||
|
24/11/1943
|
||||||
|
MT04
|
||||||
|
Nome1
|
||||||
|
Cognome1
|
||||||
|
08/12/1961
|
30
src/Temi d'esame/Progetto/progetti.dat
Normal file
30
src/Temi d'esame/Progetto/progetti.dat
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
PG01
|
||||||
|
MT03
|
||||||
|
20/03/2015
|
||||||
|
02/11/2016
|
||||||
|
20000
|
||||||
|
PG02
|
||||||
|
MT01
|
||||||
|
04/08/2014
|
||||||
|
09/12/2016
|
||||||
|
30000
|
||||||
|
PG03
|
||||||
|
MT03
|
||||||
|
23/09/2012
|
||||||
|
24/11/2012
|
||||||
|
800hj
|
||||||
|
PG04
|
||||||
|
MT02
|
||||||
|
23/01/2000
|
||||||
|
24/15/2006
|
||||||
|
100000
|
||||||
|
PG05
|
||||||
|
MT04
|
||||||
|
04/09/2013
|
||||||
|
18/07/2014
|
||||||
|
-20000
|
||||||
|
PG06
|
||||||
|
MT04
|
||||||
|
23/09/2015
|
||||||
|
06/07/2016
|
||||||
|
10000
|
Loading…
Reference in New Issue
Block a user