package com.ejie.m62fb.model;

import java.math.BigDecimal;

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

import com.ejie.m62fb.utils.serializers.JsonBigDecimalDeserializer;
import com.ejie.m62fb.utils.serializers.JsonBigDecimalSerializer;
import com.ejie.m62fb.model.base.AbstractM62FBModel;
import com.ejie.m62fb.model.persona.Persona;
import com.ejie.m62fb.model.tipos.TipoParentesco;
import com.ejie.m62fb.model.tipos.TipoSiNo;

/**
 * M62r04t0- Table BD reference
 * 
XXXX
 */

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

	private static final long serialVersionUID = 1L;
	// Clave compuesta
	private BigDecimal numPropietario;
	private Vivienda vivienda;
	private ExpedienteVivienda expedienteVivienda;
	private Persona persona;

	private TipoParentesco tipoParentesco;
	private TipoSiNo indTitular;

	private TipoSiNo indVivAdaptada;
	private BigDecimal porTitularidad;
	private TipoSiNo indEnvRegProp;
	private TipoSiNo indPrimerSolic;
	
	private Integer idContrato;
	private Integer idM62r04t0;

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

	/**
	 * Method 'Propietario'.
	 * 
	 * @param numPropietario
	 */
	public Propietario(BigDecimal numPropietario) {
		super();
		this.numPropietario = numPropietario;
	}

	
	/**
	 * @param idM62r04t0
	 */
	public Propietario(Integer idM62r04t0) {
		super();
		this.idM62r04t0 = idM62r04t0;
	}

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

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

	/**
	 * Method 'getNumPropietario'
	 * 
	 * @return numPropietario
	 */
	public BigDecimal getNumPropietario() {
		return this.numPropietario;
	}

	/**
	 * Method 'setNumPropietario'
	 * 
	 * @param numPropietario
	 *            BigDecimal
	 */
	public void setNumPropietario(BigDecimal numPropietario) {
		this.numPropietario = numPropietario;
	}

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

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

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

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

	/**
	 * Method 'getPersona'
	 * 
	 * @return persona
	 */
	public Persona getPersona() {
		return this.persona;
	}

	/**
	 * Method 'setPersona'
	 * 
	 * @param persona
	 *            Persona
	 */
	public void setPersona(Persona persona) {
		this.persona = persona;
	}

	/**
	 * Method 'getTipoParentesco'
	 * 
	 * @return tipoParentesco
	 */
	public TipoParentesco getTipoParentesco() {
		return this.tipoParentesco;
	}

	/**
	 * Method 'setTipoParentesco'
	 * 
	 * @param tipoParentesco
	 *            TipoParentesco
	 */
	public void setTipoParentesco(TipoParentesco tipoParentesco) {
		this.tipoParentesco = tipoParentesco;
	}

	/**
	 * Method 'getIndTitular'
	 * 
	 * @return indTitular
	 */
	public TipoSiNo getIndTitular() {
		return this.indTitular;
	}

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

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

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

	/**
	 * Method 'getPorTitularidad'
	 * 
	 * @return porTitularidad
	 */
	@JsonSerialize(using = JsonBigDecimalSerializer.class)
	public BigDecimal getPorTitularidad() {
		return this.porTitularidad;
	}

	/**
	 * Method 'setPorTitularidad'
	 * 
	 * @param porTitularidad
	 *            BigDecimal
	 */
	@JsonDeserialize(using = JsonBigDecimalDeserializer.class)
	public void setPorTitularidad(BigDecimal porTitularidad) {
		this.porTitularidad = porTitularidad;
	}

	/**
	 * Method 'getIndEnvRegProp'
	 * 
	 * @return indEnvRegProp
	 */
	public TipoSiNo getIndEnvRegProp() {
		return this.indEnvRegProp;
	}

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

	/**
	 * Method 'getIndPrimerSolic'
	 * 
	 * @return indPrimerSolic
	 */
	public TipoSiNo getIndPrimerSolic() {
		return this.indPrimerSolic;
	}

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

		
	/**
	 * @return the idContrato
	 */
	public Integer getIdContrato() {
		return idContrato;
	}

	/**
	 * @param idContrato the idContrato to set
	 */
	public void setIdContrato(Integer idContrato) {
		this.idContrato = idContrato;
	}

	/**
	 * @return the idM62r04t0
	 */
	public Integer getIdM62r04t0() {
		return idM62r04t0;
	}

	/**
	 * @param idM62r04t0 the idM62r04t0 to set
	 */
	public void setIdM62r04t0(Integer idM62r04t0) {
		this.idM62r04t0 = idM62r04t0;
	}

	/**
	 * 
	 * @return String
	 */
	@Override
	public String toString() {
		StringBuilder builder = new StringBuilder();
		builder.append("Propietario [numPropietario=");
		builder.append(numPropietario);
		builder.append(", vivienda=");
		builder.append(vivienda);
		builder.append(", expedienteVivienda=");
		builder.append(expedienteVivienda);
		builder.append(", persona=");
		builder.append(persona);
		builder.append(", tipoParentesco=");
		builder.append(tipoParentesco);
		builder.append(", indTitular=");
		builder.append(indTitular);
		builder.append(", indVivAdaptada=");
		builder.append(indVivAdaptada);
		builder.append(", porTitularidad=");
		builder.append(porTitularidad);
		builder.append(", indEnvRegProp=");
		builder.append(indEnvRegProp);
		builder.append(", indPrimerSolic=");
		builder.append(indPrimerSolic);
		builder.append("]");
		return builder.toString();
	}
}
