package com.ejie.ab04b.model;

import java.util.List;

import org.codehaus.jackson.map.annotate.JsonDeserialize;
import org.codehaus.jackson.map.annotate.JsonSerialize;

import com.ejie.x38.serialization.JsonDateDeserializer;
import com.ejie.x38.serialization.JsonDateSerializer;

/**
 * 
 * @author UDA
 */
public class VimpresionDoc implements java.io.Serializable {

	private static final long serialVersionUID = 1L;
	// Clave compuesta
	private String tipo;
	private String ter;
	private String anio;
	private Integer num;
	private Long idtram;
	private Long tipotram;
	private String procedure;
	private java.util.Date fecpre;
	private Integer canalNotif;
	private String oid;
	private String nomDoc;

	// Filtro
	private Integer numExpDesde;
	private Integer numExpHasta;
	private java.util.Date fecpreDesde;
	private java.util.Date fecpreHasta;
	private String periodoPresentacion;
	private List<String> tipoSeleccion;

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

	/**
	 * Method 'VimpresionDoc'.
	 * 
	 * tipo String ter String ano String num Integer idtram Long tipotram Long
	 * procedure String fecpre java.util.Date canalNotif Integer oid String
	 * nomDoc String
	 * 
	 * @param tipo
	 *            the tipo
	 * @param ter
	 *            the ter
	 * @param ano
	 *            the ano
	 * @param num
	 *            the num
	 * @param idtram
	 *            the idtram
	 * @param tipotram
	 *            the tipotram
	 * @param procedure
	 *            the procedure
	 * @param fecpre
	 *            the fecpre
	 * @param canalNotif
	 *            the canal notif
	 * @param oid
	 *            the oid
	 * @param nomDoc
	 *            the nom doc
	 */
	public VimpresionDoc(String tipo, String ter, String ano, Integer num,
			Long idtram, Long tipotram, String procedure,
			java.util.Date fecpre, Integer canalNotif, String oid, String nomDoc) {
		this.tipo = tipo;
		this.ter = ter;
		this.anio = ano;
		this.num = num;
		this.idtram = idtram;
		this.tipotram = tipotram;
		this.procedure = procedure;
		this.fecpre = fecpre;
		this.canalNotif = canalNotif;
		this.oid = oid;
		this.nomDoc = nomDoc;
	}

	/**
	 * Method 'VimpresionDoc'.
	 * 
	 * tipo String ter String ano String num Integer
	 * 
	 * @param tipo
	 *            the tipo
	 * @param ter
	 *            the ter
	 * @param ano
	 *            the ano
	 * @param num
	 *            the num
	 */
	public VimpresionDoc(String tipo, String ter, String ano, Integer num) {

		this.tipo = tipo;
		this.ter = ter;
		this.anio = ano;
		this.num = num;
	}

	/**
	 * Method 'getTipo'.
	 * 
	 * String
	 * 
	 * @return the tipo
	 */

	public String getTipo() {
		return this.tipo;
	}

	/**
	 * Method 'setTipo'.
	 * 
	 * tipo String
	 * 
	 * @param tipo
	 *            the new tipo
	 */

	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

	/**
	 * Method 'getTer'.
	 * 
	 * String
	 * 
	 * @return the ter
	 */

	public String getTer() {
		return this.ter;
	}

	/**
	 * Method 'setTer'.
	 * 
	 * ter String
	 * 
	 * @param ter
	 *            the new ter
	 */

	public void setTer(String ter) {
		this.ter = ter;
	}

	/**
	 * Method 'getAno'.
	 * 
	 * String
	 * 
	 * @return the anio
	 */

	public String getAnio() {
		return this.anio;
	}

	/**
	 * Method 'setAno'.
	 * 
	 * ano String
	 * 
	 * @param ano
	 *            the new anio
	 */

	public void setAnio(String ano) {
		this.anio = ano;
	}

	/**
	 * Method 'getNum'.
	 * 
	 * Integer
	 * 
	 * @return the num
	 */

