/** * @param paramsConMercDirecto Los parámetros de la consulta. * @param opcionesConsulta Las opciones de paginación y ordenamiento solicitadas por el usuario. * @param sc El contexto de seguridad. * @return Un objeto de tipo DatosTabularesPaginados. Si no se encuentran //TODO determinar que * regresa sino hay datos. * @throws Exception En caso de un error en la consulta. */ public final DatosTabularesPaginados consultaMercadoDirecto( final ParametrosConsultaMercadoDirectoVO paramsConMercDirecto, final OpcionesConsulta opcionesConsulta, final SantanderSecurityContext sc) throws Exception { String orderBy = ""; DatosTabularesPaginados datosTabularesPaginados = new DatosTabularesPaginados(); log.debug("Entro al consultaMercadoDirecto del " + "DAO DineroConsultasDAOImpl"); // 'Ejecuta los QUERYS necesarios según las opciones elegidas. // 'Esto es para cundo se elige la opción Mercado de Dinero -> Directo String sSql = ""; String sSql2 = ""; String sSql3 = ""; // 'GSP 04062003. Se cambian comentarios al final de la rutina if (paramsConMercDirecto.getChkDirecto().equals("1") && paramsConMercDirecto.getChkReporto().equals("0") && paramsConMercDirecto.getChkPasivosBancariosDerivados().equals("0")) { // && frmMain.optseleccion(0).Value = True) { sSql = queryMercadoDirecto.obtenQueryMercadoDirecto( paramsConMercDirecto, opcionesConsulta, sc, getParametrosGenerales()); // Query_Merc_Directo } else if (paramsConMercDirecto.getChkDirecto().equals("0") && paramsConMercDirecto.getChkReporto().equals("1") && paramsConMercDirecto.getChkPasivosBancariosDerivados().equals("0")) { // && frmMain.optseleccion(0).Value = True) { sSql = queryMercadoReporto.obtenQueryMercadoReporto( paramsConMercDirecto, opcionesConsulta, sc, getParametrosGenerales()); // Query_Merc_Reporto } else if (paramsConMercDirecto.getChkDirecto().equals("0") && paramsConMercDirecto.getChkReporto().equals("0") && paramsConMercDirecto.getChkPasivosBancariosDerivados().equals("1")) { // && frmMain.optseleccion(0).Value = True) { sSql = queryMercadoOperaciones.obtenQueryMercadoOperaciones( paramsConMercDirecto, opcionesConsulta, sc, getParametrosGenerales()); // Query_Merc_Operaciones } else if (paramsConMercDirecto.getChkDirecto().equals("1") && paramsConMercDirecto.getChkReporto().equals("1") && paramsConMercDirecto.getChkPasivosBancariosDerivados().equals("0")) { // && frmMain.optseleccion(0).Value = True) { sSql = queryMercadoDirecto.obtenQueryMercadoDirecto( paramsConMercDirecto, opcionesConsulta, sc, getParametrosGenerales()); // Query_Merc_Directo if (sSql.trim().length() > 0) { sSql2 = queryMercadoReporto.obtenQueryMercadoReporto( paramsConMercDirecto, opcionesConsulta, sc, getParametrosGenerales()); // Query_Merc_Reporto if (sSql2.trim().length() > 0) { sSql = sSql + " UNION ALL " + sSql2; } else { sSql = ""; } } } else if (paramsConMercDirecto.getChkDirecto().equals("0") && paramsConMercDirecto.getChkReporto().equals("1") && paramsConMercDirecto.getChkPasivosBancariosDerivados().equals("1")) { // && frmMain.optseleccion(0).Value = True) { sSql = queryMercadoReporto.obtenQueryMercadoReporto( paramsConMercDirecto, opcionesConsulta, sc, getParametrosGenerales()); // Query_Merc_Reporto if (sSql.trim().length() > 0) { sSql2 = queryMercadoOperaciones.obtenQueryMercadoOperaciones( paramsConMercDirecto, opcionesConsulta, sc, getParametrosGenerales()); // Query_Merc_Operaciones if (sSql2.trim().length() > 0) { sSql = sSql + " UNION ALL " + sSql2; } else { sSql = ""; } } } else if (paramsConMercDirecto.getChkDirecto().equals("1") && paramsConMercDirecto.getChkReporto().equals("0") && paramsConMercDirecto.getChkPasivosBancariosDerivados().equals("1")) { // && frmMain.optseleccion(0).Value = True) { sSql = queryMercadoDirecto.obtenQueryMercadoDirecto( paramsConMercDirecto, opcionesConsulta, sc, getParametrosGenerales()); // Query_Merc_Directo if (sSql.trim().length() > 0) { sSql2 = queryMercadoOperaciones.obtenQueryMercadoOperaciones( paramsConMercDirecto, opcionesConsulta, sc, getParametrosGenerales()); // Query_Merc_Operaciones if (sSql2.trim().length() > 0) { sSql = sSql + " UNION ALL " + sSql2; } else { sSql = ""; } } } else if (paramsConMercDirecto.getChkDirecto().equals("1") && paramsConMercDirecto.getChkReporto().equals("1") && paramsConMercDirecto.getChkPasivosBancariosDerivados().equals("1")) { // && frmMain.optseleccion(0).Value = True) { sSql = queryMercadoDirecto.obtenQueryMercadoDirecto( paramsConMercDirecto, opcionesConsulta, sc, getParametrosGenerales()); // Query_Merc_Directo if (sSql != null && sSql.trim().length() > 0) { sSql2 = queryMercadoReporto.obtenQueryMercadoReporto( paramsConMercDirecto, opcionesConsulta, sc, getParametrosGenerales()); // Query_Merc_Reporto if (sSql2 != null && sSql2.trim().length() > 0) { sSql3 = queryMercadoOperaciones.obtenQueryMercadoOperaciones( paramsConMercDirecto, opcionesConsulta, sc, getParametrosGenerales()); // Query_Merc_Operaciones if (sSql3 != null && sSql3.trim().length() > 0) { sSql = sSql + " UNION ALL " + sSql2 + " UNION ALL " + sSql3; } else { sSql = ""; } } else { sSql = ""; } } } else { // MessageInfo " Debe de elegir el tipo de Operación de Mercado " return null; } // 'Call Carga_Query(sSql, frmMain.grdseleccion(0)) if (sSql != null && sSql.trim().length() > 0) { // orderBy = "ORDER BY 1"; // 'mlgv 20000513 ordenar por tipo de operación /** * Ordenamiento de las filas ascedente o descendente. Cuando entra la primera vez el * ordenamiento será de acuerdo a la columas 1. Cuando se selecciona una fila desde la vista * el ordenamiento se realizará de acuerdo a esa fila. */ if (opcionesConsulta.getColumnaSort() != null && !opcionesConsulta.getColumnaSort().equals("0") && opcionesConsulta.getOrdenSort() != null) { if (!(opcionesConsulta.getColumnaSort().equals("") && opcionesConsulta.getOrdenSort().equals(""))) { if (opcionesConsulta .getOrdenSort() .equals(String.valueOf(OpcionesConsulta.ORDEN_ASCENDENTE))) { orderBy += " ORDER BY " + opcionesConsulta.getColumnaSort() + " ASC"; } else { orderBy += " ORDER BY " + opcionesConsulta.getColumnaSort() + " DESC"; } } } else { orderBy = " ORDER BY 1 "; } log.info("sSql=" + sSql); /** * Buena práctica: solicitar la conexión a la base de datos lo más tarde posible, y liberarla * lo más pronto posible. */ Connection cn = getConnection(); Statement stmt = null; // ANZDic2011 Conexión ResultSet rs = null; // ANZDic2011 Conexión try { // ANZDic2011 Conexión. Se agrega try catch /** Averigua cuantos registros cumplen con las condiciones: */ String queryCompleto = "select count (*) from (" + sSql + ")"; /** Usar el debug lo menos posible: */ log.debug("query=" + queryCompleto); // Statement stmt = cn.createStatement(); // ResultSet rs = stmt.executeQuery(queryCompleto); stmt = cn.createStatement(); // ANZDic2011 Conexión rs = stmt.executeQuery(queryCompleto); // ANZDic2011 Conexión if (rs.next()) { datosTabularesPaginados.setNumeroTotalRegistros(rs.getInt(1)); log.debug("Count de registros=" + rs.getInt(1)); } else { log.debug("El result set esta vacio."); } /** Importante cerrar tanto el ResultSet como el Statement: */ rs.close(); stmt.close(); /** Después de saber cuántos registros cumplen, hacemos una consulta paginada: */ stmt = cn.createStatement(); log.debug("opcionesConsulta.getTamanoPagina()=" + opcionesConsulta.getTamanoPagina()); queryCompleto = " select * from (" + sSql + ") where 1=1 " + orderBy; /** Usar el debug lo menos posible: */ log.info("query completo!!! : ______________________________ \n" + queryCompleto); rs = stmt.executeQuery(queryCompleto); datosTabularesPaginados.setDatosTabulares( new DatosTabularesRowSet( rs, opcionesConsulta.getNumeroPagina(), opcionesConsulta.getTamanoPagina())); /** No olvidar cerrar todo lo abierto. En este caso, ResultSet, Statement y Conexión: */ rs.close(); stmt.close(); cn.close(); } catch (Exception e) { // ANZDic2011 Conexión try { if (rs != null) { rs.close(); rs = null; } if (stmt != null) { stmt.close(); stmt = null; } if (cn != null) { cn.close(); cn = null; } } catch (Exception cne) { rs = null; stmt = null; cn = null; } log.error("ocurrio un error: ", e); throw e; } finally { try { if (rs != null) { rs.close(); rs = null; } if (stmt != null) { stmt.close(); stmt = null; } if (cn != null) { cn.close(); cn = null; } } catch (Exception e) { rs = null; stmt = null; cn = null; } } return datosTabularesPaginados; } else { return datosTabularesPaginados; } }
/** * Este metodo obtiene la lista de operaciones de grupo. * * @param paramsConMercDirecto parametros que vienen del front. * @param opcionesConsulta opciones de la consulta. * @param sc contexto de seguridad * @return regresa un objeto datos tabulares con los datos a desplegar. * @throws Exception se espera una excepcion. */ public final DatosTabularesPaginados consultaGrupo( final ParametrosConsultaMercadoDirectoVO paramsConMercDirecto, final OpcionesConsulta opcionesConsulta, final SantanderSecurityContext sc) throws Exception { String orderBy = ""; String sSql = ""; DatosTabularesPaginados datosTabularesPaginados = new DatosTabularesPaginados(); sSql = queryMercadoGrupo.obtenQueryMercadoGrupo( paramsConMercDirecto, opcionesConsulta, sc, getParametrosGenerales()); // Query_Merc_Renovados if (sSql != null && sSql.trim().length() > 0) { // orderBy = "ORDER BY 9"; /** * Ordenamiento de las filas ascedente o descendente. Cuando entra la primera vez el * ordenamiento será de acuerdo a la columas 9. Cuando se selecciona una fila desde la vista * el ordenamiento se realizará de acuerdo a esa fila. */ if (opcionesConsulta.getColumnaSort() != null && !opcionesConsulta.getColumnaSort().equals("0") && opcionesConsulta.getOrdenSort() != null) { if (!(opcionesConsulta.getColumnaSort().equals("") && opcionesConsulta.getOrdenSort().equals(""))) { if (opcionesConsulta .getOrdenSort() .equals(String.valueOf(OpcionesConsulta.ORDEN_ASCENDENTE))) { orderBy += " ORDER BY " + opcionesConsulta.getColumnaSort() + " ASC"; } else { orderBy += " ORDER BY " + opcionesConsulta.getColumnaSort() + " DESC"; } } } else { orderBy = " ORDER BY 9 "; } log.info("sSql=\n" + sSql); /** * Buena práctica: solicitar la conexión a la base de datos lo más tarde posible, y liberarla * lo más pronto posible. */ Connection cn = getConnection(); Statement stmt = null; ResultSet rs = null; /** * Averigua cuantos registros cumplen con las condiciones: * * <p>String queryCompleto = "select count (*) from (" + sSql + ")"; /** Usar el debug lo * menos posible: * * <p>//log.debug("query=" + queryCompleto); * * <p>Statement stmt = cn.createStatement(); ResultSet rs = stmt.executeQuery(queryCompleto); * * <p>if (rs.next()) { datosTabularesPaginados.setNumeroTotalRegistros( rs.getInt(1)); * log.debug("Count de registros=" + rs.getInt(1)); } else { log.debug("El result set esta * vacio."); } * * <p>Importante cerrar tanto el ResultSet como el Statement: * * <p>rs.close(); stmt.close(); cuentaRegistrosResultSet(rs); */ try { stmt = cn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); /** Después de saber cuántos registros cumplen, hacemos una consulta paginada: */ log.debug("opcionesConsulta.getTamanoPagina()=" + opcionesConsulta.getTamanoPagina()); String queryCompleto = " select * from (" + sSql + ") where 1=1 and " + this.armaCondicionPaginacion( opcionesConsulta.getNumeroPagina(), opcionesConsulta.getTamanoPagina()) + orderBy; /** Usar el debug lo menos posible: */ log.debug(queryCompleto); rs = stmt.executeQuery(queryCompleto); int totReg = cuentaRegistrosResultSet(rs); datosTabularesPaginados.setNumeroTotalRegistros(totReg); datosTabularesPaginados.setDatosTabulares( new DatosTabularesRowSet( rs, opcionesConsulta.getNumeroPagina(), opcionesConsulta.getTamanoPagina())); } catch (Exception e) { log.error(e); // ANZDic2011 Conexión try { if (rs != null) { rs.close(); rs = null; } if (stmt != null) { stmt.close(); stmt = null; } if (cn != null) { cn.close(); cn = null; } } catch (Exception cne) { rs = null; stmt = null; cn = null; } } finally { /** No olvidar cerrar todo lo abierto. En este caso, ResultSet, Statement y Conexión: */ try { if (rs != null) { rs.close(); rs = null; } if (stmt != null) { stmt.close(); stmt = null; } if (cn != null) { cn.close(); cn = null; } } catch (Exception e) { rs = null; stmt = null; cn = null; } } return datosTabularesPaginados; } else { return datosTabularesPaginados; } }