public class Autobus implements Listener {

	// dati

	private String targa;
	private String modello;
	private int manutenzione;
	private LinkPosizione posizione;

	public Autobus(String targa, String modello, int manutenzione, Autorimessa rimessa) {
		this.targa = targa;
		this.modello = modello;
		this.manutenzione = manutenzione;
		this.setPosizione(new LinkPosizione(this, rimessa));
	}

	public String getTarga() {
		return this.targa;
	}

	public String getModello() {
		return this.modello;
	}

	public int getManutenzione() {
		return this.manutenzione;
	}

	public void setManutenzione(int manutenzione) {
		this.manutenzione = manutenzione;
	}

	public LinkPosizione getPosizione() {
		return this.posizione;
	}

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

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



	// comportamento 

	static enum Stato {INAUTORIMESSA, INSERVIZIO, ROTTURA, INMANUTENZIONE};
	Stato stato = Stato.INAUTORIMESSA;
	public Stato getStato() {
		return this.stato;
	}

	Autista precedente;

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

