add museo

This commit is contained in:
orange 2016-12-29 16:56:31 +01:00
parent 5a3bf67e1c
commit 22d2612baa
9 changed files with 263 additions and 0 deletions

55
src/Museo/Archivio.java Normal file
View File

@ -0,0 +1,55 @@
import java.util.Set;
import java.util.HashSet;
import java.util.Scanner;
import java.io.PrintStream;
public class Archivio{
public Archivio(Scanner scMult, Scanner scLibri, Scanner scStampe){
archivio=new HashSet<Opera>();
Opera op=Libro.read(scLibri);
while(op!=null){
archivio.add(op);
op=Libro.read(scLibri);
}
op=OperaMult.read(scMult);
while(op!=null){
archivio.add(op);
op=OperaMult.read(scMult);
}
op=Stampa.read(scStampe);
while(op!=null){
archivio.add(op);
op=Stampa.read(scStampe);
}
}
public Archivio(Set<Opera> archivio){
this.archivio=archivio;
}
public void print(PrintStream ps){
for(Opera o: archivio){
if(o instanceof Libro)
((Libro) o).print(ps);
if(o instanceof Stampa)
((Stampa) o).print(ps);
if(o instanceof OperaMult)
((OperaMult) o).print(ps);
}
}
public Archivio filtroAutore(String autore){
Set<Opera> nuovoSet = new HashSet<Opera>();
for(Opera o: archivio)
if(o.getAutore().equals(autore))
nuovoSet.add(o);
return new Archivio(nuovoSet);
}
private Set<Opera> archivio;
}

10
src/Museo/Libri.dat Normal file
View File

@ -0,0 +1,10 @@
Autore3
Titolo4
1998
5S
#
Autore3
Titolo5
1233
5F
#

35
src/Museo/Libro.java Normal file
View File

@ -0,0 +1,35 @@
import java.util.Scanner;
import java.io.PrintStream;
public class Libro extends Opera{
public Libro(String autore, String titolo, int anno, String pos){
super(autore, titolo, anno, pos);
}
public int hashCode(){
return super.hashCode();
}
public void print(PrintStream ps){
ps.println("L "+autore+" "+titolo+" "+anno+" "+pos+".");
}
public static Libro read(Scanner sc){
String autore, titolo, pos;
int anno;
if(!sc.hasNextLine()) return null;
autore=sc.nextLine();
if(!sc.hasNextLine()) return null;
titolo=sc.nextLine();
if(!sc.hasNextLine()) return null;
anno=Integer.parseInt(sc.nextLine());
if(!sc.hasNextLine()) return null;
pos=sc.nextLine();
if(!sc.hasNextLine()) return null;
sc.nextLine();
return new Libro(autore, titolo, anno, pos);
}
}

33
src/Museo/Opera.java Normal file
View File

@ -0,0 +1,33 @@
public class Opera{
public Opera(String autore, String titolo, int anno, String pos){
this.anno=anno;
this.autore=autore;
this.titolo=titolo;
this.pos=pos;
}
public int getAnno(){
return anno;
}
public String getAutore(){
return autore;
}
public String getTitolo(){
return titolo;
}
public String getPos(){
return pos;
}
public int hashCode(){
return autore.hashCode()*titolo.hashCode()*pos.hashCode()*anno;
}
protected int anno;
protected String autore;
protected String titolo;
protected String pos;
}

40
src/Museo/OperaMult.java Normal file
View File

@ -0,0 +1,40 @@
import java.util.Scanner;
import java.io.PrintStream;
public class OperaMult extends Opera{
public OperaMult(String autore, String titolo, String supporto, int anno, String pos){
super(autore, titolo, anno, pos);
this.supporto=supporto;
}
public int hashCode(){
return super.hashCode()*supporto.hashCode();
}
public void print(PrintStream ps){
ps.println("OM "+autore+" "+titolo+" "+supporto+" "+anno+" "+pos+".");
}
public static OperaMult read(Scanner sc){
String autore, titolo, pos, supporto;
int anno;
if(!sc.hasNextLine()) return null;
autore=sc.nextLine();
if(!sc.hasNextLine()) return null;
titolo=sc.nextLine();
if(!sc.hasNextLine()) return null;
supporto=sc.nextLine();
if(!sc.hasNextLine()) return null;
anno=Integer.parseInt(sc.nextLine());
if(!sc.hasNextLine()) return null;
pos=sc.nextLine();
if(!sc.hasNextLine()) return null;
sc.nextLine();
return new OperaMult(autore, titolo, supporto, anno, pos);
}
private String supporto;
}

18
src/Museo/OpereMult.dat Normal file
View File

@ -0,0 +1,18 @@
Autore3
Titolo6
CD
1345
45R
#
Autore1
Titolo7
USB
1996
4S
#
Autore5
Titolo8
HD
1990
45R
#

40
src/Museo/Stampa.java Normal file
View File

@ -0,0 +1,40 @@
import java.util.Scanner;
import java.io.PrintStream;
public class Stampa extends Opera{
public Stampa(String autore, String titolo, String tecnica, int anno, String pos){
super(autore, titolo, anno, pos);
this.tecnica=tecnica;
}
public int hashCode(){
return super.hashCode()*tecnica.hashCode();
}
public void print(PrintStream ps){
ps.println("S "+autore+" "+titolo+" "+tecnica+" "+anno+" "+pos+".");
}
public static Stampa read(Scanner sc){
String autore, titolo, pos, tecnica;
int anno;
if(!sc.hasNextLine()) return null;
autore=sc.nextLine();
if(!sc.hasNextLine()) return null;
titolo=sc.nextLine();
if(!sc.hasNextLine()) return null;
tecnica=sc.nextLine();
if(!sc.hasNextLine()) return null;
anno=Integer.parseInt(sc.nextLine());
if(!sc.hasNextLine()) return null;
pos=sc.nextLine();
if(!sc.hasNextLine()) return null;
sc.nextLine();
return new Stampa(autore, titolo, tecnica, anno, pos);
}
private String tecnica;
}

18
src/Museo/Stampe.dat Normal file
View File

@ -0,0 +1,18 @@
Autore1
Titolo1
Pergamena
2000
4D
#
Autore2
Titolo2
Carta
1990
34C
#
Autore1
Titolo3
Pergamena
1999
2C
#

14
src/Museo/Test.java Normal file
View File

@ -0,0 +1,14 @@
import java.util.Scanner;
import java.io.File;
public class Test{
public static void main(String [] args) throws Exception{
Scanner scLibri=new Scanner(new File("Libri.dat"));
Scanner scMult=new Scanner(new File("OpereMult.dat"));
Scanner scStampe=new Scanner(new File("Stampe.dat"));
Archivio arch=new Archivio(scMult, scLibri, scStampe);
arch.filtroAutore("Autore1").print(System.out);
}
}