com.egt.core.db.util.Reporter.java Source code

Java tutorial

Introduction

Here is the source code for com.egt.core.db.util.Reporter.java

Source

/*
 * Copyright (C) 2008, EGT Consultores, C.A.
 *
 * Este programa es software libre; usted puede redistribuirlo y/o modificarlo bajo los trminos
 * de la licencia "GNU General Public License" publicada por la Fundacin "Free Software Foundation".
 *
 * Este programa se distribuye con la esperanza de que pueda ser til, pero SIN NINGUNA GARANTIA;
 * vea la licencia "GNU General Public License" para obtener mas informacin.
 *
 */
package com.egt.core.db.util;

import com.egt.base.constants.CBM2;
import com.egt.base.constants.EAB;
import com.egt.base.enums.EnumCondicionEjeFun;
import com.egt.base.jms.messages.ReporterMessage;
import com.egt.base.util.BundleInformes;
import com.egt.commons.enums.EnumFormatoInforme;
import com.egt.commons.util.ThrowableUtils;
import com.egt.core.aplicacion.Bitacora;
import com.egt.core.aplicacion.ExcepcionAplicacion;
import com.egt.core.aplicacion.TLC;
import com.egt.core.constants.EAC;
import com.egt.core.constants.Global;
import com.egt.core.control.Auditor;
import com.egt.core.util.EA;
import com.egt.core.util.STP;
import com.egt.core.util.Utils;
import java.io.File;
import java.io.FileNotFoundException;
import java.sql.ResultSet;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.export.JRXlsExporterParameter;
import net.sf.jasperreports.engine.fill.JRFillParameter;
import org.apache.commons.lang.StringUtils;

public class Reporter {

    private static final String DEFAULT_NUMBER_KW = "DEFAULT";

    private static final String DEFAULT_TARGET_KW = "DEFAULT";

    private static final String DEFAULT_SELECT_KW = "DEFAULT";

    private static final int LIMITE_FILAS_FUNCION_SELECT = 10000;

    static int getLimiteFilasFuncionSelect(String informe) {
        String string = BundleInformes.getLimiteFilasFuncionSelect(informe);
        int limite = StringUtils.isNotBlank(string) && StringUtils.isNumeric(string) ? Integer.valueOf(string) : -1;
        return limite < 0 ? LIMITE_FILAS_FUNCION_SELECT : limite;
    }

    public static EnumFormatoInforme getReportType(String formato) {
        String str = StringUtils.trimToEmpty(formato);
        EnumFormatoInforme tipo = EnumFormatoInforme.PDF;
        if (EnumFormatoInforme.XLS.getExtension().equalsIgnoreCase(str)) {
            tipo = EnumFormatoInforme.XLS;
        }
        return tipo;
    }

    public static String getReportFormat(EnumFormatoInforme tipo) {
        String formato;
        switch (tipo) {
        case XLS:
            formato = EnumFormatoInforme.XLS.getExtension();
            break;
        //          case CSV:
        //              formato = EnumFormatoInforme.CSV.getExtension();
        //              break;
        default:
            formato = EnumFormatoInforme.PDF.getExtension();
            break;
        }
        return formato;
    }

    public static JasperReport getJasperReport(String informe) {
        try {
            // OJO: hay que copiar jdt-compiler.jar a jre\ext o incluirlo en el CLASSPATH para compilar el archivo jrxml
            // OJO: compilar el archivo jrxml de origen evita problemas al cambiar la version de jasper
            return JasperCompileManager.compileReport(getReportSourceFileName(informe));
        } catch (Exception ex) {
            Bitacora.trace(ThrowableUtils.getString(ex));
            return null;
        }
    }

    public static String getReportSourceFileName(String informe) {
        File file = getReportSourceFile(informe);
        return file == null ? informe : file.getPath();
    }

    private static File getReportSourceFile(String informe) {
        String sep = System.getProperties().getProperty("file.separator");
        String dir = EA.getString(EAC.REPORT_SOURCE_DIR);
        String web = dir + "web" + sep;
        String pdq = informe + "." + "jrxml";
        String trick = dir + pdq;
        String treat = web + pdq;
        File file1 = new File(trick);
        File file2 = new File(treat);
        return file1.exists() ? file1 : file2.exists() ? file2 : null;
    }

