package es.ejie.frmk.infraestructura.sms;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;

/**
 *  Clase base que contiene todos los datos necesarios de los que se compone un SMS.
 *  Los atributos de la clase son:
 *  <ul>
 *  <li>El acuse, que indica si se desea acuse de recibo en la dirección de correo indicada en el origen </li>
 *  <li>La lista de telefonos al que se enviará el SMS </li>
 *  <li>La fecha en que se envía el mensaje</li>
 *  <li>El texto del mensaje</li>
 *  <li>El tiempo de vida del mensaje, los minutos que permanecerá el mensaje en el servidor de mensajes</li>
 *  </ul>
 *  @version 2.0   Fecha: 07-jun-06
 */
public class Q70SMSMessage implements Serializable {
	
	private boolean acuse = false;
	private ArrayList listaTelefonos = new ArrayList();
	private Date fechaEnvio = null;
	private String texto = null;
	private Integer tVida = null;
	
	/**
	 * Constructor de la clase. Como minimo hay que pesarle un telefono de envío.
	 * @param smsTelefono
	 */
	public Q70SMSMessage (Q70SMSTelefono smsTelefono) {
		addTelefono(smsTelefono);
		setTexto(texto);
	}
	
	/**
	 * @return acuse
	 */
	public boolean getAcuse() {
		return acuse;
	}
	
	/**
	 * @param acuse
	 */
	public void setAcuse (boolean acuse) {
		this.acuse = acuse;
	}
	
	/**
	 * @return fecha de envio
	 */
	public Date getFechaEnvio() {
		return fechaEnvio;
	}
	
	/**
	 * @param fechaEnvio
	 */
	public void setFechaEnvio(Date fechaEnvio) {
		if (tVida==null)
		{
			this.fechaEnvio = fechaEnvio;
		}
	}
	
	/**
	 * @return texto del mensaje
	 */
	public String getTexto() {
		return texto;
	}
	
	/**
	 * @param texto del mensaje
	 */
	public void setTexto(String texto) {
		this.texto = texto;
	}
	
	/**
	 * @return tiempo de vida
	 */
	public Integer getTVida() {
		return tVida;
	}
	
	/**
	 * @param tiempo de vida
	 */
	public void setTVida(Integer vida) {
		if (fechaEnvio==null) {
			this.tVida=vida;
		}
	}
	
	/**
	 * @param telefono
	 */
	public void addTelefono (Q70SMSTelefono telefono)
	{
		listaTelefonos.add(telefono);
	}
	
	/**
	 * @param numeroTelefono
	 * @return Q70SMSTelefono
	 */
	public Q70SMSTelefono getTelefono (String numeroTelefono) {		
				
		for (int i=0; i<listaTelefonos.size(); i++) {
			if (numeroTelefono.trim().equals(((Q70SMSTelefono)listaTelefonos.get(i)).getNumeroTelefono().trim())) {
				return (Q70SMSTelefono)listaTelefonos.get(i);
			}
		}
		return null;
	}
	
	/**
	 * @param numeroTelefono
	 */
	public void removeTelefono (String numeroTelefono) {
		
		for (int i=0; i<listaTelefonos.size(); i++) {
			if (numeroTelefono.trim().equals(((Q70SMSTelefono)listaTelefonos.get(i)).getNumeroTelefono().trim())) {
				listaTelefonos.remove(i);
				break;
			}
		}
	}
	
	/**
	 * @param lista telefonos
	 */
	public void setAllTelefonos (ArrayList lista) {
		this.listaTelefonos=lista;
	}
	
	/**
	 * @return lista telefonos
	 */
	public ArrayList getAllTelefonos() {
		return this.listaTelefonos;
	}
	
	/**
	 * Borrar los telefonos
	 */
	public void removeAllTelefonos() {
		this.listaTelefonos.clear();
	}
}
