_x000D_
package domeinLaag;_x000D_
_x000D_
// Imports_x000D_
import java.util.HashSet;_x000D_
import java.util.Iterator;_x000D_
import java.util.TreeMap;_x000D_
_x000D_
/**_x000D_
 * Een object van deze klasse representeert één luchthaven._x000D_
 * Een Luchthaven heeft een naam en een code (afkorting)._x000D_
 * Eventueel heeft de luchthaven ook een werkplaats._x000D_
 * Tot slot ligt de luchthaven in een land._x000D_
 */_x000D_
public class Luchthaven_x000D_
{_x000D_
	// Attributes_x000D_
	private String naam = "";			// De naam van de luchthaven._x000D_
	private String code = "";			// De code (afkorting) van de luchthaven._x000D_
	private boolean werkPlaats = false;	// Of de luchthaven een werkplaats heeft of niet._x000D_
	_x000D_
	// Relaties_x000D_
	private Land land;	// In welk land de luchthaven ligt._x000D_
	private static HashSet<Luchthaven> alleLuchthavens = new HashSet<Luchthaven>();	// Een statische HashSet van alle luchthavens._x000D_
	_x000D_
	// Constructors_x000D_
	/**_x000D_
	 * Constructor voor het aanmaken van een Luchthaven. Wordt gebruikt door Main om de boel even te vullen._x000D_
	 * Dit zodat er ook wat te testen valt._x000D_
	 * @param nm	de naam van de luchthaven_x000D_
	 * @param cd	de code (afkorting) van de luchthaven_x000D_
	 * @param wp	true als de luchthaven een werkplaats heeft, anders false_x000D_
	 * @param ln	het land waar de luchthaven in ligt_x000D_
	 */_x000D_
	public Luchthaven (String nm, String cd, boolean wp, Land ln)_x000D_
	{_x000D_
		this.naam = nm;_x000D_
		this.code = cd;_x000D_
		this.werkPlaats = wp;_x000D_
		this.land = ln;_x000D_
		alleLuchthavens.add(this);_x000D_
		land.addLuchthaven(this);_x000D_
	}_x000D_
_x000D_
	/**_x000D_
	 * Constructor voor het aanmaken van een Luchthaven. Wordt gebruikt om in_x000D_
	 * de RegLuchthavenController. De diverse attributen worden met zet-methoden naderhand gevuld._x000D_
	 */_x000D_
	public Luchthaven ()_x000D_
	{_x000D_
	}	_x000D_
	_x000D_
	// Setters_x000D_
	/**_x000D_
	 * Deze methode zet de naam van het Luchthaven._x000D_
	 * @param nm	de naam van de Luchthaven_x000D_
	 * @throws java.lang.IllegalArgumentException als de naam al bestaat in dat land_x000D_
	 * of als de naam geen geldige waarde heeft_x000D_
	 */_x000D_
	public void setNaam (String nm) throws IllegalArgumentException_x000D_
	{_x000D_
		if (land.getLuchthavens().get(nm.trim()) != null)_x000D_
		{_x000D_
			throw new IllegalArgumentException("Naam bestaat al!");_x000D_
		}_x000D_
		else if (nm.trim().length() == 0)_x000D_
		{_x000D_
			throw new IllegalArgumentException("Naam heeft geen geldige waarde!");_x000D_
		}_x000D_
		else_x000D_
		{_x000D_
			this.naam = nm.trim();_x000D_
		}_x000D_
	}_x000D_
_x000D_
	/**_x000D_
	 * Deze methode zet de code (afkorting) van de Luchthaven._x000D_
	 * @param code	de code (afkorting) van de Luchthaven_x000D_
	 */_x000D_
	public void setCode (String code)_x000D_
	{_x000D_
		this.code = code;_x000D_
	}_x000D_
_x000D_
	/**_x000D_
	 * Deze methode zet het land waar de Luchthaven in ligt._x000D_
	 * Hiertoe moet ook een aanpassing gedaan worden in het land._x000D_
	 * Eerst moet de luchthaven namelijk uit het oude land verwijderd worden._x000D_
	 * Het toevoegen aan het nieuwe land (en het verwijderen uit het oude) hoeft_x000D_
	 * alleen te gebeuren als de luchthaven al aan alleLuchthavens	toegevoegd._x000D_
	 * Zo niet, dan	deze luchthaven namelijk nog nooit bewaard._x000D_
	 * @param land	het land waar de Luchthaven in ligt_x000D_
	 */_x000D_
	public void setLand (Land land)_x000D_
	{_x000D_
		if (alleLuchthavens.contains(this))		// Indien true	het land al eens bewaard._x000D_
		{_x000D_
			this.land.removeLuchthaven(this);	// Eerst de luchthaven verwijderen uit het oude land._x000D_
		}_x000D_
		this.land = land;						// Vervolgens het land veranderen._x000D_
		if (alleLuchthavens.contains(this))		// Indien true	het land al eens bewaard._x000D_
		{_x000D_
			this.land.addLuchthaven(this);		// Tot slot de luchthaven toevoegen aan het nieuwe land._x000D_
		}_x000D_
	}	_x000D_
	_x000D_
	/**_x000D_
	 * Deze methode zet of de Luchthaven een werkplaats heeft of niet._x000D_
	 * @param wp	true als de Luchthaven een werkplaats heeft en anders false_x000D_
	 */_x000D_
	public void setWerkPlaats (boolean wp)_x000D_
	{_x000D_
		werkPlaats = wp;_x000D_
	}	_x000D_
	_x000D_
	// Getters_x000D_
	/**_x000D_
	 * Deze methode geeft de naam van de Luchthaven._x000D_
	 * @return	de naam van de Luchthaven_x000D_
	 */_x000D_
	public String getNaam ()_x000D_
	{_x000D_
		return naam;_x000D_
	}_x000D_
_x000D_
	/**_x000D_
	 * Deze methode geeft de code van de Luchthaven._x000D_
	 * @return	de code (afkorting) van de Luchthaven_x000D_
	 */_x000D_
	public String getCode ()_x000D_
	{_x000D_
		return this.code;_x000D_
	}_x000D_
_x000D_
	/**_x000D_
	 * Deze methode geeft true als er een werkplaats is en anders false._x000D_
	 * @return	true als er een werkplaats is op de Luchthaven_x000D_
	 */_x000D_
	public boolean getWerkPlaats ()_x000D_
	{_x000D_
		return werkPlaats;_x000D_
	}_x000D_
_x000D_
	/**_x000D_
	 * Deze methode geeft het Land waar de Luchthaven ligt._x000D_
	 * @return	het Land waar de Luchthaven ligt_x000D_
	 */_x000D_
	public Land getLand ()_x000D_
	{_x000D_
		return land;_x000D_
	}_x000D_
	_x000D_
	/**_x000D_
	 * Deze statische methode geeft alle luchthavennamen en Luchthavens terug._x000D_
	 * @return	een TreeMap van luchthavennamen en Luchthavens_x000D_
	 */_x000D_
	public static TreeMap<String, Luchthaven> getAlleLuchthavens ()_x000D_
	{_x000D_
		TreeMap<String, Luchthaven> alleLh = new TreeMap<String, Luchthaven>();_x000D_
		for (Iterator<Luchthaven> i = alleLuchthavens.iterator(); i.hasNext();)_x000D_
		{_x000D_
			Luchthaven lh = i.next();_x000D_
			alleLh.put(lh.naam, lh);_x000D_
		}_x000D_
		return alleLh;_x000D_
	}		_x000D_
_x000D_
	// Overige Methodes_x000D_
	/**_x000D_
	 * Deze methode bewaart deze Luchthaven door hem toe te voegen aan de Luchthavens van het land en alleLuchthavens._x000D_
	 * @throws domeinLaag.LuchthavenException	als nog niet alle attributen een waarde hebben_x000D_
	 */_x000D_
	public void bewaar () throws LuchthavenException_x000D_
	{_x000D_
		if (land == null)_x000D_
		{_x000D_
			throw new LuchthavenException("Land niet ingevuld!");_x000D_
		}_x000D_
		else if (naam.isEmpty())_x000D_
		{_x000D_
			throw new LuchthavenException("Naam niet ingevuld!");_x000D_
		}_x000D_
		else if (code.isEmpty())_x000D_
		{_x000D_
			throw new LuchthavenException("Code niet ingevuld!");_x000D_
		}_x000D_
		else_x000D_
		{_x000D_
			alleLuchthavens.add(this);_x000D_
			land.addLuchthaven(this);_x000D_
		}_x000D_
	}_x000D_
}_x000D_