    public static Process executeReport(String informe, long funcion) {
        return executeReport(informe, funcion, null, EnumFormatoInforme.PDF, DEFAULT_SELECT_KW, null);
    }

    public static Process executeReport(String informe, long funcion, EnumFormatoInforme tipo) {
        return executeReport(informe, funcion, null, tipo, DEFAULT_SELECT_KW, null);
    }

    public static Process executeReport(String informe, long funcion, String select) {
        return executeReport(informe, funcion, null, EnumFormatoInforme.PDF, select, null);
    }

    public static Process executeReport(String informe, long funcion, Map parametros) {
        return executeReport(informe, funcion, null, EnumFormatoInforme.PDF, DEFAULT_SELECT_KW,
                getReportParametersArray(parametros));
    }

    public static Process executeReport(String informe, long funcion, EnumFormatoInforme tipo, String select) {
        return executeReport(informe, funcion, null, tipo, select, null);
    }

    public static Process executeReport(String informe, long funcion, EnumFormatoInforme tipo, Map parametros) {
        return executeReport(informe, funcion, null, tipo, DEFAULT_SELECT_KW, getReportParametersArray(parametros));
    }

    public static Process executeReport(String informe, long funcion, String select, Object[] args) {
        return executeReport(informe, funcion, null, EnumFormatoInforme.PDF, select, args);
    }

    public static Process executeReport(String informe, long funcion, String destino, EnumFormatoInforme tipo) {
        return executeReport(informe, funcion, destino, tipo, DEFAULT_SELECT_KW, null);
    }

    public static Process executeReport(String informe, long funcion, String destino, String select) {
        return executeReport(informe, funcion, destino, EnumFormatoInforme.PDF, select, null);
    }

    public static Process executeReport(String informe, long funcion, String destino, Map parametros) {
        return executeReport(informe, funcion, destino, EnumFormatoInforme.PDF, DEFAULT_SELECT_KW,
                getReportParametersArray(parametros));
    }

    public static Process executeReport(String informe, long funcion, String destino, EnumFormatoInforme tipo,
            String select) {
        return executeReport(informe, funcion, destino, tipo, select, null);
    }

    public static Process executeReport(String informe, long funcion, String destino, EnumFormatoInforme tipo,
            Map parametros) {
        return executeReport(informe, funcion, destino, tipo, DEFAULT_SELECT_KW,
                getReportParametersArray(parametros));
    }

    public static Process executeReport(String informe, long funcion, String destino, String select,
            Object[] args) {
        return executeReport(informe, funcion, destino, EnumFormatoInforme.PDF, select, args);
    }

    public static Process executeReport(String informe, long funcion, String destino, EnumFormatoInforme tipo,
            String select, Object[] args) {
        Bitacora.trace(Reporter.class, "executeReport", informe, String.valueOf(funcion), destino,
                String.valueOf(tipo));
        Bitacora.trace(select);
        Utils.traceObjectArray(args);
        Long rastro = null;
        Process subprocess = null;
        try {
            informe = StringUtils.trimToEmpty(informe);
            if (STP.esIdentificadorArchivoValido(informe)) {
                if (TLC.getControlador().esFuncionAutorizada(funcion)) {
                    rastro = TLC.getControlador().ponerInformePendiente(funcion);
                    String command = EA.getString(EAC.REPORT_RUNNER_DIR) + EA.getString(EAC.REPORT_RUNNER_CMD);
                    command += " " + commandParameters(informe, rastro, destino, tipo, select, args);
                    String[] envp = null;
                    File dir = new File(EA.getString(EAC.REPORT_RUNNER_DIR));
                    Bitacora.trace(command);
                    Bitacora.trace(dir.getPath());
                    subprocess = Runtime.getRuntime().exec(command, envp, dir);
                    TLC.getBitacora().info(CBM2.REPORT_EXECUTION_REQUEST, informe);
                } else {
                    throw new ExcepcionAplicacion(Bitacora.getTextoMensaje(CBM2.FUNCION_NO_AUTORIZADA, informe));
                }
            } else {
                throw new ExcepcionAplicacion(
                        Bitacora.getTextoMensaje(CBM2.IDENTIFICADOR_ARCHIVO_INVALIDO, informe));
            }
        } catch (Exception ex) {
            EnumCondicionEjeFun condicion = EnumCondicionEjeFun.EJECUCION_CANCELADA;
            String mensaje = ThrowableUtils.getString(ex);
            Auditor.grabarRastroInforme(rastro, condicion, null, mensaje);
            TLC.getBitacora().error(mensaje);
        }
        return subprocess;
    }

