import java.util.Set;
import java.util.HashSet;

public class Attesa implements Task {
	Set<Paziente> pazienti;
	Set<Visita> attesa;
	boolean eseguita;

	public Attesa(Set<Paziente> pazienti) {
		this.pazienti = pazienti;
	}

	@Override
	public synchronized void esegui() {
		if (eseguita)
			return;
		eseguita = true;

		attesa = new HashSet<Visita>();
		for (Paziente p : this.pazienti) {
			for (LinkPrenota l : p.getPrenota()) {
				Visita v = l.getVisita();
				if (v.getStato() == Visita.Stato.PRENOTATA ||
				    v.getStato() == Visita.Stato.SOSPESA) {
				    	attesa.add(v);
				}
			}
		}
	}

	public Set<Visita> getAttesa() {
		if (! eseguita)
			throw new RuntimeException("attivita' Attesa non eseguita");
		return this.attesa;
	}
}
