package com.ejie.y42b.model;

import com.ejie.x38.control.JsonDateDeserializer;
import com.ejie.x38.control.JsonDateSerializer;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.map.annotate.JsonDeserialize;
import org.codehaus.jackson.map.annotate.JsonSerialize;

/**
 * * Comunicacion  
 * 
 *  
 */

public class Comunicacion implements java.io.Serializable {

	private static final long serialVersionUID = 1L;
	private Long m4cocomu;
	private TipoComunicacion tipoComunicacion;
	private Entidad organismo;
	private Date m4feenv;
	private Date m4fecad;
	private String m4noremi;
	private String m4tesubject;
	private String m4tecomu;
	private Long m4nudest;
	private Long m4nufiladj;
	private Integer m4incomact;
	private Integer m4incombl;
	private String indicadorLeidos;
	private String m4envioid;
	private List<DestComunicacion> destComunicacions = new ArrayList<DestComunicacion>();
	private List<ComunicacionFile> comunicacionFiles = new ArrayList<ComunicacionFile>();

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

	/**
	 * Method 'Comunicacion'.
	 * 
	 * @param m4cocomu
	 *            Long
	 * @param organismo
	 *            Entidad
	 * @param m4feenv
	 *            Date
	 * @param m4fecad
	 *            Date
	 * @param m4noremi
	 *            String
	 * @param m4tesubject
	 *            String
	 * @param m4tecomu
	 *            String
	 * @param m4nudest
	 *            Long
	 * @param m4nufiladj
	 *            Long
	 * @param m4incomact
	 *            Integer
	 * @param m4incombl
	 *            Integer
	 * @param tipoComunicacion
	 *            TipoComunicacion
	 */
	public Comunicacion(Long m4cocomu, Entidad organismo, Date m4feenv,
			Date m4fecad, String m4noremi, String m4tesubject, String m4tecomu,
			Long m4nudest, Long m4nufiladj, Integer m4incomact,
			Integer m4incombl, TipoComunicacion tipoComunicacion) {
		this.m4cocomu = m4cocomu;
		this.tipoComunicacion = tipoComunicacion;
		this.organismo = organismo;
		this.m4feenv = m4feenv;
		this.m4fecad = m4fecad;
		this.m4noremi = m4noremi;
		this.m4tesubject = m4tesubject;
		this.m4tecomu = m4tecomu;
		this.m4nudest = m4nudest;
		this.m4nufiladj = m4nufiladj;
		this.m4incomact = m4incomact;
		this.m4incombl = m4incombl;
	}

	/**
	 * Method 'Comunicacion'.
	 * 
	 * @param m4cocomu
	 *            Long
	 * @param organismo
	 *            Entidad
	 * @param m4feenv
	 *            Date
	 * @param m4fecad
	 *            Date
	 * @param m4noremi
	 *            String
	 * @param m4tesubject
	 *            String
	 * @param m4tecomu
	 *            String
	 * @param m4nudest
	 *            Long
	 * @param m4nufiladj
	 *            Long
	 * @param m4incomact
	 *            Integer
	 * @param m4incombl
	 *            Integer
	 * @param m4envioid
	 *            String
	 * @param tipoComunicacion
	 *            TipoComunicacion
	 */
	public Comunicacion(Long m4cocomu, Entidad organismo, Date m4feenv,
			Date m4fecad, String m4noremi, String m4tesubject, String m4tecomu,
			Long m4nudest, Long m4nufiladj, Integer m4incomact,
			Integer m4incombl, String m4envioid,
			TipoComunicacion tipoComunicacion) {
		this.m4cocomu = m4cocomu;
		this.tipoComunicacion = tipoComunicacion;
		this.organismo = organismo;
		this.m4feenv = m4feenv;
		this.m4fecad = m4fecad;
		this.m4noremi = m4noremi;
		this.m4tesubject = m4tesubject;
		this.m4tecomu = m4tecomu;
		this.m4nudest = m4nudest;
		this.m4nufiladj = m4nufiladj;
		this.m4incomact = m4incomact;
		this.m4incombl = m4incombl;
		this.m4envioid = m4envioid;
	}

