package catalogolibri;
import libro.*;
import java.util.*;


public class CatalogoLibri {

  private String nome;
  private Set ins; //uso l'intefaccia set
  
  public CatalogoLibri(String n) {
    nome = n;
    ins = new HashSet();  //uso una classe concreta che implementa Set
  }

  // funzioni pubbliche della classe
  public String nome() {
    return nome;
  }

  public boolean presenteLibro(Libro l) {
    return ins.contains(l);
  }

  public void aggiungiLibro(Libro l) {
    ins.add(l);
  }

  public void eliminaLibro(Libro l) {
    ins.remove(l);
  }

  public Iterator libri() {
    //return ins.iterator(); se va bene avere anche remove
    return new IteratorNoRemove(ins.iterator()); //per eliminare remove
  }

}


class IteratorNoRemove implements Iterator {
  private Iterator it;
  public IteratorNoRemove(Iterator it) {
    this.it = it;
  }
  public boolean hasNext() {
    return it.hasNext();
  }
  public Object next() {
    return it.next();
  }
  public void remove() {
    throw new UnsupportedOperationException("remove non supportato");
  }
}
