com.dominion.salud.mpr.negocio.report.tratamientos.impl.DispensacionesReportImpl.java Source code

Java tutorial

Introduction

Here is the source code for com.dominion.salud.mpr.negocio.report.tratamientos.impl.DispensacionesReportImpl.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.tratamientos.impl;

import com.dominion.salud.mpr.negocio.configuration.MPRConstantes;
import com.dominion.salud.mpr.negocio.entities.tratamientos.Dispensaciones;
import com.dominion.salud.mpr.negocio.report.tratamientos.DispensacionesReport;
import com.dominion.salud.mpr.negocio.service.exception.InformeException;
import com.dominion.salud.mpr.negocio.service.exception.InformeSinDatosException;
import com.dominion.salud.mpr.negocio.service.tratamientos.DispensacionesService;
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("dispensacionesReport")
public class DispensacionesReportImpl extends AbstractTratamientosReportImpl<Dispensaciones, Long>
        implements DispensacionesReport {

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

    @Autowired
    private DispensacionesService dispensacionesService;

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

        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("          fecIniDisp: " + parametros.get("fecIniDisp"));
        logger.debug("          fecFinDisp: " + parametros.get("fecFinDisp"));

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

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

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

        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<Dispensaciones> dispensacioneses = new ArrayList<>();
        dispensacioneses = dispensacionesService.findListadoDispensaciones(idCentro, idAcuerdo, fecIniDisp,
                fecFinDisp);
        logger.debug("          Se han obtenido: " + dispensacioneses.size() + " resultados");
        if (dispensacioneses.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_DISPENSACIONES));
            JasperReport reporte = (JasperReport) JRLoader
                    .loadObject(getClass().getClassLoader().getResource(MPR_LISTADO_DISPENSACIONES));
            logger.debug("     Plantilla del listado localizada correctamente");

            logger.debug("     Completando los datos del listado");
            JasperPrint jasperPrint = JasperFillManager.fillReport(reporte, parametros,
                    new JRBeanCollectionDataSource(dispensacioneses));
            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_DISPENSACIONES + " generado correctamente");
            return ruta;
        } catch (Exception e) {
            throw new InformeException(e);
        }
    }

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

        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("          fecIniDisp: " + parametros.get("fecIniDisp"));
        logger.debug("          fecFinDisp: " + parametros.get("fecFinDisp"));

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

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

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

        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<Dispensaciones> dispensacioneses = new ArrayList<>();
        dispensacioneses = dispensacionesService.findListadoDispensacionesDetallado(idCentro, idAcuerdo, fecIniDisp,
                fecFinDisp);
        logger.debug("          Se han obtenido: " + dispensacioneses.size() + " resultados");
        if (dispensacioneses.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_DISPENSACIONES_DETALLADO));
            JasperReport reporte = (JasperReport) JRLoader
                    .loadObject(getClass().getClassLoader().getResource(MPR_LISTADO_DISPENSACIONES_DETALLADO));
            logger.debug("     Plantilla del listado localizada correctamente");

            logger.debug("     Completando los datos del listado");
            JasperPrint jasperPrint = JasperFillManager.fillReport(reporte, parametros,
                    new JRBeanCollectionDataSource(dispensacioneses));
            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_DISPENSACIONES_DETALLADO + " generado correctamente");
            return ruta;
        } catch (Exception e) {
            throw new InformeException(e);
        }
    }
}