package parziale.p251110;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;

public class Clinica {
	
	ArrayList<Paziente> pazienti = new ArrayList<Paziente>();
	
	// 1. Numero di pazienti Ricoverati
	public int pazientiRicoverati() {
		return pazienti.size();
	}
	
	// 2. Inserimento del paziente
	/*
	 * Dal momento che non ci è permesso adoperare 
	 * TreeSet per l'ordine e per l'unicità
	 */
	public boolean ricoveraPaziente(Paziente paziente) {
		// Se il paziente è nullo, nulla verrà aggiunto
		if (paziente == null) return false;
		
		// Controllo se il paziente è già presente nella lista ricoveri
		Iterator<Paziente> it = pazienti.iterator();
		while (it.hasNext()) {
			Paziente current = it.next();
			if (paziente.equals(current)) return false;	// Se è già presente un paziente con id uguale allora non viene aggiunto e ritorna false
		}
		
		// Aggiunta del paziente 
		ListIterator<Paziente> lit = pazienti.listIterator();
		while (lit.hasNext()) {
			Paziente current = lit.next();
			int cmp = current.compareTo(paziente);
			if (cmp > 0) {
				lit.previous();
				lit.add(paziente);
				return true;
			}
		}
		
		lit.add(paziente);
		return true;
	}
	
	// 3. Dimissione
	public Paziente dimettiPaziente(String id, int annoNascita) {
		if (id == null || annoNascita <= 0) return null;
		Paziente tmp = new Paziente(id, annoNascita);
		
		Iterator<Paziente> iterator = pazienti.iterator();
		while (iterator.hasNext()) {
			Paziente current = iterator.next();
			int cmp = current.equalsTo();
		}
		
		return null;
	}
	
}