	/**
	 * Method 'Comunicacion'.
	 * 
	 * @param m4cocomu
	 *            Long
	 * @param organismo
	 *            Entidad
	 * @param m4feenv
	 *            Date
	 * @param m4fecad
	 *            Date
	 * @param m4noremi
	 *            String
	 * @param m4tesubject
	 *            String
	 * @param m4tecomu
	 *            String
	 * @param m4nudest
	 *            Long
	 * @param m4nufiladj
	 *            Long
	 * @param m4incomact
	 *            Integer
	 * @param m4incombl
	 *            Integer
	 * @param tipoComunicacion
	 *            TipoComunicacion
	 * @param destComunicacions
	 *            List<DestComunicacion>
	 * @param comunicacionFiles
	 *            List<ComunicacionFile>
	 */
	public Comunicacion(Long m4cocomu, Entidad organismo, Date m4feenv,
			Date m4fecad, String m4noremi, String m4tesubject, String m4tecomu,
			Long m4nudest, Long m4nufiladj, Integer m4incomact,
			Integer m4incombl, TipoComunicacion tipoComunicacion,
			List<DestComunicacion> destComunicacions,
			List<ComunicacionFile> comunicacionFiles) {

		this.m4cocomu = m4cocomu;
		this.tipoComunicacion = tipoComunicacion;
		this.organismo = organismo;
		this.m4feenv = m4feenv;
		this.m4fecad = m4fecad;
		this.m4noremi = m4noremi;
		this.m4tesubject = m4tesubject;
		this.m4tecomu = m4tecomu;
		this.m4nudest = m4nudest;
		this.m4nufiladj = m4nufiladj;
		this.m4incomact = m4incomact;
		this.m4incombl = m4incombl;
		this.destComunicacions = destComunicacions;
		this.comunicacionFiles = comunicacionFiles;
	}

	/**
	 * Method 'getM4cocomu'.
	 * 
	 * @return Long
	 */

	public Long getM4cocomu() {
		return this.m4cocomu;
	}

	/**
	 * Method 'setM4cocomu'.
	 * 
	 * @param m4cocomu
	 *            Long
	 * @return
	 */

	public void setM4cocomu(Long m4cocomu) {
		this.m4cocomu = m4cocomu;
	}

	/**
	 * Method 'getTipoComunicacion'.
	 * 
	 * @return TipoComunicacion
	 */
	@JsonIgnore
	public TipoComunicacion getTipoComunicacion() {
		return this.tipoComunicacion;
	}

	/**
	 * Method 'setTipoComunicacion'.
	 * 
	 * @param tipoComunicacion
	 *            TipoComunicacion
	 * @return
	 */

	public void setTipoComunicacion(TipoComunicacion tipoComunicacion) {
		this.tipoComunicacion = tipoComunicacion;
	}

	/**
	 * @param organismo
	 *            the organismo to set
	 */
	public void setOrganismo(Entidad organismo) {
		this.organismo = organismo;
	}

	/**
	 * @return the organismo
	 */
	@JsonIgnore
	public Entidad getOrganismo() {
		return organismo;
	}

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

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

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

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

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

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

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

	public String getM4noremi() {
		return this.m4noremi;
	}

	/**
	 * Method 'setM4noremi'.
	 * 
	 * @param m4noremi
	 *            String
	 * @return
	 */

	public void setM4noremi(String m4noremi) {
		this.m4noremi = m4noremi;
	}

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

	public String getM4tesubject() {
		return this.m4tesubject;
	}

	/**
	 * Method 'setM4tesubject'.
	 * 
	 * @param m4tesubject
	 *            String
	 * @return
	 */

	public void setM4tesubject(String m4tesubject) {
		this.m4tesubject = m4tesubject;
	}

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

	public String getM4tecomu() {
		return this.m4tecomu;
	}

	/**
	 * Method 'setM4tecomu'.
	 * 
	 * @param m4tecomu
	 *            String
	 * @return
	 */

