package com.ejie.y42b.model;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.validation.constraints.NotNull;

import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.map.annotate.JsonDeserialize;
import org.codehaus.jackson.map.annotate.JsonSerialize;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;

import com.ejie.x38.control.JsonDateDeserializer;
import com.ejie.x38.control.JsonDateSerializer;
import com.ejie.y42b.constantes.Y42bAgendaConstantes;

/**
 * * Contacto  
 * 
 *  
 */

public class Contacto implements java.io.Serializable {

	private static final long serialVersionUID = 1L;
	@Length(max = Y42bAgendaConstantes.NUM_40)
	private String contactoId;
	@Length(max = Y42bAgendaConstantes.NUM_40)
	private String entidadId;
	@Length(max = Y42bAgendaConstantes.NUM_255, message = "length.nombre")
	@NotEmpty(message = "required.contacto_nombre")
	@NotNull()
	private String nombre;
	private String cargo;
	@Length(max = Y42bAgendaConstantes.NUM_255, message = "length.telefono")
	// @NotEmpty(message = "required.telefono")
	// @NotNull()
	private String telefono;
	@Length(max = Y42bAgendaConstantes.NUM_255, message = "length.fax")
	private String fax;
	@Length(max = Y42bAgendaConstantes.NUM_255, message = "length.email")
	@Email(message = "invalidformat.email")
	private String email;
	@Length(max = Y42bAgendaConstantes.NUM_255, message = "length.url")
	// @URL(message = "invalidformat.url")
	private String url;
	@Length(max = Y42bAgendaConstantes.NUM_1)
	private String isnacional;
	@Length(max = Y42bAgendaConstantes.NUM_12)
	private String usuultmod;
	private Date fecultmod;
	@Length(max = Y42bAgendaConstantes.NUM_40)
	// @NotEmpty(message = "required.pais")
	private String noraPaisId;
	@Length(max = Y42bAgendaConstantes.NUM_40)
	private String nombrePais;
	@Length(max = Y42bAgendaConstantes.NUM_40)
	private String noraProvinciaId;
	@Length(max = Y42bAgendaConstantes.NUM_255)
	private String nombreProvincia;
	@Length(max = Y42bAgendaConstantes.NUM_40)
	private String noraMunicipioId;
	@Length(max = Y42bAgendaConstantes.NUM_255)
	private String nombreMunicipio;
	@Length(max = Y42bAgendaConstantes.NUM_40)
	private String noraLocalidadId;
	@Length(max = Y42bAgendaConstantes.NUM_255)
	private String nombreLocalidad;
	@Length(max = Y42bAgendaConstantes.NUM_40)
	private String noraCalleId;
	@Length(max = Y42bAgendaConstantes.NUM_255)
	private String nombreCalle;
	@Length(max = Y42bAgendaConstantes.NUM_40)
	private String noraCpId;
	@Length(max = Y42bAgendaConstantes.NUM_10)
	/*
	 * @NotEmpty(message = "required.codigoPostal")
	 * 
	 * @NotNull()
	 */
	private String nombreCp;

	@Length(max = Y42bAgendaConstantes.NUM_40)
	private String noraPortalId;
	@Length(max = Y42bAgendaConstantes.NUM_255)
	private String nombrePortal;
	@Length(max = Y42bAgendaConstantes.NUM_255)
	private String compleDirec;
	private List<Etiqueta> etiquetas = new ArrayList<Etiqueta>();
	private List<Entidad> entidads = new ArrayList<Entidad>();

	/**
	 * Method 'Contacto'.
	 * 
	 */
	public Contacto() {
	}

