filtri e eccezioni
This commit is contained in:
parent
4f918b14d2
commit
77d32c3326
@ -1,6 +1,7 @@
|
||||
import java.util.ArrayList;
|
||||
import java.util.Scanner;
|
||||
import java.util.Date;
|
||||
import java.io.PrintStream;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.text.ParseException;
|
||||
|
||||
@ -13,7 +14,7 @@ public class Capoprogetto {
|
||||
this.cognome = cognome;
|
||||
this.data = data;
|
||||
this.progetti = null;
|
||||
|
||||
progetti = new ArrayList<Progetto>();
|
||||
}
|
||||
|
||||
public String getMatricola() {
|
||||
@ -28,7 +29,7 @@ public class Capoprogetto {
|
||||
return cognome;
|
||||
}
|
||||
|
||||
public ArrayList<Progetto> getProgetto() {
|
||||
public ArrayList<Progetto> getProgetti() {
|
||||
return progetti;
|
||||
}
|
||||
|
||||
@ -44,6 +45,11 @@ public class Capoprogetto {
|
||||
progetti.add(p);
|
||||
}
|
||||
|
||||
public void printProgetti(PrintStream ps){
|
||||
for(Progetto p: progetti)
|
||||
ps.println(" + "+p.toString());
|
||||
}
|
||||
|
||||
public static Capoprogetto read(Scanner sc){
|
||||
String matricola, nome, cognome;
|
||||
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){
|
||||
String id, matricola;
|
||||
Date inizio=null, fine=null;
|
||||
double importo=10000;
|
||||
double importo=1000;
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
|
||||
|
||||
if(!sc.hasNextLine()) return null;
|
||||
@ -84,7 +84,21 @@ public class Progetto {
|
||||
fine=new Date(0);
|
||||
}
|
||||
if(!sc.hasNextLine()) return null;
|
||||
try{
|
||||
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);
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
import java.util.ArrayList;
|
||||
import java.util.Scanner;
|
||||
import java.util.Iterator;
|
||||
import java.io.PrintStream;
|
||||
|
||||
public class Segreteria{
|
||||
|
||||
@ -20,6 +21,7 @@ public class Segreteria{
|
||||
cp=searchCapoprogetto(p.getMatricola());
|
||||
cp.addProgetto(p);
|
||||
p.setCapoprogetto(cp);
|
||||
progetti.add(p);
|
||||
}
|
||||
catch(ProgettoNonTrovato e){
|
||||
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){
|
||||
Iterator<Capoprogetto> iter = capoprogetti.iterator();
|
||||
Capoprogetto cp=null;
|
||||
@ -43,6 +50,44 @@ public class Segreteria{
|
||||
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<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