import java.util.*;

class Regal {

	private Vector buecher;
	private int maxAnzahlBuecher;
	private String bezeichner;
	
	public Regal(int hoechstanzahl, String bezeichner){
		buecher=new Vector();
		maxAnzahlBuecher=hoechstanzahl;
		this.bezeichner=bezeichner;
	}
	
	public boolean addBuch(Buch buch){
		if (buecher.size()<maxAnzahlBuecher){
			buecher.add(buch);
			return true;
		}
		else return false;
	}

	/*
	Diese Methode entfernt alle Bücher mit der selben ISBN-Nummer,
	was kann man ändern, um jeweils nur das erste Buch zu entfernen?
	*/
	public boolean removeBuch(String isbn){
		boolean entfernt=false;
		for (int i=0; i<buecher.size(); i++){
			Buch buch=(Buch)buecher.elementAt(i);
			if (buch.getISBN().equals(isbn)){
				buecher.remove(buch);
				entfernt=true;
			}
		}
		return entfernt;
	}
	
	public Vector getBuecher(){
		return buecher;
	}
	
	public String getStandort(){
		return bezeichner;
	}
	
	public int getMaxKapazitaet(){
		return maxAnzahlBuecher;
	}
	
	public int getFreieKapazitaet(){
		return maxAnzahlBuecher-buecher.size();
	}
	
	public int getAnzahlBuecher(){
		return buecher.size();
	}
	
	public void print(){
		System.out.println("Folgende Bücher sind im Regal:");
		
		// hier wird die Liste sortiert:
		Collections.sort(buecher);
		
		for (int i=0; i<buecher.size(); i++)
			System.out.println(((Buch)buecher.elementAt(i)).toString());
	}

	public static void main(String[] args){
		// zum Testen
		Buch buch1=new Buch("King", "Buch 1", "1-567-67878-5", 1992);
		Buch buch2=new Buch("Konsalik", "Buch 2", "3 528 57235 3", 1990);
		Buch buch3=new Buch("Konsalik", "Buch 3", "3 528 57235 3", 1989);
		Regal regal=new Regal(5, "Nordflügel");
		System.out.println("Lege ein Buch in das Regal");
		regal.addBuch(buch1);
		System.out.println("Es sind noch "+regal.getFreieKapazitaet()+
				" von "+regal.getMaxKapazitaet()+
				" Plätzen frei.");
		regal.print();
		System.out.println("Lege noch ein Buch in das Regal");
		regal.addBuch(buch2);
		regal.addBuch(buch3);
		System.out.println("Es sind noch "+regal.getFreieKapazitaet()+
				" von "+regal.getMaxKapazitaet()+
				" Plätzen frei.");
		regal.print();
		
		System.out.println("Versuche, Buch (Bücher) vom Regal zu entfernen");
		System.out.println(regal.removeBuch("3 528 57235 3"));
		System.out.println("Es sind noch "+regal.getFreieKapazitaet()+
				" von "+regal.getMaxKapazitaet()+
				" Plätzen frei.");
		regal.print();
	}
}