    private static String commandParameters(String informe, Long rastro, String destino, EnumFormatoInforme tipo,
            String select, Object[] args) {
        String str = informe + " " + rastro;
        str += " " + trimToDefaultTarget(destino);
        str += " " + getReportFormat(tipo);
        str += " " + Utils.getQuotedParameterString(Utils.encodeSelect(trimToDefaultSelect(select)));
        str += " " + Utils.getQuotedParameterString(args);
        return str;
    }

    public static ReporterMessage report(String informe, long funcion) {
        return report(informe, funcion, null, EnumFormatoInforme.PDF, DEFAULT_SELECT_KW, null);
    }

    public static ReporterMessage report(String informe, long funcion, EnumFormatoInforme tipo) {
        return report(informe, funcion, null, tipo, DEFAULT_SELECT_KW, null);
    }

    public static ReporterMessage report(String informe, long funcion, String select) {
        return report(informe, funcion, null, EnumFormatoInforme.PDF, select, null);
    }

    public static ReporterMessage report(String informe, long funcion, Map parametros) {
        return report(informe, funcion, null, EnumFormatoInforme.PDF, DEFAULT_SELECT_KW,
                getReportParametersArray(parametros), parametros);
    }

    public static ReporterMessage report(String informe, long funcion, EnumFormatoInforme tipo, String select) {
        return report(informe, funcion, null, tipo, select, null);
    }

    public static ReporterMessage report(String informe, long funcion, EnumFormatoInforme tipo, Map parametros) {
        return report(informe, funcion, null, tipo, DEFAULT_SELECT_KW, getReportParametersArray(parametros),
                parametros);
    }

    public static ReporterMessage report(String informe, long funcion, String select, Object[] args) {
        return report(informe, funcion, null, EnumFormatoInforme.PDF, select, args, null);
    }

    public static ReporterMessage report(String informe, long funcion, String select, Object[] args,
            Map parametros) {
        return report(informe, funcion, null, EnumFormatoInforme.PDF, select, args, parametros);
    }

    public static ReporterMessage report(String informe, long funcion, String destino, EnumFormatoInforme tipo) {
        return report(informe, funcion, destino, tipo, DEFAULT_SELECT_KW, null);
    }

    public static ReporterMessage report(String informe, long funcion, String destino, String select) {
        return report(informe, funcion, destino, EnumFormatoInforme.PDF, select, null);
    }

    public static ReporterMessage report(String informe, long funcion, String destino, Map parametros) {
        return report(informe, funcion, destino, EnumFormatoInforme.PDF, DEFAULT_SELECT_KW,
                getReportParametersArray(parametros), parametros);
    }

    public static ReporterMessage report(String informe, long funcion, String destino, EnumFormatoInforme tipo,
            String select) {
        return report(informe, funcion, destino, tipo, select, null);
    }

    public static ReporterMessage report(String informe, long funcion, String destino, EnumFormatoInforme tipo,
            Map parametros) {
        return report(informe, funcion, destino, tipo, DEFAULT_SELECT_KW, getReportParametersArray(parametros),
                parametros);
    }

    public static ReporterMessage report(String informe, long funcion, String destino, String select,
            Object[] args) {
        return report(informe, funcion, destino, EnumFormatoInforme.PDF, select, args, null);
    }

