package com.ejie.m62fb.model;

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

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

import com.ejie.m62fb.model.base.AbstractM62FBModel;
import com.ejie.m62fb.model.direccion.Direccion;
import com.ejie.m62fb.model.documento.Documento;
import com.ejie.m62fb.model.tipos.TipoSiNo;
import com.ejie.m62fb.model.tipos.TipoTransmision;
import com.ejie.x38.serialization.JsonDateDeserializer;
import com.ejie.x38.serialization.JsonDateSerializer;

/**
 * M62r03t0- Table BD reference
 * 
XXXX
 */

public class ContratoVivienda extends AbstractM62FBModel implements
		java.io.Serializable {

	private static final long serialVersionUID = 1L;
	// Clave compuesta
	private Vivienda vivienda;
	private Propietario propietario;
	private ExpedienteVivienda expedienteVivienda;
	private TipoTransmision tipoTransmision;

	private TipoSiNo indRenuncia;
	private TipoSiNo indRevocacion;
	private Date fecTransmision;
	private Date fecEscritura;
	private Date fecEmpadron;
	private Direccion direccion;

	private TipoSiNo indVisado;
	private Date fecVisado;
	private Integer idContrato;
	private Date fecEntContrato;
	private String texObservaciones;
	private TipoSiNo indSolicitaAyuda;
	private TipoSiNo indVivAdaptada;
	private Date fecRenuncia;
	private Date fecRevocacion;
	private final List<Documento> documentos = new ArrayList<Documento>();
	private final List<Propietario> propietarios = new ArrayList<Propietario>();
	
	private Integer idM62ed4T0;

	/**
	 * Method 'M62r03t0'.
	 */
	public ContratoVivienda() {
		super();
	}

	/**
	 * Method 'ContratoVivienda'.
	 * 
	 * @param vivienda
	 *            Vivienda
	 * @param propietario
	 *            Propietario
	 */
	public ContratoVivienda(Vivienda vivienda, Propietario propietario) {
		super();
		this.vivienda = vivienda;
		this.propietario = propietario;
	}
	
	/**
	 * Method 'ContratoVivienda'.
	 * 
	 * @param vivienda
	 *            Vivienda
	 */
	public ContratoVivienda(Vivienda vivienda) {
	    super();
	    this.vivienda = vivienda;
	}

	
	
	/**
	 * @param idContrato
	 */
	public ContratoVivienda(Integer idContrato) {
		super();
		this.idContrato = idContrato;
	}

	/**
	 * Method 'ContratoVivienda'.
	 * 
	 * @param vivienda
	 *            BigDecimal
	 * @param propietario
	 *            BigDecimal
	 */
	public ContratoVivienda(BigDecimal vivienda, BigDecimal propietario) {
		super();
		this.vivienda = new Vivienda(vivienda);
		this.propietario = new Propietario(propietario);
	}

	/**
	 * Method 'getVivienda'
	 * 
	 * @return vivienda
	 */
	public Vivienda getVivienda() {
		return this.vivienda;
	}

	/**
	 * Method 'setVivienda'
	 * 
	 * @param vivienda
	 *            Vivienda
	 */
	public void setVivienda(Vivienda vivienda) {
		this.vivienda = vivienda;
	}

	/**
	 * Method 'getPropietario'
	 * 
	 * @return propietario
	 */
	public Propietario getPropietario() {
		return this.propietario;
	}

	/**
	 * Method 'setPropietario'
	 * 
	 * @param propietario
	 *            Propietario
	 */
	public void setPropietario(Propietario propietario) {
		this.propietario = propietario;
	}

	/**
	 * Method 'getExpedienteVivienda'
	 * 
	 * @return expedienteVivienda
	 */
	public ExpedienteVivienda getExpedienteVivienda() {
		return this.expedienteVivienda;
	}

	/**
	 * Method 'setExpedienteVivienda'
	 * 
	 * @param expedienteVivienda
	 *            ExpedienteVivienda
	 */
	public void setExpedienteVivienda(ExpedienteVivienda expedienteVivienda) {
		this.expedienteVivienda = expedienteVivienda;
	}

	/**
	 * Method 'getTipoTransmision'
	 * 
	 * @return tipoTransmision
	 */
	public TipoTransmision getTipoTransmision() {
		return this.tipoTransmision;
	}

	/**
	 * Method 'setTipoTransmision'
	 * 
	 * @param tipoTransmision
	 *            TipoTransmision
	 */
	public void setTipoTransmision(TipoTransmision tipoTransmision) {
		this.tipoTransmision = tipoTransmision;
	}

	/**
	 * Method 'getIndRenuncia'
	 * 
	 * @return indRenuncia
	 */
	public TipoSiNo getIndRenuncia() {
		return this.indRenuncia;
	}

	/**
	 * Method 'setIndRenuncia'
	 * 
	 * @param indRenuncia
	 *            TipoSiNo
	 */
	public void setIndRenuncia(TipoSiNo indRenuncia) {
		this.indRenuncia = indRenuncia;
	}

	/**
	 * Method 'getIndRevocacion'
	 * 
	 * @return indRevocacion
	 */
	public TipoSiNo getIndRevocacion() {
		return this.indRevocacion;
	}

	/**
	 * Method 'setIndRevocacion'
	 * 
	 * @param indRevocacion
	 *            TipoSiNo
	 */
	public void setIndRevocacion(TipoSiNo indRevocacion) {
		this.indRevocacion = indRevocacion;
	}

	/**
	 * Method 'getFecTransmision'
	 * 
	 * @return fecTransmision
	 */
	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getFecTransmision() {
		return this.fecTransmision;
	}

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

	/**
	 * Method 'getFecEscritura'
	 * 
	 * @return fecEscritura
	 */
	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getFecEscritura() {
		return this.fecEscritura;
	}

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

	/**
	 * Method 'getFecEmpadron'
	 * 
	 * @return fecEmpadron
	 */
	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getFecEmpadron() {
		return this.fecEmpadron;
	}

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

	/**
	 * Method 'getDireccion'
	 * 
	 * @return direccion
	 */
	public Direccion getDireccion() {
		return this.direccion;
	}

	/**
	 * Method 'setDireccion'
	 * 
	 * @param direccion
	 *            Direccion
	 */
	public void setDireccion(Direccion direccion) {
		this.direccion = direccion;
	}

	/**
	 * Method 'getIndVisado'
	 * 
	 * @return indVisado
	 */
	public TipoSiNo getIndVisado() {
		return this.indVisado;
	}

	/**
	 * Method 'setIndVisado'
	 * 
	 * @param indVisado
	 *            TipoSiNo
	 */
	public void setIndVisado(TipoSiNo indVisado) {
		this.indVisado = indVisado;
	}

	/**
	 * Method 'getFecVisado'
	 * 
	 * @return fecVisado
	 */
	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getFecVisado() {
		return this.fecVisado;
	}

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

	/**
	 * Method 'getIdContrato'
	 * 
	 * @return idContrato
	 */
	public Integer getIdContrato() {
		return this.idContrato;
	}

	/**
	 * Method 'setIdContrato'
	 * 
	 * @param idContrato
	 *            Integer
	 */
	public void setIdContrato(Integer idContrato) {
		this.idContrato = idContrato;
	}

	/**
	 * Method 'getFecEntContrato'
	 * 
	 * @return fecEntContrato
	 */
	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getFecEntContrato() {
		return this.fecEntContrato;
	}

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

	/**
	 * Method 'getTexObservaciones'
	 * 
	 * @return texObservaciones
	 */
	public String getTexObservaciones() {
		return this.texObservaciones;
	}

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

	/**
	 * Method 'getIndSolicitaAyuda'
	 * 
	 * @return indSolicitaAyuda
	 */
	public TipoSiNo getIndSolicitaAyuda() {
		return this.indSolicitaAyuda;
	}

	/**
	 * Method 'setIndSolicitaAyuda'
	 * 
	 * @param indSolicitaAyuda
	 *            TipoSiNo
	 */
	public void setIndSolicitaAyuda(TipoSiNo indSolicitaAyuda) {
		this.indSolicitaAyuda = indSolicitaAyuda;
	}

	/**
	 * Method 'getIndVivAdaptada'
	 * 
	 * @return indVivAdaptada
	 */
	public TipoSiNo getIndVivAdaptada() {
		return this.indVivAdaptada;
	}

	/**
	 * Method 'setIndVivAdaptada'
	 * 
	 * @param indVivAdaptada
	 *            TipoSiNo
	 */
	public void setIndVivAdaptada(TipoSiNo indVivAdaptada) {
		this.indVivAdaptada = indVivAdaptada;
	}

	/**
	 * Method 'getFecRenuncia'
	 * 
	 * @return fecRenuncia
	 */
	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getFecRenuncia() {
		return this.fecRenuncia;
	}

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

	/**
	 * Method 'getFecRevocacion'
	 * 
	 * @return fecRevocacion
	 */
	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getFecRevocacion() {
		return this.fecRevocacion;
	}

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

	/**
	 * Method 'getDocumentos'
	 * 
	 * @return documentos
	 */
	public List<Documento> getDocumentos() {
		return this.documentos;
	}

	/**
	 * Method 'getPropietarios'
	 * 
	 * @return propietarios
	 */
	public List<Propietario> getPropietarios() {
		return this.propietarios;
	}

	public Integer getIdM62ed4T0() {
        return idM62ed4T0;
    }

    public void setIdM62ed4T0(Integer idM62ed4T0) {
        this.idM62ed4T0 = idM62ed4T0;
    }

    /*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		StringBuilder builder = new StringBuilder();
		builder.append("ContratoVivienda [vivienda=");
		builder.append(vivienda);
		builder.append(", propietario=");
		builder.append(propietario);
		builder.append(", expedienteVivienda=");
		builder.append(expedienteVivienda);
		builder.append(", tipoTransmision=");
		builder.append(tipoTransmision);
		builder.append(", indRenuncia=");
		builder.append(indRenuncia);
		builder.append(", indRevocacion=");
		builder.append(indRevocacion);
		builder.append(", fecTransmision=");
		builder.append(fecTransmision);
		builder.append(", fecEscritura=");
		builder.append(fecEscritura);
		builder.append(", fecEmpadron=");
		builder.append(fecEmpadron);
		builder.append(", direccion=");
		builder.append(direccion);
		builder.append(", indVisado=");
		builder.append(indVisado);
		builder.append(", fecVisado=");
		builder.append(fecVisado);
		builder.append(", idContrato=");
		builder.append(idContrato);
		builder.append(", fecEntContrato=");
		builder.append(fecEntContrato);
		builder.append(", texObservaciones=");
		builder.append(texObservaciones);
		builder.append(", indSolicitaAyuda=");
		builder.append(indSolicitaAyuda);
		builder.append(", indVivAdaptada=");
		builder.append(indVivAdaptada);
		builder.append(", fecRenuncia=");
		builder.append(fecRenuncia);
		builder.append(", fecRevocacion=");
		builder.append(fecRevocacion);
		builder.append(", documentos=");
		builder.append(documentos);
		builder.append(", propietarios=");
		builder.append(propietarios);
		builder.append("]");
		return builder.toString();
	}
}