public class Visita implements Listener {
	private String codice;
	private LinkPrenota prenota;

	public Visita(String codice) {
		this.codice = codice;
	}

	public String getCodice() {
		return this.codice;
	}

	// gestione dell'associazione prenota, con un Paziente

	public LinkPrenota getPrenota() {
		if (this.prenota == null)
			throw new RuntimeException("errore di cardinalita': visita non prenotata da nessun paziente");
		return this.prenota;
	}

	public void setPrenota(LinkPrenota prenota) {
		ManagerPrenota.aggiungiPrenota(prenota);
	}

	public void setPrenota(ManagerPrenota manager) {
		if (manager == null)
			return;
		this.prenota = manager.getPrenota();
	}

	// gestione dell'associazione assegnato, con Medico
	// stub, non richiesto

	public LinkAssegnato getAssegnato() {
		return null;
	}

	public void setAssegnato(LinkAssegnato link) {
	}

	// gestione dell'associazione in, con Reparto
	// non richiesto, non implementato

	// gestione dello stato

	static enum Stato {PRENOTATA, ASSEGNATA, SOSPESA, ANNULLATA, EFFETTUATA};
	Stato stato = Stato.PRENOTATA;

	protected Medico iniziale = null;	// variabile ausiliaria

	public Stato getStato() {
		return this.stato;
	}

	@Override
	public void fired(Evento e) {
		VisitaFired fired = new VisitaFired(this, e);
		TaskExecutor.getInstance().perform(fired);
	}
}