	/**
	 * Method 'Contacto'.
	 * 
	 * @param contactoId
	 *            String
	 * @param nombre
	 *            String
	 * @param cargo
	 *            String
	 * @param telefono
	 *            String
	 * @param fax
	 *            String
	 * @param email
	 *            String
	 * @param url
	 *            String
	 * @param isnacional
	 *            String
	 * @param usuultmod
	 *            String
	 * @param fecultmod
	 *            Date
	 * @param nombrePais
	 *            String
	 * @param noraProvinciaId
	 *            String
	 * @param nombreProvincia
	 *            String
	 * @param noraMunicipioId
	 *            String
	 * @param nombreMunicipio
	 *            String
	 * @param noraLocalidadId
	 *            String
	 * @param nombreLocalidad
	 *            String
	 * @param noraCalleId
	 *            String
	 * @param nombreCalle
	 *            String
	 * @param noraCpId
	 *            String
	 * @param nombreCp
	 *            String
	 * @param noraPortalId
	 *            String
	 * @param nombrePortal
	 *            String
	 * @param compleDirec
	 *            String
	 * @param noraPaisId
	 *            String
	 */
	public Contacto(String contactoId, String nombre, String cargo,
			String telefono, String fax, String email, String url,
			String isnacional, String usuultmod, Date fecultmod,
			String nombrePais, String noraProvinciaId, String nombreProvincia,
			String noraMunicipioId, String nombreMunicipio,
			String noraLocalidadId, String nombreLocalidad, String noraCalleId,
			String nombreCalle, String noraCpId, String nombreCp,
			String noraPortalId, String nombrePortal, String noraPaisId,
			String compleDirec) {
		this.contactoId = contactoId;
		this.nombre = nombre;
		this.cargo = cargo;
		this.telefono = telefono;
		this.fax = fax;
		this.email = email;
		this.url = url;
		this.isnacional = isnacional;
		this.usuultmod = usuultmod;
		this.fecultmod = fecultmod;
		this.nombrePais = nombrePais;
		this.noraProvinciaId = noraProvinciaId;
		this.nombreProvincia = nombreProvincia;
		this.noraMunicipioId = noraMunicipioId;
		this.nombreMunicipio = nombreMunicipio;
		this.noraLocalidadId = noraLocalidadId;
		this.nombreLocalidad = nombreLocalidad;
		this.noraCalleId = noraCalleId;
		this.nombreCalle = nombreCalle;
		this.noraCpId = noraCpId;
		this.nombreCp = nombreCp;
		this.noraPortalId = noraPortalId;
		this.nombrePortal = nombrePortal;
		this.noraPaisId = noraPaisId;
		this.compleDirec = compleDirec;
	}

	/**
	 * Method 'Contacto'.
	 * 
	 * @param contactoId
	 *            String
	 * @param nombre
	 *            String
	 * @param cargo
	 *            String
	 * @param telefono
	 *            String
	 * @param fax
	 *            String
	 * @param email
	 *            String
	 * @param url
	 *            String
	 * @param isnacional
	 *            String
	 * @param usuultmod
	 *            String
	 * @param fecultmod
	 *            Date
	 * @param nombrePais
	 *            String
	 * @param noraProvinciaId
	 *            String
	 * @param nombreProvincia
	 *            String
	 * @param noraMunicipioId
	 *            String
	 * @param nombreMunicipio
	 *            String
	 * @param noraLocalidadId
	 *            String
	 * @param nombreLocalidad
	 *            String
	 * @param noraCalleId
	 *            String
	 * @param nombreCalle
	 *            String
	 * @param noraCpId
	 *            String
	 * @param nombreCp
	 *            String
	 * @param noraPortalId
	 *            String
	 * @param nombrePortal
	 *            String
	 * @param noraPaisId
	 *            String
	 * @param compleDirec
	 *            String
	 * @param etiquetas
	 *            List<Etiqueta>
	 * @param entidads
	 *            List<Entidad>
	 */
	public Contacto(String contactoId, String nombre, String cargo,
			String telefono, String fax, String email, String url,
			String isnacional, String usuultmod, Date fecultmod,
			String nombrePais, String noraProvinciaId, String nombreProvincia,
			String noraMunicipioId, String nombreMunicipio,
			String noraLocalidadId, String nombreLocalidad, String noraCalleId,
			String nombreCalle, String noraCpId, String nombreCp,
			String noraPortalId, String nombrePortal, String noraPaisId,
			String compleDirec, List<Etiqueta> etiquetas, List<Entidad> entidads) {

		this.contactoId = contactoId;
		this.nombre = nombre;
		this.cargo = cargo;
		this.telefono = telefono;
		this.fax = fax;
		this.email = email;
		this.url = url;
		this.isnacional = isnacional;
		this.usuultmod = usuultmod;
		this.fecultmod = fecultmod;
		this.nombrePais = nombrePais;
		this.noraProvinciaId = noraProvinciaId;
		this.nombreProvincia = nombreProvincia;
		this.noraMunicipioId = noraMunicipioId;
		this.nombreMunicipio = nombreMunicipio;
		this.noraLocalidadId = noraLocalidadId;
		this.nombreLocalidad = nombreLocalidad;
		this.noraCalleId = noraCalleId;
		this.nombreCalle = nombreCalle;
		this.noraCpId = noraCpId;
		this.nombreCp = nombreCp;
		this.noraPortalId = noraPortalId;
		this.nombrePortal = nombrePortal;
		this.noraPaisId = noraPaisId;
		this.compleDirec = compleDirec;
		this.etiquetas = etiquetas;
		this.entidads = entidads;
	}

