/**
 * 
 */
package com.ejie.t17i.filters;

import java.util.List;

import com.ejie.m62fb.utils.bean.BeanAccess;
import com.ejie.m62fb.utils.sql.FiltroWhereGen;
import com.ejie.m62fb.utils.sql.LikeInWhere;
import com.ejie.t17i.dao.LocalidadDaoSql;
import com.ejie.t17i.model.Localidad;

/**
 * <p>
 * Clase que define el filtro para la entidad Localidad de NORA
 * </p>
XXXX
 *  * 
 * @see com.ejie.t17i.model.Localidad;
 */
public class LocalidadFilter extends FiltroWhereGen {

	private Localidad localidad;
	
	/**
	 * <p>Constructor</p> 
	 * @param localidad Localidad con los datos para filtrar
	 * @param params Lista de par&aacute;metros de la <code>SQL</code
	 * @param query Query <code>SQL</code> a modificar
	 * @param like Indica si hay que implementar <code>LIKE</code> y como
	 */
	public LocalidadFilter(final Localidad localidad,final List<Object> params,final StringBuilder query,final LikeInWhere like){
		super(params,query,like);
		this.localidad=localidad;
	}
		
	/**
	 * Devuelve la localidad para filtrar
	 * @return La localidad para filtrar
	 */
	public Localidad getLocalidad() {
		return localidad;
	}

	/**
	 * Establece la localidad para filtrar
	 * @param localidad La localidad para filtrar
	 */
	public void setLocalidad(Localidad localidad) {
		this.localidad = localidad;
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	public void generarWhereBE() {
		
		//ID
		super.addFiltro(LocalidadDaoSql.ALIAS + ".ID = ? ", 
						new BeanAccess("localidad.id",  this.localidad), 
						FiltroWhereGen.AND);
		//DS_O
		super.addFiltro(" UPPER("+LocalidadDaoSql.ALIAS + ".DS_O) = ? ", 
				new BeanAccess("localidad.nombre",  this.localidad), 
				FiltroWhereGen.AND);
		if(this.like==null){
			//MUNICIPIO_ID
			super.addFiltro(LocalidadDaoSql.ALIAS + ".MUNICIPIO_ID = LPAD(?,3,'0') ", 
					new BeanAccess("localidad.municipio.id",  this.localidad), 
					FiltroWhereGen.AND);
			//PROVINCIA_ID
			super.addFiltro(LocalidadDaoSql.ALIAS + ".PROVINCIA_ID = LPAD(?,2,'0') ", 
					new BeanAccess("localidad.municipio.provincia.id",  this.localidad), 
					FiltroWhereGen.AND);
		}else{
			//MUNICIPIO_ID
			super.addFiltro(LocalidadDaoSql.ALIAS + ".MUNICIPIO_ID = ? ", 
					new BeanAccess("localidad.municipio.id",  this.localidad), 
					FiltroWhereGen.AND);
			//PROVINCIA_ID
			super.addFiltro(LocalidadDaoSql.ALIAS + ".PROVINCIA_ID = ?", 
					new BeanAccess("localidad.municipio.provincia.id",  this.localidad), 
					FiltroWhereGen.AND);
		}
		
		//ENTIDAD_ID
		super.addFiltro(LocalidadDaoSql.ALIAS + ".ENTIDAD_ID = ? ", 
				new BeanAccess("localidad.idEntidad",  this.localidad), 
				FiltroWhereGen.AND);
	}

}
