add filtri

This commit is contained in:
orange 2017-01-27 15:37:24 +01:00
parent f76eb62233
commit c44cf35969
4 changed files with 78 additions and 3 deletions

View File

@ -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<Libro> libri, ArrayList<Prestito> prestiti){
this.prestiti=prestiti;
this.libri=libri;
}
private Libro libroSearchByID(String id){
Iterator<Libro> 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<Prestito> prestitiFilter=new ArrayList<Prestito>();
ArrayList<Libro> libriFilter= new ArrayList<Libro>();
Libro l=libroSearchByID(id);
libriFilter.add(l);
prestitiFilter.addAll(l.getPrestiti());
return new Biblioteca(libriFilter, prestitiFilter);
}
public Biblioteca filtroLibroByTitolo(String titolo){
ArrayList<Prestito> prestitiFilter=new ArrayList<Prestito>();
ArrayList<Libro> libriFilter= new ArrayList<Libro>();
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<Prestito> prestitiFilter=new ArrayList<Prestito>();
ArrayList<Libro> libriFilter= new ArrayList<Libro>();
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<Prestito> prestitiFilter=new ArrayList<Prestito>();
ArrayList<Libro> libriFilter= new ArrayList<Libro>();
for(Prestito p: prestiti)
if(p.getNome().equals(nome)){
libriFilter.add(p.getLibro());
prestitiFilter.add(p);
}
return new Biblioteca(libriFilter, prestitiFilter);
}
private ArrayList<Prestito> prestiti;

View File

@ -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<Prestito> getPrestiti() {
return prestiti;
}
public void addPrestito(Prestito p){
prestiti.add(p);
}
public boolean hasAutore(String autore){
String s=null;
Iterator<String> 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;

View File

@ -35,6 +35,10 @@ public class Prestito{
return end;
}
public Libro getLibro(){
return libro;
}
public void setEnd(Date end){
this.end=end;
}

View File

@ -15,6 +15,6 @@ public class Test{
}
Biblioteca bl1 = new Biblioteca(scP, scL);
bl1.printStoricoPrestiti(System.out);
bl1.filtroPrestitoByNome("Noemi").printStricoUtente(System.out);
}
}