package hu.ppke.itk.java.zh1.feladat2;

public class Airplane extends Thread {

	private int number;
	private Airport airport;

	public Airplane(int number, Airport airport) {
		this.airport = airport;
		this.number = number;

		AirplaneSimulator.log(this + " létrejött.");
	}

	@Override
	public void run() {
		AirplaneSimulator.log(this + " belépett a légtérbe.");
		while (!airport.tryToLand(this)) {
			AirplaneSimulator.log(this
					+ " megkísérelte a leszállást, de nem volt szabad a futópálya, vagy nem volt elég dokkoló.");
			try {
				Thread.sleep(AirplaneSimulator.RETRYTIME);
			} catch (Exception e) {
				AirplaneSimulator.log(this + " miközben az újraleszálláshoz körözött, hibát talált.");
			}
		}

		try {
			Thread.sleep(AirplaneSimulator.BOARDINGTIME);
		} catch (Exception e) {
			AirplaneSimulator.log(this + " miközben a földön pihent, hibát talált.");
		}

		while (!airport.tryToTakeOff(this)) {
			AirplaneSimulator.log(this + " megkísérelte a felszállást, de nem volt szabad a futópálya.");
			try {
				Thread.sleep(AirplaneSimulator.RETRYTIME);
			} catch (Exception e) {
				AirplaneSimulator.log(this + " miközben az újrafelszálláshoz várakozott, hibát talált.");
			}
		}
		AirplaneSimulator.log(this + " elhagyta a légteret.");
	}

	@Override
	public String toString() {
		return "<Repülő " + number + ">";
	}

}
