import java.util.HashSet;

public class Autorimessa implements Listener {

	// dati

	private String indirizzo;
	private HashSet<LinkPosizione> posizione;

	public Autorimessa(String indirizzo) {
		this.indirizzo = indirizzo;
		this.posizione = new HashSet<LinkPosizione>();
	}

	public String getIndirizzo() {
		return this.indirizzo;
	}

	@SuppressWarnings("unchecked")
	public HashSet<LinkPosizione> getPosizione() {
		return (HashSet<LinkPosizione>) posizione.clone();
	}

	public void addPosizione(LinkPosizione posizione) {
		ManagerPosizione.addPosizione(posizione);
	}

	public void addPerManagerPosizione(ManagerPosizione manager) {
		if (manager == null)
			throw new RuntimeException("manager posizione nullo");
		this.posizione.add(manager.getLink());
	}

	public void removePosizione(LinkPosizione posizione) {
		ManagerPosizione.removePosizione(posizione);
	}

	public void removePerManagerPosizione(ManagerPosizione manager) {
		if (manager == null)
			throw new RuntimeException("manager posizione nullo");
		if (! this.posizione.contains(manager.getLink()))
			throw new RuntimeException("rimozione autobus non presente");
		this.posizione.remove(manager.getLink());
	}



	// comportamento

	static enum Stato {NORMALE};
	Stato stato = Stato.NORMALE;

	public void fired(Evento e) {
		TaskExecutor.getInstance().perform(new AutorimessaFired(this, e));
	}
}