/**_x000D_
	 * Constructor voor het aanmaken van een Luchthaven. Wordt gebruikt door Main om de boel even te vullen._x000D_
	 * Dit zodat er ook wat te testen valt._x000D_
	 * @param nm	de naam van de luchthaven_x000D_
	 * @param cd	de code (afkorting) van de luchthaven_x000D_
	 * @param wp	true als de luchthaven een werkplaats heeft, anders false_x000D_
	 * @param ln	het land waar de luchthaven in ligt_x000D_
	 */
_x000D_
package domeinLaag;_x000D_
_x000D_
// Imports_x000D_
import java.util.HashSet;_x000D_
import java.util.Iterator;_x000D_
import java.util.TreeMap;_x000D_
_x000D_
/**_x000D_
 * Een object van deze klasse representeert één luchthaven._x000D_
 * Een Luchthaven heeft een naam en een code (afkorting)._x000D_
 * Eventueel heeft de luchthaven ook een werkplaats._x000D_
 * Tot slot ligt de luchthaven in een land._x000D_
 */_x000D_
public class Luchthaven_x000D_
{_x000D_
	// Attributes_x000D_
	private String naam = "";			// De naam van de luchthaven._x000D_
	private String code = "";			// De code (afkorting) van de luchthaven._x000D_
	private boolean werkPlaats = false;	// Of de luchthaven een werkplaats heeft of niet._x000D_
	_x000D_
	// Relaties_x000D_
	private Land land;	// In welk land de luchthaven ligt._x000D_
	private static HashSet<Luchthaven> alleLuchthavens = new HashSet<Luchthaven>();	// Een statische HashSet van alle luchthavens._x000D_
	_x000D_
	// Constructors_x000D_
	/**_x000D_
	 * Constructor voor het<SUF>*/_x000D_
	public Luchthaven (String nm, String cd, boolean wp, Land ln)_x000D_
	{_x000D_
		this.naam = nm;_x000D_
		this.code = cd;_x000D_
		this.werkPlaats = wp;_x000D_
		this.land = ln;_x000D_
		alleLuchthavens.add(this);_x000D_
		land.addLuchthaven(this);_x000D_
	}_x000D_
_x000D_
	/**_x000D_
	 * Constructor voor het aanmaken van een Luchthaven. Wordt gebruikt om in_x000D_
	 * de RegLuchthavenController. De diverse attributen worden met zet-methoden naderhand gevuld._x000D_
	 */_x000D_
	public Luchthaven ()_x000D_
	{_x000D_
	}	_x000D_
	_x000D_
	// Setters_x000D_
	/**_x000D_
	 * Deze methode zet de naam van het Luchthaven._x000D_
	 * @param nm	de naam van de Luchthaven_x000D_
	 * @throws java.lang.IllegalArgumentException als de naam al bestaat in dat land_x000D_
	 * of als de naam geen geldige waarde heeft_x000D_
	 */_x000D_
	public void setNaam (String nm) throws IllegalArgumentException_x000D_
	{_x000D_
		if (land.getLuchthavens().get(nm.trim()) != null)_x000D_
		{_x000D_
			throw new IllegalArgumentException("Naam bestaat al!");_x000D_
		}_x000D_
		else if (nm.trim().length() == 0)_x000D_
		{_x000D_
			throw new IllegalArgumentException("Naam heeft geen geldige waarde!");_x000D_
		}_x000D_
		else_x000D_
		{_x000D_
			this.naam = nm.trim();_x000D_
		}_x000D_
	}_x000D_
_x000D_
	/**_x000D_
	 * Deze methode zet de code (afkorting) van de Luchthaven._x000D_
	 * @param code	de code (afkorting) van de Luchthaven_x000D_
	 */_x000D_
	public void setCode (String code)_x000D_
	{_x000D_
		this.code = code;_x000D_
	}_x000D_
_x000D_
	/**_x000D_
	 * Deze methode zet het land waar de Luchthaven in ligt._x000D_
	 * Hiertoe moet ook een aanpassing gedaan worden in het land._x000D_
	 * Eerst moet de luchthaven namelijk uit het oude land verwijderd worden._x000D_
	 * Het toevoegen aan het nieuwe land (en het verwijderen uit het oude) hoeft_x000D_
	 * alleen te gebeuren als de luchthaven al aan alleLuchthavens	toegevoegd._x000D_
	 * Zo niet, dan	deze luchthaven namelijk nog nooit bewaard._x000D_
	 * @param land	het land waar de Luchthaven in ligt_x000D_
	 */_x000D_
	public void setLand (Land land)_x000D_
	{_x000D_
		if (alleLuchthavens.contains(this))		// Indien true	het land al eens bewaard._x000D_
		{_x000D_
			this.land.removeLuchthaven(this);	// Eerst de luchthaven verwijderen uit het oude land._x000D_
		}_x000D_
		this.land = land;						// Vervolgens het land veranderen._x000D_
		if (alleLuchthavens.contains(this))		// Indien true	het land al eens bewaard._x000D_
		{_x000D_
			this.land.addLuchthaven(this);		// Tot slot de luchthaven toevoegen aan het nieuwe land._x000D_
		}_x000D_
	}	_x000D_
	_x000D_
	/**_x000D_
	 * Deze methode zet of de Luchthaven een werkplaats heeft of niet._x000D_
	 * @param wp	true als de Luchthaven een werkplaats heeft en anders false_x000D_
	 */_x000D_
	public void setWerkPlaats (boolean wp)_x000D_
	{_x000D_
		werkPlaats = wp;_x000D_
	}	_x000D_
	_x000D_
	// Getters_x000D_
	/**_x000D_
	 * Deze methode geeft de naam van de Luchthaven._x000D_
	 * @return	de naam van de Luchthaven_x000D_
	 */_x000D_
	public String getNaam ()_x000D_
	{_x000D_
		return naam;_x000D_
	}_x000D_
_x000D_
	/**_x000D_
	 * Deze methode geeft de code van de Luchthaven._x000D_
	 * @return	de code (afkorting) van de Luchthaven_x000D_
	 */_x000D_
	public String getCode ()_x000D_
	{_x000D_
		return this.code;_x000D_
	}_x000D_
_x000D_
	/**_x000D_
	 * Deze methode geeft true als er een werkplaats is en anders false._x000D_
	 * @return	true als er een werkplaats is op de Luchthaven_x000D_
	 */_x000D_
	public boolean getWerkPlaats ()_x000D_
	{_x000D_
		return werkPlaats;_x000D_
	}_x000D_
_x000D_
	/**_x000D_
	 * Deze methode geeft het Land waar de Luchthaven ligt._x000D_
	 * @return	het Land waar de Luchthaven ligt_x000D_
	 */_x000D_
	public Land getLand ()_x000D_
	{_x000D_
		return land;_x000D_
	}_x000D_
	_x000D_
	/**_x000D_
	 * Deze statische methode geeft alle luchthavennamen en Luchthavens terug._x000D_
	 * @return	een TreeMap van luchthavennamen en Luchthavens_x000D_
	 */_x000D_
	public static TreeMap<String, Luchthaven> getAlleLuchthavens ()_x000D_
	{_x000D_
		TreeMap<String, Luchthaven> alleLh = new TreeMap<String, Luchthaven>();_x000D_
		for (Iterator<Luchthaven> i = alleLuchthavens.iterator(); i.hasNext();)_x000D_
		{_x000D_
			Luchthaven lh = i.next();_x000D_
			alleLh.put(lh.naam, lh);_x000D_
		}_x000D_
		return alleLh;_x000D_
	}		_x000D_
_x000D_
	// Overige Methodes_x000D_
	/**_x000D_
	 * Deze methode bewaart deze Luchthaven door hem toe te voegen aan de Luchthavens van het land en alleLuchthavens._x000D_
	 * @throws domeinLaag.LuchthavenException	als nog niet alle attributen een waarde hebben_x000D_
	 */_x000D_
	public void bewaar () throws LuchthavenException_x000D_
	{_x000D_
		if (land == null)_x000D_
		{_x000D_
			throw new LuchthavenException("Land niet ingevuld!");_x000D_
		}_x000D_
		else if (naam.isEmpty())_x000D_
		{_x000D_
			throw new LuchthavenException("Naam niet ingevuld!");_x000D_
		}_x000D_
		else if (code.isEmpty())_x000D_
		{_x000D_
			throw new LuchthavenException("Code niet ingevuld!");_x000D_
		}_x000D_
		else_x000D_
		{_x000D_
			alleLuchthavens.add(this);_x000D_
			land.addLuchthaven(this);_x000D_
		}_x000D_
	}_x000D_
}_x000D_
