package es.ejie.frmk.infraestructura.mail;

import java.io.Serializable;

/**
 * Clase que engloba toda la estructura del email a enviar. Contendra la
 * configuración de salida para el servidor SMTP referenciado al email que se
 * envia. Se configuran las siguientes características opcionales:
 * <ul>
 * <li> Host SMTP</li>
 * <li> Puerto SMTP</li>
 * <li> Autentificacion</li>
 * <li> Comportamiento en caso de error de una dirección de correo: Verdadero,
 * se envia al resto de direcciones aunque falle una. Falso, no se envia a
 * ninguna en caso de que una dirección sea incorrecta.</li>
 * </ul>
 * @version 2.0 Fecha: 22-mar-06
 */
public class Q70MailEnvelope implements Serializable {

	private String hostSMTP = null;
	private String portSMTP = null;
	private Boolean sendPartial;
	private Q70MailAuthentication mailAuthentication = null;
	private Q70MailMessage mailMessage = null;

	/**
	 * Constructor de la clase Q70MailEnvelope
	 */
	public Q70MailEnvelope() {
		super();
	}

	/**
	 * Constructor de la clase Q70MailEnvelope
	 * @param host Servidor SMTP 
	 * @param puerto Puerto del Servidor SMTP 
	 * @param sendPartial Comportamiento en caso de error de una dirección de
	 * correo: Verdadero, se envia al resto de direcciones aunque falle una.
	 * Falso, no se envia a ninguna en caso de que una dirección sea incorrecta.
	 * @param authentication Objeto Q70MailAuthentication que representa la
	 * autenticación necesaria en el servidor SMTP para el envío de un mail.
	 * @param message Objeto Q70MailMessage que representa un mail. 
	 */
	public Q70MailEnvelope(String host, String puerto, Boolean sendPartial, Q70MailAuthentication authentication, Q70MailMessage message) {

		this.hostSMTP = host;
		this.portSMTP = puerto;
		this.mailAuthentication = authentication;
		this.mailMessage = message;
		this.sendPartial = sendPartial;
	}

	/**
	 * @return mail Authentication
	 */
	public Q70MailAuthentication getAuthentication() {
		return mailAuthentication;
	}

	/**
	 * Establece la autenticación en caso de que el servidor SMTP necesite
	 * autenticación.
	 * @param mailAuthentication
	 */
	public void setAuthentication(Q70MailAuthentication mailAuthentication) {
		this.mailAuthentication = mailAuthentication;
	}

	/**
	 * @return hostSMTP
	 */
	public String getHost() {
		return hostSMTP;
	}

	/**
	 * Establece el host del servidor SMTP en caso de ser diferente al de por defecto.
	 * @param hostSMTP
	 */
	public void setHost(String hostSMTP) {
		this.hostSMTP = hostSMTP;
	}

	/**
	 * @return referencia al Mensaje de Email
	 */
	public Q70MailMessage getMessage() {
		return mailMessage;
	}

	/**
	 * @param mailMessage
	 */
	public void setMessage(Q70MailMessage mailMessage) {
		this.mailMessage = mailMessage;
	}

	/**
	 * @return puerto SMTP
	 */
	public String getPuerto() {
		return portSMTP;
	}

	/**
	 * Establece el puerto del servidor SMTP en caso de ser diferente al de por defecto.
	 * @param portSMTP
	 */
	public void setPuerto(String portSMTP) {
		this.portSMTP = portSMTP;
	}

	/**
	 * @return indicador de enviar mails si falla uno
	 */
	public Boolean getSendPartial() {
		return sendPartial;
	}

	/**
	 * Sobreescribe el comportamiento por defecto de la propiedad sendPartial.
	 * Comportamiento en caso de error de una dirección de
	 * correo: Verdadero, se envia al resto de direcciones aunque falle una.
	 * Falso, no se envia a ninguna en caso de que una dirección sea incorrecta.
	 * @param sendPartial
	 */
	public void setSendPartial(Boolean sendPartial) {
		this.sendPartial = sendPartial;
	}
}