    public static ReporterMessage report(String informe, long funcion, String destino, String select, Object[] args,
            Map parametros) {
        return report(informe, funcion, destino, EnumFormatoInforme.PDF, select, args, parametros);
    }

    public static ReporterMessage report(String informe, long funcion, String destino, EnumFormatoInforme tipo,
            String select, Object[] args) {
        return report(informe, funcion, destino, EnumFormatoInforme.PDF, select, args, null);
    }

    public static ReporterMessage report(String informe, long funcion, String destino, EnumFormatoInforme tipo,
            String select, Object[] args, Map parametros) {
        Bitacora.trace(Reporter.class, "report", informe, String.valueOf(funcion), destino, String.valueOf(tipo));
        Long rastro = null;
        try {
            informe = StringUtils.trimToEmpty(informe);
            if (STP.esIdentificadorArchivoValido(informe)) {
                if (TLC.getControlador().esFuncionAutorizada(funcion)) {
                    rastro = TLC.getControlador().ponerInformePendiente(funcion);
                    return report(informe, rastro, TLC.getControlador().getUsuario().getIdUsuario(),
                            TLC.getControlador().getUsuario().getCodigoUsuario(),
                            TLC.getControlador().getUsuario().getNombreUsuario(), destino, tipo, select, args,
                            parametros, false);
                } else {
                    throw new ExcepcionAplicacion(Bitacora.getTextoMensaje(CBM2.FUNCION_NO_AUTORIZADA, informe));
                }
            } else {
                throw new ExcepcionAplicacion(
                        Bitacora.getTextoMensaje(CBM2.IDENTIFICADOR_ARCHIVO_INVALIDO, informe));
            }
        } catch (Exception ex) {
            EnumCondicionEjeFun condicion = EnumCondicionEjeFun.EJECUCION_CANCELADA;
            String mensaje = ThrowableUtils.getString(ex);
            Auditor.grabarRastroInforme(rastro, condicion, null, mensaje);
            TLC.getBitacora().error(mensaje);
        }
        return null;
    }

    public static ReporterMessage report(ReporterMessage message) {
        return report(message.getInforme(), message.getRastro(), message.getUsuario(), message.getCodigoUsuario(),
                message.getNombreUsuario(), message.getDestino(), message.getTipo(), message.getSelect(),
                message.getArgs(), message.getParameters(), false);
    }

    static ReporterMessage report(String report, String number, String userid, String target, String format,
            String select, Object[] args, boolean logging) {
        Bitacora.trace(Reporter.class, "report", report, number, target, format);
        String informe = StringUtils.trimToEmpty(report);
        Long rastro = trimToNullNumber(number);
        Long usuario = StringUtils.isNotBlank(userid) && StringUtils.isNumeric(userid) ? Long.valueOf(userid)
                : null;
        String destino = trimToNullTarget(target);
        EnumFormatoInforme tipo = getReportType(format);
        String decode = Utils.decodeSelect(trimToNullSelect(select));
        return report(informe, rastro, usuario, null, null, destino, tipo, decode, args, null, logging);
    }