	public void setM4tecomu(String m4tecomu) {
		this.m4tecomu = m4tecomu;
	}

	/**
	 * Method 'getM4nudest'.
	 * 
	 * @return Long
	 */

	public Long getM4nudest() {
		return this.m4nudest;
	}

	/**
	 * Method 'setM4nudest'.
	 * 
	 * @param m4nudest
	 *            Long
	 * @return
	 */

	public void setM4nudest(Long m4nudest) {
		this.m4nudest = m4nudest;
	}

	/**
	 * Method 'getM4nufiladj'.
	 * 
	 * @return Long
	 */

	public Long getM4nufiladj() {
		return this.m4nufiladj;
	}

	/**
	 * Method 'setM4nufiladj'.
	 * 
	 * @param m4nufiladj
	 *            Long
	 * @return
	 */

	public void setM4nufiladj(Long m4nufiladj) {
		this.m4nufiladj = m4nufiladj;
	}

	/**
	 * Method 'getM4incomact'.
	 * 
	 * @return Integer
	 */

	public Integer getM4incomact() {
		return this.m4incomact;
	}

	/**
	 * Method 'setM4incomact'.
	 * 
	 * @param m4incomact
	 *            Integer
	 * @return
	 */

	public void setM4incomact(Integer m4incomact) {
		this.m4incomact = m4incomact;
	}

	/**
	 * Method 'getM4incombl'.
	 * 
	 * @return Integer
	 */

	public Integer getM4incombl() {
		return this.m4incombl;
	}

	/**
	 * Method 'setM4incombl'.
	 * 
	 * @param m4incombl
	 *            Integer
	 * @return
	 */

	public void setM4incombl(Integer m4incombl) {
		this.m4incombl = m4incombl;
	}

	/**
	 * Method 'getDestComunicacions'.
	 * 
	 * @return List
	 */
	@JsonIgnore
	public List<DestComunicacion> getDestComunicacions() {
		return this.destComunicacions;
	}

	/**
	 * Method 'setDestComunicacions'.
	 * 
	 * @param destComunicacions
	 *            List
	 * @return
	 */
	public void setDestComunicacions(List<DestComunicacion> destComunicacions) {
		this.destComunicacions = destComunicacions;
	}

	/**
	 * Method 'getComunicacionFiles'.
	 * 
	 * @return List
	 */
	@JsonIgnore
	public List<ComunicacionFile> getComunicacionFiles() {
		return this.comunicacionFiles;
	}

	/**
	 * Method 'setComunicacionFiles'.
	 * 
	 * @param comunicacionFiles
	 *            List
	 * @return
	 */
	public void setComunicacionFiles(List<ComunicacionFile> comunicacionFiles) {
		this.comunicacionFiles = comunicacionFiles;
	}

	/**
	 * @return the indicadorLeidos
	 */
	public String getIndicadorLeidos() {
		return indicadorLeidos;
	}

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

	/**
	 * @return the m4envioid
	 */
	public String getM4envioid() {
		return m4envioid;
	}

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

	/**
	 * 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(" [ m4cocomu: ").append(this.m4cocomu).append(" ]");
		result.append(", [ m4feenv: ").append(this.m4feenv).append(" ]");
		result.append(", [ m4fecad: ").append(this.m4fecad).append(" ]");
		result.append(", [ m4noremi: ").append(this.m4noremi).append(" ]");
		result.append(", [ m4tesubject: ").append(this.m4tesubject)
				.append(" ]");
		result.append(", [ m4tecomu: ").append(this.m4tecomu).append(" ]");
		result.append(", [ m4nudest: ").append(this.m4nudest).append(" ]");
		result.append(", [ m4nufiladj: ").append(this.m4nufiladj).append(" ]");
		result.append(", [ m4incomact: ").append(this.m4incomact).append(" ]");
		result.append(", [ m4incombl: ").append(this.m4incombl).append(" ]");
		result.append(", [ indicadorLeidos: ").append(this.indicadorLeidos)
				.append(" ]");
		result.append("}");
		return result.toString();
	}

}
