diff --git a/src/Temi d'esame/Biblioteca/Biblioteca.java b/src/Temi d'esame/Biblioteca/Biblioteca.java index fa24304..90c52cc 100644 --- a/src/Temi d'esame/Biblioteca/Biblioteca.java +++ b/src/Temi d'esame/Biblioteca/Biblioteca.java @@ -20,7 +20,7 @@ public class Biblioteca{ Prestito p=Prestito.read(scP); while(p!=null){ try{ - l=libroSearch(p.getID()); // ricerca del libro + l=libroSearchByID(p.getID()); // ricerca del libro p.setLibro(l); // se il libro esiste viene linkato al prestito l.addPrestito(p); // il prestito viene linkato al libro prestiti.add(p); // il orestito viene agginto alla lista dei prestiti @@ -34,7 +34,12 @@ public class Biblioteca{ } } - private Libro libroSearch(String id){ + public Biblioteca(ArrayList libri, ArrayList prestiti){ + this.prestiti=prestiti; + this.libri=libri; + } + + private Libro libroSearchByID(String id){ Iterator iter = libri.iterator(); boolean trovato=false; Libro l=null; @@ -57,6 +62,55 @@ public class Biblioteca{ } } + public void printStricoUtente(PrintStream ps){ + for(Prestito p: prestiti){ + ps.print(p.toString()+" "); + ps.println(p.getLibro().toString()); + } + } + + public Biblioteca filtroLibroByID(String id){ + ArrayList prestitiFilter=new ArrayList(); + ArrayList libriFilter= new ArrayList(); + Libro l=libroSearchByID(id); + libriFilter.add(l); + prestitiFilter.addAll(l.getPrestiti()); + return new Biblioteca(libriFilter, prestitiFilter); + } + + public Biblioteca filtroLibroByTitolo(String titolo){ + ArrayList prestitiFilter=new ArrayList(); + ArrayList libriFilter= new ArrayList(); + for(Libro l: libri) + if(l.getTitolo().equals(titolo)){ + libriFilter.add(l); + prestitiFilter.addAll(l.getPrestiti()); + } + return new Biblioteca(libriFilter, prestitiFilter); + } + + public Biblioteca filtroLibroByAutore(String autore){ + ArrayList prestitiFilter=new ArrayList(); + ArrayList libriFilter= new ArrayList(); + for(Libro l: libri) + if(l.hasAutore(autore)){ + libriFilter.add(l); + prestitiFilter.addAll(l.getPrestiti()); + } + return new Biblioteca(libriFilter, prestitiFilter); + } + + public Biblioteca filtroPrestitoByNome(String nome){ + ArrayList prestitiFilter=new ArrayList(); + ArrayList libriFilter= new ArrayList(); + for(Prestito p: prestiti) + if(p.getNome().equals(nome)){ + libriFilter.add(p.getLibro()); + prestitiFilter.add(p); + } + return new Biblioteca(libriFilter, prestitiFilter); + } + private ArrayList prestiti; diff --git a/src/Temi d'esame/Biblioteca/Libro.java b/src/Temi d'esame/Biblioteca/Libro.java index 6ecb58b..1720a24 100644 --- a/src/Temi d'esame/Biblioteca/Libro.java +++ b/src/Temi d'esame/Biblioteca/Libro.java @@ -1,6 +1,7 @@ import java.util.ArrayList; import java.io.PrintStream; import java.util.Scanner; +import java.util.Iterator; public class Libro { @@ -32,9 +33,25 @@ public class Libro { return autori; } + public ArrayList getPrestiti() { + return prestiti; + } + public void addPrestito(Prestito p){ prestiti.add(p); } + + public boolean hasAutore(String autore){ + String s=null; + Iterator iter = autori.iterator(); + boolean trovato=false; + while(iter.hasNext() && !trovato){ + s=iter.next(); + trovato=s.equals(autore); + } + + return trovato; + } public static Libro read(Scanner sc){ String id, titolo; diff --git a/src/Temi d'esame/Biblioteca/Prestito.java b/src/Temi d'esame/Biblioteca/Prestito.java index f332f01..3d1a4de 100644 --- a/src/Temi d'esame/Biblioteca/Prestito.java +++ b/src/Temi d'esame/Biblioteca/Prestito.java @@ -35,6 +35,10 @@ public class Prestito{ return end; } + public Libro getLibro(){ + return libro; + } + public void setEnd(Date end){ this.end=end; } diff --git a/src/Temi d'esame/Biblioteca/Test.java b/src/Temi d'esame/Biblioteca/Test.java index 7104418..feb27ab 100644 --- a/src/Temi d'esame/Biblioteca/Test.java +++ b/src/Temi d'esame/Biblioteca/Test.java @@ -15,6 +15,6 @@ public class Test{ } Biblioteca bl1 = new Biblioteca(scP, scL); - bl1.printStoricoPrestiti(System.out); + bl1.filtroPrestitoByNome("Noemi").printStricoUtente(System.out); } } \ No newline at end of file