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

import java.util.List;

import com.ejie.m62fb.utils.bean.BeanAccess;
import com.ejie.m62fb.utils.bean.BeanUtils;
import com.ejie.m62fb.utils.sql.FiltroWhereGen;
import com.ejie.m62fb.utils.sql.LikeInWhere;
import com.ejie.t17i.dao.PlantaDaoSql;
import com.ejie.t17i.model.Planta;

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

	private Planta planta;
	
	/**
	 * <p>Constructor</p> 
	 * @param planta Planta 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 PlantaFilter (final Planta planta,final List<Object> params,final StringBuilder query,final LikeInWhere like){
		super(params,query,like);
		this.planta=planta;
	}
	
	/**
	 * Devuelve el planta para filtrar
	 * @return El planta para filtrar
	 */
	public Planta getPlanta() {
		return planta;
	}

	/**
	 * Establece el planta para filtrar
	 * @param planta El planta para filtrar
	 */
	public void setPlanta(Planta planta) {
		this.planta = planta;
	}

	
	/**
	 * {@inheritDoc}
	 */
	@Override
	public void generarWhereBE() {
		
		boolean bImplementar=this.like.isImplementar();
		this.like.setImplementar(false);
		//ID
		super.addFiltro(PlantaDaoSql.ALIAS+".ID = ? ", 
						new BeanAccess("planta.id",  this.planta), 
						FiltroWhereGen.AND);
		//PORTAL_ID
		super.addFiltro(PlantaDaoSql.ALIAS+".PORTAL_ID = ? ", 
				new BeanAccess("planta.portal.id",  this.planta), 
				FiltroWhereGen.AND);
		
		this.like.setImplementar(bImplementar);
		//ESCALERA
		Object obj = BeanUtils.getValor(new BeanAccess("planta.escalera",  this.planta));
		if (!(obj==null || 
				(obj instanceof String && ((String) obj).trim().length()==0))&& ((String) obj).equals("-")){
			this.like.setImplementar(false);
			super.modificarQueryConWhere(" TRIM("+PlantaDaoSql.ALIAS+".ESCALERA) IS NULL ",FiltroWhereGen.AND);
//			super.addFiltro(" DECODE(UPPER(TRIM("+PlantaDaoSql.ALIAS+".ESCALERA)),'','NULL') = DECODE(?,'*','NULL') ", 
//					new BeanAccess("planta.escalera",  this.planta), 
//					FiltroWhereGen.AND);
			
			this.like.setImplementar(bImplementar);
		}else{
			super.addFiltro(" UPPER(TRIM("+PlantaDaoSql.ALIAS+".ESCALERA)) = ? ", 
					new BeanAccess("planta.escalera",  this.planta), 
					FiltroWhereGen.AND);
		}
		
		//PISO
		super.addFiltro(" UPPER(TRIM("+PlantaDaoSql.ALIAS+".PISO)) = ? ", 
				new BeanAccess("planta.piso",  this.planta), 
				FiltroWhereGen.AND);
	}

}
