package biblioteka_gui;

import java.io.*;
import java.util.*;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

/**
 * Klasa rozszerzajaca funkcjonalnosc klasy Osoba
 * @author w21826
 *
 */
public class Czytelnik extends Osoba
{
	/**
	 * Identyfikuje czytelnika
	 */
	public int nr_karty;
	/**
	 * Obiekt klasy String, okresla ulice przy ktorej mieszka czytelnik
	 */
	public String ulica;
	/**
	 * Obiekt klasy String, okresla numer domu czytelnika
	 */
	public String nr_domu;
	/**
	 * Obiekt klasy String, okresla numer mieszkania czytelnika
	 */
	public String nr_mieszkania;
	/**
	 * Obiekt klasy String, okresla kod pocztowy miasta w ktorym mieszka czytelnik
	 */
	public String kod;
	/**
	 * Obiekt klasy String, okresla miasto w ktorym mieszka czytelnik
	 */
	public String miejscowosc;
	/**
	 * Lista wypozyczonych ksiazek przez czytelnika, o maksymalnej pojemnosci 10 ksiazek
	 */
	public ArrayList<String> wypożyczone=new ArrayList<String>(10);
	
	/**
	 * Konstruktor parametrowy
	 * @param nr_karty numer karty czytelnika
	 * @param imie imie czytelnika
	 * @param nazwisko nazwisko czytelnika
	 * @param ulica ulica przy ktorej mieszka czytelnik
	 * @param nr_domu  numer domu czytelnika
	 * @param nr_mieszkania numer mieszkania czytelnika
	 * @param kod kod pocztowy czytelnika
	 * @param miejscowosc miejscowosc w ktorej czytelnik mieszka
	 */
	public Czytelnik(int nr_karty, String imie, String nazwisko, String ulica, String nr_domu, String nr_mieszkania, String kod, String miejscowosc)
	{
		super(imie,nazwisko);
		this.nr_karty=nr_karty;
		this.ulica=ulica;
		this.nr_domu=nr_domu;
		this.nr_mieszkania=nr_mieszkania;
		this.kod=kod;
		this.miejscowosc=miejscowosc;
	}
	
	/**
	 * Metoda wyswietlajaca numery ksiazek wypozyczonych przez czytelnika przez czytelnika
	 *
	 */
	public void wyswietl()
	{
		for(int i=0;i<wypożyczone.size();i++)
		{
			System.out.println("Wypożyczona książka: " + wypożyczone.get(i).toString() + " " + nr_karty);
		}
	}

	/**
	 * Metoda tworzaca strukture DOM do pozniejszego zapisu w XML
	 * @param doc okresla do ktorego dokumentu dolaczana jest struktura DOM  na rzecz ktorego zostala wywolana
	 * @param element okresla element do ktorego jest zapisywana struktura DOM czytelnika na rzecz ktorego zostala wywolana
	 */
	public void zapisz(Document doc, Element element)
	{
		Element elem=doc.createElement("Czytelnik");
		elem.setAttribute("nr_karty", String.valueOf(nr_karty));
		elem.setAttribute("Imie", imie);
		elem.setAttribute("Nazwisko", nazwisko);
		elem.setAttribute("Ulica", ulica);
		elem.setAttribute("nr_domu", nr_domu);
		elem.setAttribute("nr_mieszkania", nr_mieszkania);
		elem.setAttribute("Kod", kod);
		elem.setAttribute("Miejscowosc",miejscowosc);
		for(int i=0; i<wypożyczone.size(); i++)
		{
			elem.setAttribute("Ksiazka_"+i, wypożyczone.get(i));
		}
		element.appendChild(elem);
	}
	
	/**
	 * Metoda sluzaca do wczytania Stringa z domyslnego wejscia
	 * @deprecated Od wersji 1.5 zostanie usunieta
	 * @return Zwraca wczytany String
	 */
	public String wczytajString()
	{
		
		InputStreamReader inp=new InputStreamReader(System.in);
		BufferedReader br=new BufferedReader(inp);
		try
		{
			String s=br.readLine();
			return s;
		}
		catch (IOException e)
		{
			e.printStackTrace();
			return "IOException";
		}

	}
}
