com.dominion.salud.mpr.negocio.report.evaluaciones.impl.AcuEvalResReportImpl.java Source code

Java tutorial

Introduction

Here is the source code for com.dominion.salud.mpr.negocio.report.evaluaciones.impl.AcuEvalResReportImpl.java

Source

/*
 * Copyright (C) 2016 Dominion Global
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package com.dominion.salud.mpr.negocio.report.evaluaciones.impl;

import com.dominion.salud.mpr.negocio.configuration.MPRConstantes;
import com.dominion.salud.mpr.negocio.entities.evaluaciones.AcuEvalRes;
import com.dominion.salud.mpr.negocio.report.evaluaciones.AcuEvalResReport;
import com.dominion.salud.mpr.negocio.service.evaluaciones.AcuEvalResService;
import com.dominion.salud.mpr.negocio.service.exception.InformeException;
import com.dominion.salud.mpr.negocio.service.exception.InformeSinDatosException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.util.JRLoader;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 *
 * @author jcgonzalez
 */
@Service("acuEvalResReport")
public class AcuEvalResReportImpl extends AbstractEvaluacionesReportImpl<AcuEvalRes, Long>
        implements AcuEvalResReport {

    private static final Logger logger = LoggerFactory.getLogger(AcuEvalResReportImpl.class);

    @Autowired
    private AcuEvalResService acuEvalResService;

    /**
     *
     * @param parametros
     * @return
     * @throws com.dominion.salud.mpr.negocio.service.exception.InformeSinDatosException
     * @throws com.dominion.salud.mpr.negocio.service.exception.InformeException
     */
    @Override
    public String listadoAcuEvalResReport(Map<String, Object> parametros)
            throws InformeSinDatosException, InformeException {
        logger.debug("Generando el listado: " + MPR_LISTADO_RESULTADOS);

        logger.debug("     Parametros del listado: ");
        logger.debug("          idAcuerdo: " + parametros.get("idAcuerdo"));
        logger.debug("          txtAcuerdo: " + parametros.get("txtAcuerdo"));
        logger.debug("          idCentro: " + parametros.get("idCentro"));
        logger.debug("          txtCentro: " + parametros.get("txtCentro"));
        logger.debug("          fecIniEval: " + parametros.get("fecIniEval"));
        logger.debug("          fecFinEval: " + parametros.get("fecFinEval"));

        //CONVERSION DE PARAMETROS DE ENTRADA
        logger.debug("     Iniciando la conversion de parametros para el listado");
        SimpleDateFormat ddmmyyyy = new SimpleDateFormat("dd/MM/yyyy");
        Date fecIniEval = null;
        Date fecFinEval = null;

        try {
            if (StringUtils.isNoneBlank((String) parametros.get("fecIniEval"))) {
                logger.debug("          Iniciando la conversion de fecIniEval: "
                        + (String) parametros.get("fecIniEval"));
                fecIniEval = ddmmyyyy.parse((String) parametros.get("fecIniEval"));
                logger.debug("          Conversion de fecIniEval: " + (String) parametros.get("fecIniEval")
                        + " realizada correctamente: " + fecIniEval);
            }
        } catch (ParseException pe) {
            logger.warn("No se ha podido parsear fecIniEval: " + parametros.get("fecIniEval"));
        }

        try {
            if (StringUtils.isNoneBlank((String) parametros.get("fecFinEval"))) {
                logger.debug("          Iniciando la conversion de fecFinEval: "
                        + (String) parametros.get("fecFinEval"));
                fecFinEval = ddmmyyyy.parse((String) parametros.get("fecFinEval"));
                logger.debug("          Conversion de fecFinEval: " + (String) parametros.get("fecFinEval")
                        + " realizada correctamente: " + fecFinEval);
            }
        } catch (ParseException pe) {
            logger.warn("No se ha podido parsear fecFinEval: " + parametros.get("fecFinEval"));
        }

        Long idCentro = null;
        if (StringUtils.isNotBlank((String) parametros.get("idCentro"))) {
            logger.debug("          Iniciando la conversion de idCentro: " + (String) parametros.get("idCentro"));
            idCentro = NumberUtils.toLong((String) parametros.get("idCentro"));
            logger.debug("          Conversion de idCentro: " + (String) parametros.get("idCentro")
                    + " realizada correctamente: " + idCentro);
        }

        Long idAcuerdo = null;
        if (StringUtils.isNotBlank((String) parametros.get("idAcuerdo"))) {
            logger.debug("          Iniciando la conversion de idAcuerdo: " + (String) parametros.get("idAcuerdo"));
            idAcuerdo = NumberUtils.toLong((String) parametros.get("idAcuerdo"));
            logger.debug("          Conversion de idAcuerdo: " + (String) parametros.get("idAcuerdo")
                    + " realizada correctamente: " + idAcuerdo);
        }
        logger.debug("     Finaliza la conversion de parametros para el listado");

        //OBTENCION DE DATOS PARA POBLAR EL LISTADO
        logger.debug("     Iniciando la obtencion de informacion para el listado");
        List<AcuEvalRes> acuEvalReses = new ArrayList<>();
        acuEvalReses = acuEvalResService.findListadoAcuEvalRes(idCentro, idAcuerdo, fecIniEval, fecFinEval);
        logger.debug("          Se han obtenido: " + acuEvalReses.size() + " resultados");
        if (acuEvalReses.size() <= 0) {
            throw new InformeSinDatosException("No se han obtenido resultados");
        }
        logger.debug("     Finaliza la obtencion de informacion para el listado");

        //GENERACION DEL INFORME
        try {
            logger.debug("     Localizando la plantilla del listado: "
                    + getClass().getClassLoader().getResource(MPR_LISTADO_RESULTADOS));
            JasperReport reporte = (JasperReport) JRLoader
                    .loadObject(getClass().getClassLoader().getResource(MPR_LISTADO_RESULTADOS));
            logger.debug("     Plantilla del listado localizada correctamente");

            logger.debug("     Completando los datos del listado");
            JasperPrint jasperPrint = JasperFillManager.fillReport(reporte, parametros,
                    new JRBeanCollectionDataSource(acuEvalReses));
            logger.debug("     Datos del listado completados correctamente");

            logger.debug("     Generando el listado en la ubicacion: " + MPRConstantes._MPR_RESOURCES
                    + new Date().getTime() + ".pdf");
            String ruta = reportPDFtoFile(jasperPrint,
                    MPRConstantes._MPR_RESOURCES + new Date().getTime() + ".pdf");
            logger.debug("     Listado generado correctamente en la ubicacion: " + ruta);

            logger.debug("Listado: " + MPR_LISTADO_RESULTADOS + " generado correctamente");
            return ruta;
        } catch (Exception e) {
            throw new InformeException(e);
        }
    }
}