package es.ejie.frmk.infraestructura.mail;

/**
 * Clase Fachada que crea una nueva instancia, en caso de que no exista, o
 * retorna la que tenemos. Asigna el componente delegado desde el MBean y su
 * comportamiento.
 * @version 2.0 Fecha: 22-mar-06
 */
public class Q70GestorMail implements Q70GestorMailInterface {

	private Q70GestorMailInterface gestorMailDelegado = null;
	private static Q70GestorMail instancia = null;

	private Q70GestorMail() {
		super();
	}

	/**
	 * @param mail que se envia
	 */
	public void dispatch(Q70MailEnvelope mail) throws Exception {
		this.getComponenteDelegado().dispatch(mail); 
	}

	/**
	 * @param gestorMailDelegado
	 */
	public void setComponenteDelegado(Q70GestorMailInterface gestorMailDelegado) {
		this.gestorMailDelegado = gestorMailDelegado;
	}

	/**
	 * @return Componente Delegado
	 */
	public Q70GestorMailInterface getComponenteDelegado()
	{
		if (null==this.gestorMailDelegado) {
			this.gestorMailDelegado = Q70GestorMailServidor.getSingleton();
		}
		return this.gestorMailDelegado;
	}

	/**
	 * Devuelve la instancia del gestor de Mail. En caso de que no exista la crea.
	 * @return Instancia del gestor de Mail
	 */
	public static Q70GestorMail getSingleton() {
		if (instancia == null)
			instancia = new Q70GestorMail();

		return instancia;
	}
}