	public Integer getNum() {
		return this.num;
	}

	/**
	 * Method 'setNum'.
	 * 
	 * num Integer
	 * 
	 * @param num
	 *            the new num
	 */

	public void setNum(Integer num) {
		this.num = num;
	}

	/**
	 * Method 'getIdtram'.
	 * 
	 * Long
	 * 
	 * @return the idtram
	 */

	public Long getIdtram() {
		return this.idtram;
	}

	/**
	 * Method 'setIdtram'.
	 * 
	 * idtram Long
	 * 
	 * @param idtram
	 *            the new idtram
	 */

	public void setIdtram(Long idtram) {
		this.idtram = idtram;
	}

	/**
	 * Method 'getTipotram'.
	 * 
	 * Long
	 * 
	 * @return the tipotram
	 */

	public Long getTipotram() {
		return this.tipotram;
	}

	/**
	 * Method 'setTipotram'.
	 * 
	 * tipotram Long
	 * 
	 * @param tipotram
	 *            the new tipotram
	 */

	public void setTipotram(Long tipotram) {
		this.tipotram = tipotram;
	}

	/**
	 * Method 'getProcedure'.
	 * 
	 * String
	 * 
	 * @return the procedure
	 */

	public String getProcedure() {
		return this.procedure;
	}

	/**
	 * Method 'setProcedure'.
	 * 
	 * procedure String
	 * 
	 * @param procedure
	 *            the new procedure
	 */

	public void setProcedure(String procedure) {
		this.procedure = procedure;
	}

	/**
	 * Method 'getFecpre'.
	 * 
	 * java.util.Date
	 * 
	 * @return the fecpre
	 */
	@JsonSerialize(using = JsonDateSerializer.class)
	public java.util.Date getFecpre() {
		return this.fecpre;
	}

	/**
	 * Method 'setFecpre'.
	 * 
	 * fecpre java.util.Date
	 * 
	 * @param fecpre
	 *            the new fecpre
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setFecpre(java.util.Date fecpre) {
		this.fecpre = fecpre;
	}

	/**
	 * Gets the canal notif.
	 * 
	 * the canalNotif
	 * 
	 * @return the canal notif
	 */
	public Integer getCanalNotif() {
		return canalNotif;
	}

	/**
	 * Sets the canal notif.
	 * 
	 * canalNotif the canalNotif to set
	 * 
	 * @param canalNotif
	 *            the new canal notif
	 */
	public void setCanalNotif(Integer canalNotif) {
		this.canalNotif = canalNotif;
	}

	/**
	 * Gets the oid.
	 * 
	 * the oid
	 * 
	 * @return the oid
	 */
	public String getOid() {
		return oid;
	}

	/**
	 * Sets the oid.
	 * 
	 * oid the oid to set
	 * 
	 * @param oid
	 *            the new oid
	 */
	public void setOid(String oid) {
		this.oid = oid;
	}

	/**
	 * Gets the nom doc.
	 * 
	 * the nomDoc
	 * 
	 * @return the nom doc
	 */
	public String getNomDoc() {
		return nomDoc;
	}

	/**
	 * Sets the nom doc.
	 * 
	 * nomDoc the nomDoc to set
	 * 
	 * @param nomDoc
	 *            the new nom doc
	 */
	public void setNomDoc(String nomDoc) {
		this.nomDoc = nomDoc;
	}

	/**
	 * Gets the num exp desde.
	 * 
	 * the numExpDesde
	 * 
	 * @return the num exp desde
	 */
	public Integer getNumExpDesde() {
		return numExpDesde;
	}

	/**
	 * Sets the num exp desde.
	 * 
	 * numExpDesde the numExpDesde to set
	 * 
	 * @param numExpDesde
	 *            the new num exp desde
	 */
	public void setNumExpDesde(Integer numExpDesde) {
		this.numExpDesde = numExpDesde;
	}