	/**
	 * Method 'getCompleDirec'.
	 * 
	 * @return String the compleDirec
	 */
	public String getCompleDirec() {
		return compleDirec;
	}

	/**
	 * Method 'setCompleDirec'.
	 * 
	 * @param compleDirec
	 *            String
	 */
	public void setCompleDirec(String compleDirec) {
		this.compleDirec = compleDirec;
	}

	/**
	 * Method 'getContactoId'.
	 * 
	 * @return String
	 */

	public String getContactoId() {
		return this.contactoId;
	}

	/**
	 * Method 'setContactoId'.
	 * 
	 * @param contactoId
	 *            String
	 * @return
	 */

	public void setContactoId(String contactoId) {
		this.contactoId = contactoId;
	}

	/**
	 * @return the entidadId
	 */
	public String getEntidadId() {
		return this.entidadId;
	}

	/**
	 * @param entidadId
	 *            the entidadId to set
	 */
	public void setEntidadId(String entidadId) {
		this.entidadId = entidadId;
	}

	/**
	 * Method 'getNombre'.
	 * 
	 * @return String
	 */

	public String getNombre() {
		return this.nombre;
	}

	/**
	 * Method 'setNombre'.
	 * 
	 * @param nombre
	 *            String
	 * @return
	 */

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	/**
	 * Method 'getCargo'.
	 * 
	 * @return String
	 */

	public String getCargo() {
		return this.cargo;
	}

	/**
	 * Method 'setCargo'.
	 * 
	 * @param cargo
	 *            String
	 * @return
	 */

	public void setCargo(String cargo) {
		this.cargo = cargo;
	}

	/**
	 * Method 'getTelefono'.
	 * 
	 * @return String
	 */

	public String getTelefono() {
		return this.telefono;
	}