    private static ReporterMessage report(String informe, Long rastro, Long userid, String usercode,
            String username, String destino, EnumFormatoInforme tipo, String select, Object[] args, Map parametros,
            boolean logging) {
        Bitacora.trace(Reporter.class, "report", informe, rastro, destino, tipo);
        Bitacora.trace(Reporter.class, "report", userid, usercode, username);
        Bitacora.trace(trimToDefaultSelect(select));
        Utils.traceObjectArray(args);
        String report = StringUtils.trimToEmpty(informe);
        String target = trimToNullTarget(destino);
        String format = getReportFormat(tipo);
        ResultSet resultSet = null;
        //      String archivo = logging ? getLogFileName(rastro) : null;
        String archivo = null;
        EnumCondicionEjeFun condicion = EnumCondicionEjeFun.EJECUCION_EN_PROGRESO;
        String mensaje = TLC.getBitacora().info(CBM2.REPORT_EXECUTION_BEGIN, report);
        boolean ok = Auditor.grabarRastroInforme(rastro, condicion, archivo, mensaje);
        if (ok) {
            try {
                // OJO: hay que copiar jdt-compiler.jar a jre\ext o incluirlo en el CLASSPATH para compilar el archivo jrxml
                // OJO: compilar el archivo jrxml de origen evita problemas al cambiar la version de jasper
                JasperPrint jasperPrint = null;
                File sourceFile = getReportSourceFile(report);
                if (sourceFile == null) {
                    throw new FileNotFoundException(report);
                }
                String sourceFileName = sourceFile.getPath();
                JasperReport jasperReport = JasperCompileManager.compileReport(sourceFileName);
                Map parameters = getReportParametersMap(sourceFile, format, userid, usercode, username, parametros);
                if (StringUtils.isBlank(select)) {
                    jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, TLC.getConnection());
                    if (jasperPrint == null) {
                        condicion = EnumCondicionEjeFun.EJECUCION_CANCELADA;
                        mensaje = TLC.getBitacora().error(CBM2.REPORT_EXECUTION_ABEND, report);
                    }
                } else {
                    select = Utils.replaceWhereClause(jasperReport.getQuery().getText(), select);
                    if (StringUtils.isBlank(select)) {
                        condicion = EnumCondicionEjeFun.EJECUTADO_CON_ERRORES;
                        mensaje = TLC.getBitacora().error(CBM2.ERROR_COMANDO_SELECT);
                    } else {
                        int limite = getLimiteFilasFuncionSelect(report);
                        resultSet = TLC.getAgenteSql().executeQuery(select, limite, args);
                        if (resultSet.isBeforeFirst()) {
                            JRResultSetDataSource dataSource = new JRResultSetDataSource(resultSet);
                            jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);
                            if (jasperPrint == null) {
                                condicion = EnumCondicionEjeFun.EJECUCION_CANCELADA;
                                mensaje = TLC.getBitacora().error(CBM2.REPORT_EXECUTION_ABEND, report);
                            }
                        } else {
                            condicion = EnumCondicionEjeFun.EJECUTADO_SIN_ERRORES;
                            mensaje = TLC.getBitacora().error(CBM2.SELECT_ROW_EMPTY_SET, report);
                        }
                    }
                }
                if (jasperPrint != null) {
                    archivo = report(jasperPrint, target, format, userid);
                    condicion = EnumCondicionEjeFun.EJECUTADO_SIN_ERRORES;
                    mensaje = TLC.getBitacora().warn(CBM2.REPORT_EXECUTION_END, report);
                }
            } catch (Exception ex) {
                condicion = EnumCondicionEjeFun.EJECUTADO_CON_ERRORES;
                mensaje = ThrowableUtils.getString(ex);
                TLC.getBitacora().fatal(ex);
                TLC.getBitacora().fatal(CBM2.REPORT_EXECUTION_ABEND, report);
            } finally {
                Auditor.grabarRastroInforme(rastro, condicion, archivo, mensaje);
                DB.close(resultSet);
            }
        } else {
            condicion = EnumCondicionEjeFun.EJECUCION_CANCELADA;
            mensaje = TLC.getBitacora().error(CBM2.PROCESS_EXECUTION_ABEND, report);
        }
        ReporterMessage message = new ReporterMessage(report);
        message.setDestino(target);
        message.setTipo(tipo);
        message.setSelect(select);
        message.setArgs(args);
        message.setRastro(rastro);
        message.setCondicion(condicion);
        message.setArchivo(archivo);
        message.setMensaje(mensaje);
        return message;
    }

    private static String report(JasperPrint jasperPrint, String target, String format, Long usuario)
            throws Exception {
        Bitacora.trace(Reporter.class, "report", jasperPrint.getName(), target, format);
        String targetFileName;
        if (target == null) {
            targetFileName = jasperPrint.getName() + "_" + System.currentTimeMillis() + "_"
                    + jasperPrint.hashCode();
        } else {
            targetFileName = target;
        }
        targetFileName += "." + format;
        targetFileName = targetFileName.toLowerCase();
        String outputFileName = Utils.getSpooledFilesDir(usuario) + targetFileName;
        EnumFormatoInforme type = getReportType(format);
        switch (type) {
        case XLS:
            JRXlsExporter xlsExporter = new JRXlsExporter();
            xlsExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
            xlsExporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, outputFileName);
            xlsExporter.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE);
            xlsExporter.setParameter(JRXlsExporterParameter.IS_FONT_SIZE_FIX_ENABLED, Boolean.TRUE);
            xlsExporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
            xlsExporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
            xlsExporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
            //              xlsExporter.setParameter(JRXlsExporterParameter.MAXIMUM_ROWS_PER_SHEET, Integer.valueOf(0));
            xlsExporter.exportReport();
            break;
        //          case CSV:
        //              JRCsvExporter csvExporter = new JRCsvExporter();
        //              csvExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
        //              csvExporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, outputFileName);
        //              csvExporter.setParameter(JRCsvExporterParameter.FIELD_DELIMITER, ";");
        //              csvExporter.exportReport();
        //              break;
        default:
            JasperExportManager.exportReportToPdfFile(jasperPrint, outputFileName);
            break;
        }
        return targetFileName;
    }

    //  private static String getLogFileName(Long rastro) {
    //      if (rastro == null || rastro == 0) {
    //          return null;
    //      }
    //      return System.getenv(SEV.REPORT_RUNNER_LOG);
    //  }
    //
    //  private static String trimToDefaultNumber(String number) {
    //      String str = StringUtils.trimToEmpty(number);
    //      return StringUtils.isEmpty(str) || !StringUtils.isNumeric(str) ? DEFAULT_NUMBER_KW : str;
    //  }
    //
    private static String trimToDefaultTarget(String target) {
        String str = StringUtils.trimToEmpty(target);
        return StringUtils.isEmpty(str) || !STP.esIdentificadorArchivoValido(str) ? DEFAULT_TARGET_KW : str;
    }

    private static String trimToDefaultSelect(String select) {
        String str = StringUtils.trimToEmpty(select);
        return StringUtils.isEmpty(str) ? DEFAULT_SELECT_KW : str;
    }

    private static Long trimToNullNumber(String number) {
        String str = StringUtils.trimToEmpty(number);
        return StringUtils.isEmpty(str) || str.equalsIgnoreCase(DEFAULT_NUMBER_KW) || !StringUtils.isNumeric(str)
                ? null
                : Long.valueOf(str);
    }

    private static String trimToNullTarget(String target) {
        String str = StringUtils.trimToEmpty(target);
        return StringUtils.isEmpty(str) || str.equalsIgnoreCase(DEFAULT_TARGET_KW)
                || !STP.esIdentificadorArchivoValido(str) ? null : str;
    }

    private static String trimToNullSelect(String select) {
        String str = StringUtils.trimToEmpty(select);
        return StringUtils.isEmpty(str) || str.equalsIgnoreCase(DEFAULT_SELECT_KW) ? null : str;
    }

    private static Object[] getReportParametersArray(Map parameters) {
        if (parameters == null || parameters.isEmpty()) {
            return null;
        }
        int n = parameters.size();
        Object[] args = new Object[n];
        Set set = parameters.keySet();
        Iterator iterator = set.iterator();
        Object key;
        Object val;
        String psi;
        String str;
        for (int i = 0; i < n && iterator.hasNext(); i++) {
            key = iterator.next();
            val = parameters.get(key);
            if (val != null) {
                psi = val instanceof Long ? Global.PREFIJO_STRING_ID_RECURSO : "";
                str = StringUtils.trimToEmpty(STP.getString(val));
                args[i] = key + "=" + psi + str;
                Bitacora.trace("args [" + i + "] = " + key + "=(" + val.getClass().getSimpleName() + ")" + str);
            }
        }
        return args;
    }

    private static Map getReportParametersMap(File file, String format, Long userid, String usercode,
            String username) {
        Bitacora.trace(Reporter.class, "getReportParametersMap", file.getName(), file.getParent(), file.getPath());
        Map parameters = new HashMap();
        EnumFormatoInforme type = getReportType(format);
        String sep = System.getProperties().getProperty("file.separator");
        parameters.put(JRFillParameter.REPORT_CONNECTION, TLC.getConnection());
        parameters.put("ENTERPRISE_APPLICATION_CODE", EAB.ENTERPRISE_APPLICATION_CODE);
        parameters.put("ENTERPRISE_APPLICATION_NAME", EAB.ENTERPRISE_APPLICATION_NAME);
        parameters.put("RESOURCES_DIR", file.getParent() + sep + "resources" + sep);
        parameters.put("SUBREPORTS_DIR", file.getParent() + sep + "subreports" + sep);
        parameters.put("END_USER_ID", userid);
        parameters.put("END_USER_CODE", usercode);
        parameters.put("END_USER_NAME", username);
        parameters.put("SQL_WHERE_CLAUSE", "");
        parameters.put("SQL_LIMIT_CLAUSE", "");
        switch (type) {
        case XLS:
            parameters.put(JRFillParameter.IS_IGNORE_PAGINATION, Boolean.TRUE);
            parameters.put(JRFillParameter.REPORT_MAX_COUNT, Integer.valueOf(60000));
            break;
        //          case CSV:
        //              parameters.put(JRFillParameter.IS_IGNORE_PAGINATION, Boolean.TRUE);
        //              parameters.put(JRFillParameter.REPORT_MAX_COUNT, null);
        //              break;
        default:
            parameters.put(JRFillParameter.IS_IGNORE_PAGINATION, Boolean.FALSE);
            parameters.put(JRFillParameter.REPORT_MAX_COUNT, null);
            break;
        }
        return parameters;
    }

    private static Map getReportParametersMap(File file, String format, Long userid, String usercode,
            String username, Map parametros) {
        Map parameters = getReportParametersMap(file, format, userid, usercode, username);
        if (parametros != null && !parametros.isEmpty()) {
            parameters.putAll(parametros);
        }
        return parameters;
    }

    //  private static Map getReportParametersMap(File file, String format, Long userid, String usercode, String username, Object[] args) {
    //      Map parameters = getReportParametersMap(file, format, userid, usercode, username);
    //      if (args != null) {
    //          String pdq;
    //          String key;
    //          String str;
    //          Object val;
    //          for (int i = 0; i < args.length; i++) {
    //              if (args[i] instanceof String) {
    //                  pdq = StringUtils.trimToEmpty((String) args[i]);
    //                  if (StringUtils.isNotEmpty(pdq)) {
    //                      int p = pdq.indexOf("=");
    //                      if (p > 0) {
    //                          key = StringUtils.trimToEmpty(pdq.substring(0, p));
    //                          str = StringUtils.trimToEmpty(pdq.substring(p + 1));
    //                          if (StringUtils.isNotEmpty(key) && StringUtils.isNotEmpty(str)) {
    //                              val = STP.getObjeto(str);
    //                              parameters.put(key, val);
    //                              Bitacora.trace("args [" + i + "] = " + key + "=(" + val.getClass().getSimpleName() + ")" + str);
    //                          }
    //                      }
    //                  }
    //              }
    //          }
    //      }
    //      return parameters;
    //  }
    //
    //  private static void edit(String filename) throws IOException {
    //      if (filename.endsWith(".csv")) {
    //          Runtime.getRuntime().exec(EA.getString(EAC.JASPER_CSV_EDITOR) + " " + filename);
    //      }
    //      if (filename.endsWith(".xls")) {
    //          Runtime.getRuntime().exec(EA.getString(EAC.JASPER_XLS_EDITOR) + " " + filename);
    //      }
    //  }
    //
    //  private static void read(String filename) throws IOException {
    //      Runtime.getRuntime().exec(EA.getString(EAC.JASPER_PDF_READER) + " " + filename);
    //  }
    //
    //  private static void view(JasperPrint jasperPrint) throws JRException {
    //      JasperViewer.viewReport(jasperPrint, false);
    //  }
    //
}