	/**
	 * Gets the num exp hasta.
	 * 
	 * the numExpHasta
	 * 
	 * @return the num exp hasta
	 */
	public Integer getNumExpHasta() {
		return numExpHasta;
	}

	/**
	 * Sets the num exp hasta.
	 * 
	 * numExpHasta the numExpHasta to set
	 * 
	 * @param numExpHasta
	 *            the new num exp hasta
	 */
	// @JsonDeserialize(using = JsonDateDeserializer.class)
	public void setNumExpHasta(Integer numExpHasta) {
		this.numExpHasta = numExpHasta;
	}

	/**
	 * Gets the fecpre desde.
	 * 
	 * the fecpreDesde
	 * 
	 * @return the fecpre desde
	 */
	@JsonSerialize(using = JsonDateSerializer.class)
	public java.util.Date getFecpreDesde() {
		return fecpreDesde;
	}

	/**
	 * Sets the fecpre desde.
	 * 
	 * fecpreDesde the fecpreDesde to set
	 * 
	 * @param fecpreDesde
	 *            the new fecpre desde
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setFecpreDesde(java.util.Date fecpreDesde) {
		this.fecpreDesde = fecpreDesde;
	}

	/**
	 * Gets the fecpre hasta.
	 * 
	 * the fecpreHasta
	 * 
	 * @return the fecpre hasta
	 */
	@JsonSerialize(using = JsonDateSerializer.class)
	public java.util.Date getFecpreHasta() {
		return fecpreHasta;
	}

	/**
	 * Sets the fecpre hasta.
	 * 
	 * fecpreHasta the fecpreHasta to set
	 * 
	 * @param fecpreHasta
	 *            the new fecpre hasta
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setFecpreHasta(java.util.Date fecpreHasta) {
		this.fecpreHasta = fecpreHasta;
	}

	/**
	 * Gets the periodo presentacion.
	 * 
	 * the periodoPresentacion
	 * 
	 * @return the periodo presentacion
	 */
	public String getPeriodoPresentacion() {
		return periodoPresentacion;
	}

	/**
	 * Gets the tipo seleccion.
	 * 
	 * the tipoSeleccion
	 * 
	 * @return the tipo seleccion
	 */
	public List<String> getTipoSeleccion() {
		return tipoSeleccion;
	}

	/**
	 * Sets the tipo seleccion.
	 * 
	 * tipoSeleccion the tipoSeleccion to set
	 * 
	 * @param tipoSeleccion
	 *            the new tipo seleccion
	 */
	public void setTipoSeleccion(List<String> tipoSeleccion) {
		this.tipoSeleccion = tipoSeleccion;
	}

	/**
	 * Sets the periodo presentacion.
	 * 
	 * periodoPresentacion the periodoPresentacion to set
	 * 
	 * @param periodoPresentacion
	 *            the new periodo presentacion
	 */
	public void setPeriodoPresentacion(String periodoPresentacion) {
		this.periodoPresentacion = periodoPresentacion;
	}

	/**
	 * Intended only for logging and debugging.
	 * 
	 * Here, the contents of every main field are placed into the result.
	 * 
	 * String
	 * 
	 * @return the string
	 */
	@Override
	public String toString() {
		StringBuilder result = new StringBuilder();
		result.append(this.getClass().getName()).append(" Object { ");
		// Clave compuesta

		result.append("[ tipo: ").append(this.tipo).append(" ]");

		result.append(", [ ter: ").append(this.ter).append(" ]");

		result.append(", [ ano: ").append(this.anio).append(" ]");

		result.append(", [ num: ").append(this.num).append(" ]");

		result.append(", [ idtram: ").append(this.idtram).append(" ]");

		result.append(", [ tipotram: ").append(this.tipotram).append(" ]");

		result.append(", [ procedure: ").append(this.procedure).append(" ]");

		result.append(", [ fecpre: ").append(this.fecpre).append(" ]");
		result.append("}");
		return result.toString();
	}

}