	/**
	 * Method 'setTelefono'.
	 * 
	 * @param telefono
	 *            String
	 * @return
	 */

	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}

	/**
	 * Method 'getFax'.
	 * 
	 * @return String
	 */

	public String getFax() {
		return this.fax;
	}

	/**
	 * Method 'setFax'.
	 * 
	 * @param fax
	 *            String
	 * @return
	 */

	public void setFax(String fax) {
		this.fax = fax;
	}

	/**
	 * Method 'getEmail'.
	 * 
	 * @return String
	 */

	public String getEmail() {
		return this.email;
	}

	/**
	 * Method 'setEmail'.
	 * 
	 * @param email
	 *            String
	 * @return
	 */

	public void setEmail(String email) {
		this.email = email;
	}

	/**
	 * Method 'getUrl'.
	 * 
	 * @return String
	 */

	public String getUrl() {
		return this.url;
	}

	/**
	 * Method 'setUrl'.
	 * 
	 * @param url
	 *            String
	 * @return
	 */

	public void setUrl(String url) {
		this.url = url;
	}

	/**
	 * Method 'getIsnacional'.
	 * 
	 * @return String
	 */

	public String getIsnacional() {
		return this.isnacional;
	}

	/**
	 * Method 'setIsnacional'.
	 * 
	 * @param isnacional
	 *            String
	 * @return
	 */

	public void setIsnacional(String isnacional) {
		this.isnacional = isnacional;
	}

	/**
	 * Method 'getUsuultmod'.
	 * 
	 * @return String
	 */

	public String getUsuultmod() {
		return this.usuultmod;
	}

	/**
	 * Method 'setUsuultmod'.
	 * 
	 * @param usuultmod
	 *            String
	 * @return
	 */

	public void setUsuultmod(String usuultmod) {
		this.usuultmod = usuultmod;
	}

	/**
	 * Method 'getFecultmod'.
	 * 
	 * @return Date
	 */

	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getFecultmod() {
		return this.fecultmod;
	}

	/**
	 * Method 'setFecultmod'.
	 * 
	 * @param fecultmod
	 *            Date
	 * @return
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setFecultmod(Date fecultmod) {
		this.fecultmod = fecultmod;
	}

	/**
	 * Method 'getNombrePais'.
	 * 
	 * @return String
	 */

	public String getNombrePais() {
		return this.nombrePais;
	}

	/**
	 * Method 'setNombrePais'.
	 * 
	 * @param nombrePais
	 *            String
	 * @return
	 */

	public void setNombrePais(String nombrePais) {
		this.nombrePais = nombrePais;
	}

	/**
	 * Method 'getNoraProvinciaId'.
	 * 
	 * @return String
	 */

	public String getNoraProvinciaId() {
		return this.noraProvinciaId;
	}

	/**
	 * Method 'setNoraProvinciaId'.
	 * 
	 * @param noraProvinciaId
	 *            String
	 * @return
	 */

	public void setNoraProvinciaId(String noraProvinciaId) {
		this.noraProvinciaId = noraProvinciaId;
	}

	/**
	 * Method 'getNombreProvincia'.
	 * 
	 * @return String
	 */

	public String getNombreProvincia() {
		return this.nombreProvincia;
	}

	/**
	 * Method 'setNombreProvincia'.
	 * 
	 * @param nombreProvincia
	 *            String
	 * @return
	 */

	public void setNombreProvincia(String nombreProvincia) {
		this.nombreProvincia = nombreProvincia;
	}

	/**
	 * Method 'getNoraMunicipioId'.
	 * 
	 * @return String
	 */

	public String getNoraMunicipioId() {
		return this.noraMunicipioId;
	}

	/**
	 * Method 'setNoraMunicipioId'.
	 * 
	 * @param noraMunicipioId
	 *            String
	 * @return
	 */

	public void setNoraMunicipioId(String noraMunicipioId) {
		this.noraMunicipioId = noraMunicipioId;
	}

	/**
	 * Method 'getNombreMunicipio'.
	 * 
	 * @return String
	 */

	public String getNombreMunicipio() {
		return this.nombreMunicipio;
	}

	/**
	 * Method 'setNombreMunicipio'.
	 * 
	 * @param nombreMunicipio
	 *            String
	 * @return
	 */

	public void setNombreMunicipio(String nombreMunicipio) {
		this.nombreMunicipio = nombreMunicipio;
	}

	/**
	 * Method 'getNoraLocalidadId'.
	 * 
	 * @return String
	 */

	public String getNoraLocalidadId() {
		return this.noraLocalidadId;
	}

	/**
	 * Method 'setNoraLocalidadId'.
	 * 
	 * @param noraLocalidadId
	 *            String
	 * @return
	 */

	public void setNoraLocalidadId(String noraLocalidadId) {
		this.noraLocalidadId = noraLocalidadId;
	}

	/**
	 * Method 'getNombreLocalidad'.
	 * 
	 * @return String
	 */

	public String getNombreLocalidad() {
		return this.nombreLocalidad;
	}

	/**
	 * Method 'setNombreLocalidad'.
	 * 
	 * @param nombreLocalidad
	 *            String
	 * @return
	 */

	public void setNombreLocalidad(String nombreLocalidad) {
		this.nombreLocalidad = nombreLocalidad;
	}

	/**
	 * Method 'getNoraCalleId'.
	 * 
	 * @return String
	 */

	public String getNoraCalleId() {
		return this.noraCalleId;
	}

	/**
	 * Method 'setNoraCalleId'.
	 * 
	 * @param noraCalleId
	 *            String
	 * @return
	 */

	public void setNoraCalleId(String noraCalleId) {
		this.noraCalleId = noraCalleId;
	}

	/**
	 * Method 'getNombreCalle'.
	 * 
	 * @return String
	 */

	public String getNombreCalle() {
		return this.nombreCalle;
	}

	/**
	 * Method 'setNombreCalle'.
	 * 
	 * @param nombreCalle
	 *            String
	 * @return
	 */

	public void setNombreCalle(String nombreCalle) {
		this.nombreCalle = nombreCalle;
	}

	/**
	 * Method 'getNoraCpId'.
	 * 
	 * @return String
	 */

	public String getNoraCpId() {
		return this.noraCpId;
	}

	/**
	 * Method 'setNoraCpId'.
	 * 
	 * @param noraCpId
	 *            String
	 * @return
	 */

	public void setNoraCpId(String noraCpId) {
		this.noraCpId = noraCpId;
	}

	/**
	 * Method 'getNombreCp'.
	 * 
	 * @return String
	 */

	public String getNombreCp() {
		return this.nombreCp;
	}

	/**
	 * Method 'setNombreCp'.
	 * 
	 * @param nombreCp
	 *            String
	 * @return
	 */

	public void setNombreCp(String nombreCp) {
		this.nombreCp = nombreCp;
	}

	/**
	 * Method 'getNoraPortalId'.
	 * 
	 * @return String
	 */

	public String getNoraPortalId() {
		return this.noraPortalId;
	}

	/**
	 * Method 'setNoraPortalId'.
	 * 
	 * @param noraPortalId
	 *            String
	 * @return
	 */

	public void setNoraPortalId(String noraPortalId) {
		this.noraPortalId = noraPortalId;
	}

	/**
	 * Method 'getNombrePortal'.
	 * 
	 * @return String
	 */

	public String getNombrePortal() {
		return this.nombrePortal;
	}

	/**
	 * Method 'setNombrePortal'.
	 * 
	 * @param nombrePortal
	 *            String
	 * @return
	 */

	public void setNombrePortal(String nombrePortal) {
		this.nombrePortal = nombrePortal;
	}

	/**
	 * Method 'getNoraPaisId'.
	 * 
	 * @return String
	 */

	public String getNoraPaisId() {
		return this.noraPaisId;
	}

	/**
	 * Method 'setNoraPaisId'.
	 * 
	 * @param noraPaisId
	 *            String
	 * @return
	 */

	public void setNoraPaisId(String noraPaisId) {
		this.noraPaisId = noraPaisId;
	}

	/**
	 * Method 'getEtiquetas'.
	 * 
	 * @return List
	 */
	@JsonIgnore()
	public List<Etiqueta> getEtiquetas() {
		return this.etiquetas;
	}

	/**
	 * Method 'setEtiquetas'.
	 * 
	 * @param etiquetas
	 *            List
	 * @return
	 */
	public void setEtiquetas(List<Etiqueta> etiquetas) {
		this.etiquetas = etiquetas;
	}

	/**
	 * Method 'getEntidads'.
	 * 
	 * @return List
	 */
	@JsonIgnore()
	public List<Entidad> getEntidads() {
		return this.entidads;
	}

	/**
	 * Method 'setEntidads'.
	 * 
	 * @param entidads
	 *            List
	 * @return
	 */
	public void setEntidads(List<Entidad> entidads) {
		this.entidads = entidads;
	}

	/**
	 * Intended only for logging and debugging.
	 * 
	 * Here, the contents of every main field are placed into the result.
	 * 
	 * @return String
	 */
	@Override()
	public String toString() {
		StringBuilder result = new StringBuilder();
		result.append(this.getClass().getName()).append(" Object { ");
		result.append(" [ contactoId: ").append(this.contactoId).append(" ]");
		result.append(", [ nombre: ").append(this.nombre).append(" ]");
		result.append(", [ cargo: ").append(this.cargo).append(" ]");
		result.append(", [ telefono: ").append(this.telefono).append(" ]");
		result.append(", [ fax: ").append(this.fax).append(" ]");
		result.append(", [ email: ").append(this.email).append(" ]");
		result.append(", [ url: ").append(this.url).append(" ]");
		result.append(", [ isnacional: ").append(this.isnacional).append(" ]");
		result.append(", [ usuultmod: ").append(this.usuultmod).append(" ]");
		result.append(", [ fecultmod: ").append(this.fecultmod).append(" ]");
		result.append(", [ nombrePais: ").append(this.nombrePais).append(" ]");
		result.append(", [ noraProvinciaId: ").append(this.noraProvinciaId)
				.append(" ]");
		result.append(", [ nombreProvincia: ").append(this.nombreProvincia)
				.append(" ]");
		result.append(", [ noraMunicipioId: ").append(this.noraMunicipioId)
				.append(" ]");
		result.append(", [ nombreMunicipio: ").append(this.nombreMunicipio)
				.append(" ]");
		result.append(", [ noraLocalidadId: ").append(this.noraLocalidadId)
				.append(" ]");
		result.append(", [ nombreLocalidad: ").append(this.nombreLocalidad)
				.append(" ]");
		result.append(", [ noraCalleId: ").append(this.noraCalleId)
				.append(" ]");
		result.append(", [ nombreCalle: ").append(this.nombreCalle)
				.append(" ]");
		result.append(", [ noraCpId: ").append(this.noraCpId).append(" ]");
		result.append(", [ nombreCp: ").append(this.nombreCp).append(" ]");
		result.append(", [ noraPortalId: ").append(this.noraPortalId)
				.append(" ]");
		result.append(", [ nombrePortal: ").append(this.nombrePortal)
				.append(" ]");
		result.append(", [ noraPaisId: ").append(this.noraPaisId).append(" ]");
		result.append(", [ compleDirec: ").append(this.compleDirec)
				.append(" ]");
		result.append("}");
		return result.toString();
	}

}
