package com.fp.general.rules.query.trans.panel; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.fp.common.helper.BeanManager; import com.fp.persistence.commondb.HqlStatement; import com.fp.dto.Response; import com.fp.dto.query.QueryRequest; import com.fp.dto.rules.QueryRule; import com.fp.persistence.pgeneral.page.TgeneSubproductPages; /** * Clase que se encarga de entregar una lista con las paginas a contruir paneles dinamicamente * en la pantalla por subproducto. * @author Jorge Vaca * @version 2.1 */ public class ProductPanels extends QueryRule { /** * Metodo que obtiene saldos promedio de una cuenta a la vista. * @param pQueryRequest Datos de entrada de la consulta. */ public QueryRequest process(QueryRequest pQueryRequest) throws Exception { Response response = pQueryRequest.getResponse(); List> lData = this.fillData(pQueryRequest); response.put("PRODUCTPANELS", lData); return pQueryRequest; } /** * Metodo que llena una lista con las paginas asociadas a un producto, transaccion. * @param pQueryRequest Datos del request. * @return List> * @throws Exception */ private List> fillData(QueryRequest pQueryRequest) throws Exception { List> lData = new ArrayList>(); List lPages = this.getTgeneSubproductPages(pQueryRequest); for (TgeneSubproductPages tgeneSubproductPages : lPages) { Map m = new HashMap(); m.put("cod", tgeneSubproductPages.getPk().getSequence()); m.put("t", tgeneSubproductPages.getTitle()); m.put("p", tgeneSubproductPages.getPage()); m.put("q", tgeneSubproductPages.getQueryfunction()); m.put("s", tgeneSubproductPages.getSavefunction()); m.put("d", "N"); m.put("down", tgeneSubproductPages.getAutodownload()); lData.add(m); } lPages = null; return lData; } /** * Metodo que entrega una lista de paginas a asociar en paneles en paginas. * @param pQueryRequest Datos del request. * @return List * @throws Exception */ @SuppressWarnings("unchecked") private List getTgeneSubproductPages(QueryRequest pQueryRequest) throws Exception { List lData = null; HqlStatement hql = new HqlStatement(HQL); hql.setString("module", (String) BeanManager.convertObject(pQueryRequest.get("module"), String.class)); hql.setString("product", (String) BeanManager.convertObject(pQueryRequest.get("product"), String.class)); hql.setString("subproduct", (String) BeanManager.convertObject(pQueryRequest.get("subproduct"), String.class)); hql.setString("tmodule", pQueryRequest.getTransactionModule()); hql.setInteger("tcode", pQueryRequest.getTransactionCode()); hql.setInteger("tversion", pQueryRequest.getTransactionVersion()); lData = hql.execute().getResultList(); return lData; } /** * Sentencia que entrega las paginas asociadas a un modulo, producto tipo. */ private static final String HQL = " from TgeneSubproductPages t " + " where t.pk.modulecode = :module " + " and t.pk.productcode = :product " + " and t.pk.subproductcode = :subproduct " + " and t.pk.transactionmodule = :tmodule " + " and t.pk.transactioncode = :tcode " + " and t.pk.transactionversion = :tversion " + " and coalesce(t.active,'N') = 'Y' " + " order by t.presentationorder "; }