
/** Java class "EtatBanqueInitialisee.java" generated from Poseidon for UML.
 *  Poseidon for UML is developed by <A HREF="http://www.gentleware.com">Gentleware</A>.
 *  Generated with <A HREF="http://jakarta.apache.org/velocity/">velocity</A> template engine.
 */
package com.developpez.etat;

/**
 * Cette classe represente l'etat initialise mais sans agence d'une banque.
 */
public class EtatBanqueInitialisee implements EtatBanque {

	public EtatBanqueInitialisee(Banque banque) {
		if (null == banque) { // he he on represente l'etat d'une banque s'il vous plait
			throw new IllegalArgumentException("L'etat d'une banque est necessairement associe a la banque qu'il represente");
		}
		this.banque = banque;
	}
	
	/**
	 * Pas d'agence enregistre pour le moment donc impossible d'en supprimer
	 * @see com.developpez.etat.EtatBanque#delAgence(com.developpez.etat.Agence)
	 */
	public void delAgence(Agence agence) {
		throw new IllegalStateException("La banque ne contient pas d'agence, impossible d'en supprimer");
	}

	/**
	 * Nous n'avons pas d'agence, il est donc possible de supprimer cette banque
	 * @see com.developpez.etat.EtatBanque#delete()
	 */
	public void delete() {
		// pas de garde on passe donc sans probleme
		
		//code de suppression de la banque
	}

	/**
	 * Ajoutons donc cette agence
	 * @see com.developpez.etat.EtatBanque#addAgence(com.developpez.etat.Agence)
	 */
	public void addAgence(Agence agence) {
		// pas de garde sur cette transition donc rien a verifier ?
		
		if (null == agence) { // evitons quand meme d'ajouter "rien"
			throw new IllegalArgumentException("Impossible d'ajouter une agence nulle");
		}
		
		banque.getAgences().add(agence);
		
		// et la transition
		banque.setEtat(new EtatBanqueADesAgences(banque));
	}

	/**
	 * On a deja valider cette banque c'est assez inutile de recommencer, mais ce n'est pas grave
	 * donc je ne leve pas d'exception
	 * @see com.developpez.etat.EtatBanque#validate()
	 */
	public void validate() {
	}
	
	private final Banque banque;
 }



