class Buch extends Printmedium
{
    /*
     * Da wir für jede Variable getter und setter generiert haben, setzen
     * wir die Variablen auf private, damit sie nach außen nicht Sichtbar 
     * sind, und so auch nicht ohne getter und setter verändert werden können.
     * (bei ISBN wäre das z.B. fatal, da man falsche ISBN Nummern angeben könnte,
     * die nicht erst durch die setISBN Methode geprüft werden würde.)
     */
	private String autor = "keinAutorBekannt";
	private String isbn = "0 0000 0000 0";
	
	public Buch()
	{
		isbn = "0 0000 0000 0";
	}
	
	public Buch(String tit, String isbn)
	{
		titel = tit;
		if(testISBN(isbn))
		this.isbn = isbn;
	}
	
	public Buch(String aut, String tit, String isbn)
	{
		autor = aut;
		titel = tit;
		if(testISBN(isbn))
		this.isbn = isbn;
	}
	
	public Buch(String aut, String tit, String isbn, int ersch)
	{
		autor = aut;
		titel = tit;
		if(testISBN(isbn))
		this.isbn = isbn;
		jahr = ersch;
	}
	
	public String toString()
	{
		return "Autor: " + autor + " , Titel: " + titel + " , ISBN: " + isbn + " , Erscheinungsjahr: " + jahr + " , Zustand: " + zustand + " , Ort: " + ort;
	}
	
	public boolean equals(Object a)
	{
		boolean test = false;
		if(a instanceof Buch)
		{
			Buch b= new Buch();
			b= (Buch) a;
			if(isbn.equals(b.isbn))
				test = true;
		}
		return test;
	}
	
	public String getAutor()
	{
		return autor;
	}
	
	public String getISBN()
	{
		return isbn;
	}
	
	public void setAutor(String autor)
	{
		this.autor = autor;
	}
	
	public void setISBN(String isbn)
	{
		if(testISBN(isbn))
			this.isbn = isbn;
	}
	
	private boolean testISBN(String isbn)
	{
		boolean isISBN = false;
		boolean lengthOK = false;
		if(isbn.length() == 13)
		{
			isbn = isbn.replaceAll(" ", "");
			if(isbn.length() ==10)
				lengthOK = true;
			else if(isbn.length() == 13)
			{
				isbn = isbn.replaceAll("-","");
				if(isbn.length() ==10)
					lengthOK = true;
			}
		}
		
		if(lengthOK == true)
		{
			int zahl = Integer.parseInt(isbn.substring(0,1)) *10;
			zahl += Integer.parseInt(isbn.substring(1,2)) *9; 
			zahl += Integer.parseInt(isbn.substring(2,3)) *8; 
			zahl += Integer.parseInt(isbn.substring(3,4)) *7; 
			zahl += Integer.parseInt(isbn.substring(4,5)) *6; 
			zahl += Integer.parseInt(isbn.substring(5,6)) *5; 
			zahl += Integer.parseInt(isbn.substring(6,7)) *4; 
			zahl += Integer.parseInt(isbn.substring(7,8)) *3; 
			zahl += Integer.parseInt(isbn.substring(8,9)) *2; 
			if(isbn.endsWith("X"))
				zahl += 10;
			else
				zahl += Integer.parseInt(isbn.substring(9,10)) *1;
			if(zahl % 11 ==0)
				isISBN = true;
		}
		return isISBN;
	}
}