package com.fp.dto.query; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; /** * Dto de transporte utilizado en la ejecución de consultas invocadas desde el front end, contiene metadata necesaria * para armar y ejecutar consultas en la base de datos. * * @author Jorge Vaca. * @version 2.1 */ public class DtoQuery implements Serializable { private static final long serialVersionUID = 6080115615379062328L; /** * Nombre del bean, con el cual se va a ejecutar la consulta. */ private String beanname; /** * Numero de pagina se utiliza para consultar mas de un registro. */ private Integer page = 0; /** * Numero de registros por pagina. */ private Integer recperpage = 0; /** * True indica que la consulta espera de respuesrta de 0..n registros. */ private boolean multirecord = false; /** * String que contiene la lista de campos por el cual se va a ordenar la consula.
* ejemplo
* pk.pais ordenado por pais
* pk.pais,pk.provincia,nombre ordenado por 3 campo
* nombre desc orden descendente por nombre
*/ private String orderby; /** * Lista de filtros con los cuales se arma la sentencia de la consulta. */ private final List lfiltros = new ArrayList(); private final List lSubquery = new ArrayList(); /** * Crea una instancia de {@link DtoConsulta}. * * @param beanname Nombre del bean a consultar. * @param mcriterios Map de filtros tipo camo-valor. * @throws Exception */ public DtoQuery(String beanname, Map mcriterios) throws Exception { this.beanname = beanname; addCriterios(mcriterios); } /** * Crea una instancia de {@link DtoConsulta}. * * @param beanname Nombre del bean a consultar. * @param mcriterios Map de filtros tipo camo-valor. * @throws Exception */ public DtoQuery(String beanname, Integer page, Integer recperpage, boolean multirecord, Map mcriterios) throws Exception { this.beanname = beanname; this.page = page; this.recperpage = recperpage; this.multirecord = multirecord; addCriterios(mcriterios); } /** * Adiciona criterios a la consulta dado map, campo-valor. * * @param mcriterios Map que contiene filtros, campo - valor, al inicio del campo puede estar incluido el criterio. * @throws Exception */ public void addCriterios(Map mcriterios) throws Exception { if (mcriterios == null) { return; } Set s = mcriterios.keySet(); for (String campo : s) { if (mcriterios.get(campo) != "" && mcriterios.get(campo) != null) { Filter f = new Filter(campo, mcriterios.get(campo)); lfiltros.add(f); } } } /** * Adiciona un filtro a la consulta. * * @param filtro Objeto que contiene los datos del filtro a utilizar en la consulta. * @throws Exception */ public void addFiltro(Filter filtro) throws Exception { lfiltros.add(filtro); } /** * Adiciona un subquery a la consulta. * * @param subquery Objeto que contiene los datos de subquery a utilizar en la consulta. * @throws Exception */ public void addSubQuery(SubQuery subquery) throws Exception { lSubquery.add(subquery); } /** * Entrega el valor de: beanname * * @return String */ public String getBeanname() { return beanname; } /** * Fija el valor de: beanname * * @param Valor a fijar en el atributo. */ public void setBeanname(String beanname) { this.beanname = beanname; } /** * Entrega el valor de: orderby * * @return String */ public String getOrderby() { return orderby; } /** * Fija el valor de: orderby * * @param Valor a fijar en el atributo. */ public void setOrderby(String orderby) { this.orderby = orderby; } /** * Entrega el valor de: page * * @return Integer */ public Integer getPage() { return page; } /** * Entrega el valor de: multirecord * * @return boolean */ public boolean isMultirecord() { return multirecord; } /** * Fija el valor de: multirecord * * @param Valor a fijar en el atributo. */ public void setMultirecord(boolean multirecord) { this.multirecord = multirecord; } /** * Entrega el valor de: recperpage * * @return Integer */ public Integer getRecperpage() { return recperpage; } /** * Entrega el valor de: lfiltros * * @return List */ public List getLfilter() { return lfiltros; } /** * Entrega el valor de: lSubquery * * @return List */ public List getlSubquery() { return lSubquery; } }