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.format.FormatUtils;
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.tipos.RegimenAcceso;
import com.ejie.m62fb.model.tipos.RegimenTenencia;

/**
 * ViviendaDisponible generated by UDA, 02-dic-2015 8:59:57.
 * 
XXXX
 */

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

	private static final long serialVersionUID = 1L;
	// Num. Vivienda
	private BigDecimal numVivienda;
	// Superficie Util Vivienda
	private BigDecimal supUtilViv;
	// Nº Dormitorios
	private Long numDormitorios;
	// Indicador Vivienda Adaptada
	private String indVivAdaptada;
	// Direccion
	private Direccion direccion;
	// Regimen Acceso
	private RegimenAcceso regimenAcceso;
	// Regimen Tenencia
	private RegimenTenencia regimenTenencia;
	// Indicador Disponibilidad
	private String indDisponible;
	// Importe PVP Total
	private BigDecimal imcPvpTotal;
	// Numero Garaje
	private String codElemG;
	// Superficie Util Garaje
	private BigDecimal supUtilG;
	// Numero Trastero
	private String codElemT;
	// Superficie Util Trastero
	private BigDecimal supUtilT;
	// Nº Expediente
	private String numExpediente;

	// Campos para el filtro
	// Rango numDormitorios
	private Long numDormitoriosDesde;
	private Long numDormitoriosHasta;
	// Rango Superficie Util Vivienda
	private BigDecimal supUtilVivDesde;
	private BigDecimal supUtilVivHasta;

	/**
	 * Method 'ViviendaDisponibles'.
	 */
	public ViviendaDisponible() {
	}

	/**
	 * Method 'ViviendaDisponibles'.
	 * 
	 * @param numVivienda
	 *            BigDecimal
	 */
	public ViviendaDisponible(BigDecimal numVivienda) {
		this.numVivienda = numVivienda;
	}

	/**
	 * Method 'getNumVivienda'
	 * 
	 * @return numVivienda
	 */
	public BigDecimal getNumVivienda() {
		return this.numVivienda;
	}

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

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

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

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

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

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

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

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

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

	/**
	 * Method 'getRegimenAcceso'
	 * 
	 * @return regimenAcceso
	 */
	public RegimenAcceso getRegimenAcceso() {
		return this.regimenAcceso;
	}

	/**
	 * Method 'setRegimenAcceso'
	 * 
	 * @param regimenAcceso
	 *            RegimenAcceso
	 */
	public void setRegimenAcceso(RegimenAcceso regimenAcceso) {
		this.regimenAcceso = regimenAcceso;
	}

	/**
	 * Method 'getRegimenTenencia'
	 * 
	 * @return regimenTenencia
	 */
	public RegimenTenencia getRegimenTenencia() {
		return this.regimenTenencia;
	}

	/**
	 * Method 'setRegimenTenencia'
	 * 
	 * @param regimenTenencia
	 *            RegimenTenencia
	 */
	public void setRegimenTenencia(RegimenTenencia regimenTenencia) {
		this.regimenTenencia = regimenTenencia;
	}

	/**
	 * Method 'getIndDisponible'
	 * 
	 * @return indDisponible
	 */
	public String getIndDisponible() {
		return this.indDisponible;
	}

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

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

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

	/**
	 * Method 'getCodElemG'
	 * 
	 * @return codElemG
	 */
	public String getCodElemG() {
		return this.codElemG;
	}

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

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

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

	/**
	 * Method 'getCodElemT'
	 * 
	 * @return codElemT
	 */
	public String getCodElemT() {
		return this.codElemT;
	}

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

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

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

	/**
	 * 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 'getNumDormitoriosDesde'
	 * 
	 * @return numDormitoriosDesde
	 */
	public Long getNumDormitoriosDesde() {
		return this.numDormitoriosDesde;
	}

	/**
	 * Method 'setNumDormitoriosDesde'
	 * 
	 * @param numDormitoriosDesde
	 *            Long
	 */
	public void setNumDormitoriosDesde(Long numDormitoriosDesde) {
		this.numDormitoriosDesde = numDormitoriosDesde;
	}

	/**
	 * Method 'getNumDormitoriosHasta'
	 * 
	 * @return numDormitoriosHasta
	 */
	public Long getNumDormitoriosHasta() {
		return this.numDormitoriosHasta;
	}

	/**
	 * Method 'setNumDormitoriosHasta'
	 * 
	 * @param numDormitoriosHasta
	 *            Long
	 */
	public void setNumDormitoriosHasta(Long numDormitoriosHasta) {
		this.numDormitoriosHasta = numDormitoriosHasta;
	}

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

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

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

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

	/**
	 * Method 'getSupUtilVivStr'
	 * 
	 * @return String, supUtilViv formateado
	 */
	public String getSupUtilVivStr() {
		return FormatUtils.bigDecimalToString(this.getSupUtilViv(), 2);
	}

}