package com.ejie.m62fb.model;

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

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.direccion.Direccion;
import com.ejie.m62fb.model.persona.Persona;
import com.ejie.m62fb.model.tipos.TipoAcceso;
import com.ejie.m62fb.model.tipos.TipoAdjudicacion;
import com.ejie.m62fb.model.tipos.TipoComoAdjudicacion;
import com.ejie.m62fb.model.tipos.TipoIniciativa;
import com.ejie.m62fb.model.tipos.TipoPromotor;
import com.ejie.m62fb.model.tipos.TipoPropietarios;
import com.ejie.m62fb.model.tipos.TipoQuienAdjudicacion;
import com.ejie.m62fb.model.tipos.TipoRegulacion;
import com.ejie.x38.serialization.JsonDateDeserializer;
import com.ejie.x38.serialization.JsonDateSerializer;

/**
 * AlojamientoDotacional.
 * 
XXXX
 */
public class AlojamientoDotacional extends AbstractM62FBModel implements
		java.io.Serializable {

	private static final long serialVersionUID = 1L;

	private Integer idAlojReg;
	private Integer idAlojamiento;
	private String numExpediente;
	private String codAlojamiento;
	private Integer idEmplazamiento;

	private Direccion direccion;

	private BigDecimal supUtilAloj;
	private String indAlojAdaptada;
	private Integer numDormitorios;
	private Integer numBanyos;
	private String numFijoIbi;
	private String codRefCatastral;

	// Accesos a la R09
	private TipoRegulacion tipoRegulacion;
	private TipoAcceso tipoAcceso;
	private TipoIniciativa tipoIniciativa;
	private TipoPromotor tipoPromotor;
	private TipoPropietarios tipoPropietarios;
	private TipoAdjudicacion tipoAdjudicacion;
	private TipoQuienAdjudicacion tipoQuienAdjudicacion;
	private TipoComoAdjudicacion tipoComoAdjudicacion;

	private String texObservaciones;

	private Date fecIniGestion;
	private Date fecFinGestion;
	private BigDecimal numOrganoGestor;
	private Date fecEnvOrgGestor;

	// Propiedades para el detalle
	private ElementoAd garaje;
	private ElementoAd trastero;

	// Propiedades para las busquedas (Tablas y filtros)
	private Persona persona;

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

	/**
	 * Method 'AlojamientoDotacional'.
	 * 
	 * @param idAlojReg
	 *            Integer
	 */
	public AlojamientoDotacional(Integer idAlojReg) {
		super();
		this.idAlojReg = idAlojReg;
	}

	/**
	 * Method 'getIdAlojReg'
	 * 
	 * @return idAlojReg
	 */
	public Integer getIdAlojReg() {
		return this.idAlojReg;
	}

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

	/**
	 * Method 'getIdAlojamiento'
	 * 
	 * @return idAlojamiento
	 */
	public Integer getIdAlojamiento() {
		return this.idAlojamiento;
	}

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

	/**
	 * Method 'getNumExpediente'
	 * 
	 * @return numExpediente
	 */
	public String getNumExpediente() {
		return this.numExpediente!=null?numExpediente.toUpperCase():null;
	}

	/**
	 * Method 'setNumExpediente'
	 * 
	 * @param numExpediente
	 *            String
	 */
	public void setNumExpediente(String numExpediente) {
		this.numExpediente = numExpediente!=null?numExpediente.toUpperCase():null;
	}

	/**
	 * Method 'getCodAlojamiento'
	 * 
	 * @return codAlojamiento
	 */
	public String getCodAlojamiento() {
		return this.codAlojamiento;
	}

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

	/**
	 * Method 'getIdEmplazamiento'
	 * 
	 * @return idEmplazamiento
	 */
	public Integer getIdEmplazamiento() {
		return this.idEmplazamiento;
	}

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

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

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

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

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

	/**
	 * Method 'getIndAlojAdaptada'
	 * 
	 * @return indAlojAdaptada
	 */
	public String getIndAlojAdaptada() {
		return this.indAlojAdaptada;
	}

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

	/**
	 * Method 'getNumDormitorios'
	 * 
	 * @return numDormitorios
	 */
	public Integer getNumDormitorios() {
		return this.numDormitorios;
	}

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

	/**
	 * Method 'getNumBanyos'
	 * 
	 * @return numBanyos
	 */
	public Integer getNumBanyos() {
		return this.numBanyos;
	}

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

	/**
	 * Method 'getNumFijoIbi'
	 * 
	 * @return numFijoIbi
	 */
	public String getNumFijoIbi() {
		return this.numFijoIbi;
	}

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

	/**
	 * Method 'getCodRefCatastral'
	 * 
	 * @return codRefCatastral
	 */
	public String getCodRefCatastral() {
		return this.codRefCatastral;
	}

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

	/**
	 * Method 'getTipoRegulacion'
	 * 
	 * @return tipoRegulacion
	 */
	public TipoRegulacion getTipoRegulacion() {
		return this.tipoRegulacion;
	}

	/**
	 * Method 'setTipoRegulacion'
	 * 
	 * @param tipoRegulacion
	 *            TipoRegulacion
	 */
	public void setTipoRegulacion(TipoRegulacion tipoRegulacion) {
		this.tipoRegulacion = tipoRegulacion;
	}

	/**
	 * Method 'getTipoAcceso'
	 * 
	 * @return tipoAcceso
	 */
	public TipoAcceso getTipoAcceso() {
		return this.tipoAcceso;
	}

	/**
	 * Method 'setTipoAcceso'
	 * 
	 * @param tipoAcceso
	 *            TipoAcceso
	 */
	public void setTipoAcceso(TipoAcceso tipoAcceso) {
		this.tipoAcceso = tipoAcceso;
	}

	/**
	 * Method 'getTipoIniciativa'
	 * 
	 * @return tipoIniciativa
	 */
	public TipoIniciativa getTipoIniciativa() {
		return this.tipoIniciativa;
	}

	/**
	 * Method 'setTipoIniciativa'
	 * 
	 * @param tipoIniciativa
	 *            TipoIniciativa
	 */
	public void setTipoIniciativa(TipoIniciativa tipoIniciativa) {
		this.tipoIniciativa = tipoIniciativa;
	}

	/**
	 * Method 'getTipoPromotor'
	 * 
	 * @return tipoPromotor
	 */
	public TipoPromotor getTipoPromotor() {
		return this.tipoPromotor;
	}

	/**
	 * Method 'setTipoPromotor'
	 * 
	 * @param tipoPromotor
	 *            TipoPromotor
	 */
	public void setTipoPromotor(TipoPromotor tipoPromotor) {
		this.tipoPromotor = tipoPromotor;
	}

	/**
	 * Method 'getTipoPropietarios'
	 * 
	 * @return tipoPropietarios
	 */
	public TipoPropietarios getTipoPropietarios() {
		return this.tipoPropietarios;
	}

	/**
	 * Method 'setTipoPropietarios'
	 * 
	 * @param tipoPropietarios
	 *            TipoPropietarios
	 */
	public void setTipoPropietarios(TipoPropietarios tipoPropietarios) {
		this.tipoPropietarios = tipoPropietarios;
	}

	/**
	 * Method 'getTipoAdjudicacion'
	 * 
	 * @return tipoAdjudicacion
	 */
	public TipoAdjudicacion getTipoAdjudicacion() {
		return this.tipoAdjudicacion;
	}

	/**
	 * Method 'setTipoAdjudicacion'
	 * 
	 * @param tipoAdjudicacion
	 *            TipoAdjudicacion
	 */
	public void setTipoAdjudicacion(TipoAdjudicacion tipoAdjudicacion) {
		this.tipoAdjudicacion = tipoAdjudicacion;
	}

	/**
	 * Method 'getTipoQuienAdjudicacion'
	 * 
	 * @return tipoQuienAdjudicacion
	 */
	public TipoQuienAdjudicacion getTipoQuienAdjudicacion() {
		return this.tipoQuienAdjudicacion;
	}

	/**
	 * Method 'setTipoQuienAdjudicacion'
	 * 
	 * @param tipoQuienAdjudicacion
	 *            TipoQuienAdjudicacion
	 */
	public void setTipoQuienAdjudicacion(
			TipoQuienAdjudicacion tipoQuienAdjudicacion) {
		this.tipoQuienAdjudicacion = tipoQuienAdjudicacion;
	}

	/**
	 * Method 'getTipoComoAdjudicacion'
	 * 
	 * @return tipoComoAdjudicacion
	 */
	public TipoComoAdjudicacion getTipoComoAdjudicacion() {
		return this.tipoComoAdjudicacion;
	}

	/**
	 * Method 'setTipoComoAdjudicacion'
	 * 
	 * @param tipoComoAdjudicacion
	 *            TipoComoAdjudicacion
	 */
	public void setTipoComoAdjudicacion(
			TipoComoAdjudicacion tipoComoAdjudicacion) {
		this.tipoComoAdjudicacion = tipoComoAdjudicacion;
	}

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

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

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

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

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

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

	/**
	 * Method 'getNumOrganoGestor'
	 * 
	 * @return numOrganoGestor
	 */
	public BigDecimal getNumOrganoGestor() {
		return this.numOrganoGestor;
	}

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

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

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

	/**
	 * Method 'getGaraje'
	 * 
	 * @return garaje
	 */
	public ElementoAd getGaraje() {
		return this.garaje;
	}

	/**
	 * Method 'setGaraje'
	 * 
	 * @param garaje
	 *            ElementoAd
	 */
	public void setGaraje(ElementoAd garaje) {
		this.garaje = garaje;
	}

	/**
	 * Method 'getTrastero'
	 * 
	 * @return trastero
	 */
	public ElementoAd getTrastero() {
		return this.trastero;
	}

	/**
	 * Method 'setTrastero'
	 * 
	 * @param trastero
	 *            ElementoAd
	 */
	public void setTrastero(ElementoAd trastero) {
		this.trastero = trastero;
	}

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

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