com.dominion.salud.nomenclator.negocio.service.impl.tools.BuzonSucesosServiceImpl.java Source code

Java tutorial

Introduction

Here is the source code for com.dominion.salud.nomenclator.negocio.service.impl.tools.BuzonSucesosServiceImpl.java

Source

/*
 * Copyright (C) 2015 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.nomenclator.negocio.service.impl.tools;

import com.dominion.salud.nomenclator.negocio.configuracion.NOMENCLATORConstantes;
import com.dominion.salud.nomenclator.negocio.entities.tools.BuzonSucesos;
import com.dominion.salud.nomenclator.negocio.service.aemps.AtcService;
import com.dominion.salud.nomenclator.negocio.service.aemps.DcpService;
import com.dominion.salud.nomenclator.negocio.service.aemps.DcpfService;
import com.dominion.salud.nomenclator.negocio.service.aemps.DcsaService;
import com.dominion.salud.nomenclator.negocio.service.aemps.EnvasesService;
import com.dominion.salud.nomenclator.negocio.service.aemps.ExcipientesService;
import com.dominion.salud.nomenclator.negocio.service.aemps.FormasFarService;
import com.dominion.salud.nomenclator.negocio.service.aemps.FormasFarSimpService;
import com.dominion.salud.nomenclator.negocio.service.aemps.LaboratoriosService;
import com.dominion.salud.nomenclator.negocio.service.aemps.PrincipiosActivosService;
import com.dominion.salud.nomenclator.negocio.service.aemps.SituacionRegistroService;
import com.dominion.salud.nomenclator.negocio.service.aemps.UnidadesContenidoService;
import com.dominion.salud.nomenclator.negocio.service.aemps.UnidadesDosisService;
import com.dominion.salud.nomenclator.negocio.service.aemps.ViasAdminService;
import com.dominion.salud.nomenclator.negocio.service.impl.aemps.v5.MedicamentosV5ServiceImpl;
import com.dominion.salud.nomenclator.negocio.service.tools.BuzonSucesosService;
import com.dominion.salud.util.ZipUtil;
import java.io.File;
import java.util.Date;
import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

/**
 *
 * @author jcgonzalez
 */
@Service("buzonSucesosService")
public class BuzonSucesosServiceImpl extends AbstractToolsServiceImpl<BuzonSucesos, Long>
        implements BuzonSucesosService, Runnable {

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

    private static final String DICCIONARIO_ATC = "DICCIONARIO_ATC.xml";
    private static final String DICCIONARIO_DCP = "DICCIONARIO_DCP.xml";
    private static final String DICCIONARIO_DCPF = "DICCIONARIO_DCPF.xml";
    private static final String DICCIONARIO_DCSA = "DICCIONARIO_DCSA.xml";
    private static final String DICCIONARIO_ENVASES = "DICCIONARIO_ENVASES.xml";
    private static final String DICCIONARIO_EXCIPIENTES_DECL_OBLIGATORIA = "DICCIONARIO_EXCIPIENTES_DECL_OBLIGATORIA.xml";
    private static final String DICCIONARIO_FORMA_FARMACEUTICA_SIMPLIFICADAS = "DICCIONARIO_FORMA_FARMACEUTICA_SIMPLIFICADAS.xml";
    private static final String DICCIONARIO_FORMA_FARMACEUTICA = "DICCIONARIO_FORMA_FARMACEUTICA.xml";
    private static final String DICCIONARIO_LABORATORIOS = "DICCIONARIO_LABORATORIOS.xml";
    private static final String DICCIONARIO_PRINCIPIOS_ACTIVOS = "DICCIONARIO_PRINCIPIOS_ACTIVOS.xml";
    private static final String DICCIONARIO_SITUACION_REGISTRO = "DICCIONARIO_SITUACION_REGISTRO.xml";
    private static final String DICCIONARIO_UNIDAD_CONTENIDO = "DICCIONARIO_UNIDAD_CONTENIDO.xml";
    private static final String DICCIONARIO_UNIDAD_DOSIS = "DICCIONARIO_UNIDAD_DOSIS.xml";
    private static final String DICCIONARIO_VIAS_ADMINISTRACION = "DICCIONARIO_VIAS_ADMINISTRACION.xml";
    private static final String PRESCRIPCION = "Prescripcion.xml";

    @Autowired
    private AtcService atcService;
    @Autowired
    private DcpService dcpService;
    @Autowired
    private DcpfService dcpfService;
    @Autowired
    private DcsaService dcsaService;
    @Autowired
    private EnvasesService envasesService;
    @Autowired
    private ExcipientesService excipientesService;
    @Autowired
    private FormasFarService formasFarService;
    @Autowired
    private FormasFarSimpService formasFarSimpService;
    @Autowired
    private LaboratoriosService laboratoriosService;
    @Autowired
    private PrincipiosActivosService principiosActivosService;
    @Autowired
    private SituacionRegistroService situacionRegistroService;
    @Autowired
    private UnidadesContenidoService unidadesContenidoService;
    @Autowired
    private UnidadesDosisService unidadesDosisService;
    @Autowired
    private ViasAdminService viasAdminService;

    @Autowired
    private MedicamentosV5ServiceImpl medicamentosService;

    public static MultipartFile file;

    @Override
    public void run() {
        upload(file);
    }

    @Override
    public void upload(MultipartFile file) {
        logger.info("INICIANDO la carga de la base de datos de AEMPS");

        BuzonSucesos buzonSucesos = null;
        File zip = null;
        File dest = null;

        try {
            logger.debug("     Procesando el fichero: " + file.getOriginalFilename());

            zip = new File(NOMENCLATORConstantes._TEMP + file.getOriginalFilename());
            file.transferTo(zip);
            dest = new File(NOMENCLATORConstantes._TEMP);
            ZipUtil.unZip(zip, dest);

            //DICCIONARIO_ATC
            try {
                logger.debug("          Iniciando la carga de " + DICCIONARIO_ATC);
                atcService.load(
                        new File(dest.getAbsolutePath() + System.getProperty("file.separator") + DICCIONARIO_ATC));
            } catch (Exception e) {
                logger.warn("          No se ha podido cargar " + DICCIONARIO_ATC + ": " + e.toString());
                buzonSucesos = new BuzonSucesos();
                buzonSucesos.setCodProceso(BuzonSucesos.DICCIONARIO_ATC);
                buzonSucesos.setFecIni(new Date());
                buzonSucesos.setFecFin(new Date());
                buzonSucesos.setMensaje("No se ha podido cargar " + DICCIONARIO_ATC + ": " + e.toString());
                save(buzonSucesos);
            }

            //DICCIONARIO_DCP
            try {
                logger.debug("          Iniciando la carga de " + DICCIONARIO_DCP);
                dcpService.load(
                        new File(dest.getAbsolutePath() + System.getProperty("file.separator") + DICCIONARIO_DCP));
            } catch (Exception e) {
                logger.warn("          No se ha podido cargar " + DICCIONARIO_DCP + ": " + e.toString());
                buzonSucesos = new BuzonSucesos();
                buzonSucesos.setCodProceso(BuzonSucesos.DICCIONARIO_DCP);
                buzonSucesos.setFecIni(new Date());
                buzonSucesos.setFecFin(new Date());
                buzonSucesos.setMensaje("No se ha podido cargar " + DICCIONARIO_DCP + ": " + e.toString());
                save(buzonSucesos);
            }

            //DICCIONARIO_DCPF
            try {
                logger.debug("          Iniciando la carga de " + DICCIONARIO_DCPF);
                dcpfService.load(
                        new File(dest.getAbsolutePath() + System.getProperty("file.separator") + DICCIONARIO_DCPF));
            } catch (Exception e) {
                logger.warn("          No se ha podido cargar " + DICCIONARIO_DCPF + ": " + e.toString());
                buzonSucesos = new BuzonSucesos();
                buzonSucesos.setCodProceso(BuzonSucesos.DICCIONARIO_DCPF);
                buzonSucesos.setFecIni(new Date());
                buzonSucesos.setFecFin(new Date());
                buzonSucesos.setMensaje("No se ha podido cargar " + DICCIONARIO_DCPF + ": " + e.toString());
                save(buzonSucesos);
            }

            //DICCIONARIO_DCSA
            try {
                logger.debug("          Iniciando la carga de " + DICCIONARIO_DCSA);
                dcsaService.load(
                        new File(dest.getAbsolutePath() + System.getProperty("file.separator") + DICCIONARIO_DCSA));
            } catch (Exception e) {
                logger.warn("          No se ha podido cargar " + DICCIONARIO_DCSA + ": " + e.toString());
                buzonSucesos = new BuzonSucesos();
                buzonSucesos.setCodProceso(BuzonSucesos.DICCIONARIO_DCSA);
                buzonSucesos.setFecIni(new Date());
                buzonSucesos.setFecFin(new Date());
                buzonSucesos.setMensaje("No se ha podido cargar " + DICCIONARIO_DCSA + ": " + e.toString());
                save(buzonSucesos);
            }

            //DICCIONARIO_ENVASES
            try {
                logger.debug("          Iniciando la carga de " + DICCIONARIO_ENVASES);
                envasesService.load(new File(
                        dest.getAbsolutePath() + System.getProperty("file.separator") + DICCIONARIO_ENVASES));
            } catch (Exception e) {
                logger.warn("          No se ha podido cargar " + DICCIONARIO_ENVASES + ": " + e.toString());
                buzonSucesos = new BuzonSucesos();
                buzonSucesos.setCodProceso(BuzonSucesos.DICCIONARIO_ENVASES);
                buzonSucesos.setFecIni(new Date());
                buzonSucesos.setFecFin(new Date());
                buzonSucesos.setMensaje("No se ha podido cargar " + DICCIONARIO_ENVASES + ": " + e.toString());
                save(buzonSucesos);
            }

            //DICCIONARIO_EXCIPIENTES_DECL_OBLIGATORIA
            try {
                logger.debug("          Iniciando la carga de " + DICCIONARIO_EXCIPIENTES_DECL_OBLIGATORIA);
                excipientesService.load(new File(dest.getAbsolutePath() + System.getProperty("file.separator")
                        + DICCIONARIO_EXCIPIENTES_DECL_OBLIGATORIA));
            } catch (Exception e) {
                logger.warn("          No se ha podido cargar " + DICCIONARIO_EXCIPIENTES_DECL_OBLIGATORIA + ": "
                        + e.toString());
                buzonSucesos = new BuzonSucesos();
                buzonSucesos.setCodProceso(BuzonSucesos.DICCIONARIO_EXCIPIENTES_DECL_OBLIGATORIA);
                buzonSucesos.setFecIni(new Date());
                buzonSucesos.setFecFin(new Date());
                buzonSucesos.setMensaje(
                        "No se ha podido cargar " + DICCIONARIO_EXCIPIENTES_DECL_OBLIGATORIA + ": " + e.toString());
                save(buzonSucesos);
            }

            //DICCIONARIO_FORMA_FARMACEUTICA_SIMPLIFICADAS
            try {
                logger.debug("          Iniciando la carga de " + DICCIONARIO_FORMA_FARMACEUTICA_SIMPLIFICADAS);
                formasFarSimpService.load(new File(dest.getAbsolutePath() + System.getProperty("file.separator")
                        + DICCIONARIO_FORMA_FARMACEUTICA_SIMPLIFICADAS));
            } catch (Exception e) {
                logger.warn("          No se ha podido cargar " + DICCIONARIO_FORMA_FARMACEUTICA_SIMPLIFICADAS
                        + ": " + e.toString());
                buzonSucesos = new BuzonSucesos();
                buzonSucesos.setCodProceso(BuzonSucesos.DICCIONARIO_FORMA_FARMACEUTICA_SIMPLIFICADAS);
                buzonSucesos.setFecIni(new Date());
                buzonSucesos.setFecFin(new Date());
                buzonSucesos.setMensaje("No se ha podido cargar " + DICCIONARIO_FORMA_FARMACEUTICA_SIMPLIFICADAS
                        + ": " + e.toString());
                save(buzonSucesos);
            }

            //DICCIONARIO_FORMA_FARMACEUTICA
            try {
                logger.debug("          Iniciando la carga de " + DICCIONARIO_FORMA_FARMACEUTICA);
                formasFarService.load(new File(dest.getAbsolutePath() + System.getProperty("file.separator")
                        + DICCIONARIO_FORMA_FARMACEUTICA));
            } catch (Exception e) {
                logger.warn(
                        "          No se ha podido cargar " + DICCIONARIO_FORMA_FARMACEUTICA + ": " + e.toString());
                buzonSucesos = new BuzonSucesos();
                buzonSucesos.setCodProceso(BuzonSucesos.DICCIONARIO_FORMA_FARMACEUTICA);
                buzonSucesos.setFecIni(new Date());
                buzonSucesos.setFecFin(new Date());
                buzonSucesos.setMensaje(
                        "No se ha podido cargar " + DICCIONARIO_FORMA_FARMACEUTICA + ": " + e.toString());
                save(buzonSucesos);
            }

            //DICCIONARIO_LABORATORIOS
            try {
                logger.debug("          Iniciando la carga de " + DICCIONARIO_LABORATORIOS);
                laboratoriosService.load(new File(
                        dest.getAbsolutePath() + System.getProperty("file.separator") + DICCIONARIO_LABORATORIOS));
            } catch (Exception e) {
                logger.warn("          No se ha podido cargar " + DICCIONARIO_LABORATORIOS + ": " + e.toString());
                buzonSucesos = new BuzonSucesos();
                buzonSucesos.setCodProceso(BuzonSucesos.DICCIONARIO_LABORATORIOS);
                buzonSucesos.setFecIni(new Date());
                buzonSucesos.setFecFin(new Date());
                buzonSucesos.setMensaje("No se ha podido cargar " + DICCIONARIO_LABORATORIOS + ": " + e.toString());
                save(buzonSucesos);
            }

            //DICCIONARIO_PRINCIPIOS_ACTIVOS
            try {
                logger.debug("          Iniciando la carga de " + DICCIONARIO_PRINCIPIOS_ACTIVOS);
                principiosActivosService.load(new File(dest.getAbsolutePath() + System.getProperty("file.separator")
                        + DICCIONARIO_PRINCIPIOS_ACTIVOS));
            } catch (Exception e) {
                logger.warn(
                        "          No se ha podido cargar " + DICCIONARIO_PRINCIPIOS_ACTIVOS + ": " + e.toString());
                buzonSucesos = new BuzonSucesos();
                buzonSucesos.setCodProceso(BuzonSucesos.DICCIONARIO_PRINCIPIOS_ACTIVOS);
                buzonSucesos.setFecIni(new Date());
                buzonSucesos.setFecFin(new Date());
                buzonSucesos.setMensaje(
                        "No se ha podido cargar " + DICCIONARIO_PRINCIPIOS_ACTIVOS + ": " + e.toString());
                save(buzonSucesos);
            }

            //DICCIONARIO_SITUACION_REGISTRO
            try {
                logger.debug("          Iniciando la carga de " + DICCIONARIO_SITUACION_REGISTRO);
                situacionRegistroService.load(new File(dest.getAbsolutePath() + System.getProperty("file.separator")
                        + DICCIONARIO_SITUACION_REGISTRO));
            } catch (Exception e) {
                logger.warn(
                        "          No se ha podido cargar " + DICCIONARIO_SITUACION_REGISTRO + ": " + e.toString());
                buzonSucesos = new BuzonSucesos();
                buzonSucesos.setCodProceso(BuzonSucesos.DICCIONARIO_SITUACION_REGISTRO);
                buzonSucesos.setFecIni(new Date());
                buzonSucesos.setFecFin(new Date());
                buzonSucesos.setMensaje(
                        "No se ha podido cargar " + DICCIONARIO_SITUACION_REGISTRO + ": " + e.toString());
                save(buzonSucesos);
            }

            //DICCIONARIO_UNIDAD_CONTENIDO
            try {
                logger.debug("          Iniciando la carga de " + DICCIONARIO_UNIDAD_CONTENIDO);
                unidadesContenidoService.load(new File(dest.getAbsolutePath() + System.getProperty("file.separator")
                        + DICCIONARIO_UNIDAD_CONTENIDO));
            } catch (Exception e) {
                logger.warn(
                        "          No se ha podido cargar " + DICCIONARIO_UNIDAD_CONTENIDO + ": " + e.toString());
                buzonSucesos = new BuzonSucesos();
                buzonSucesos.setCodProceso(BuzonSucesos.DICCIONARIO_UNIDAD_CONTENIDO);
                buzonSucesos.setFecIni(new Date());
                buzonSucesos.setFecFin(new Date());
                buzonSucesos
                        .setMensaje("No se ha podido cargar " + DICCIONARIO_UNIDAD_CONTENIDO + ": " + e.toString());
                save(buzonSucesos);
            }
            //DICCIONARIO_UNIDAD_DOSIS
            try {
                logger.debug("          Iniciando la carga de " + DICCIONARIO_UNIDAD_DOSIS);
                unidadesDosisService.load(new File(
                        dest.getAbsolutePath() + System.getProperty("file.separator") + DICCIONARIO_UNIDAD_DOSIS));
            } catch (Exception e) {
                logger.warn("          No se ha podido cargar " + DICCIONARIO_UNIDAD_DOSIS + ": " + e.toString());
                buzonSucesos = new BuzonSucesos();
                buzonSucesos.setCodProceso(BuzonSucesos.DICCIONARIO_UNIDAD_DOSIS);
                buzonSucesos.setFecIni(new Date());
                buzonSucesos.setFecFin(new Date());
                buzonSucesos.setMensaje("No se ha podido cargar " + DICCIONARIO_UNIDAD_DOSIS + ": " + e.toString());
                save(buzonSucesos);
            }

            //DICCIONARIO_VIAS_ADMINISTRACION
            try {
                logger.debug("          Iniciando la carga de " + DICCIONARIO_VIAS_ADMINISTRACION);
                viasAdminService.load(new File(dest.getAbsolutePath() + System.getProperty("file.separator")
                        + DICCIONARIO_VIAS_ADMINISTRACION));
            } catch (Exception e) {
                logger.warn("          No se ha podido cargar " + DICCIONARIO_VIAS_ADMINISTRACION + ": "
                        + e.toString());
                buzonSucesos = new BuzonSucesos();
                buzonSucesos.setCodProceso(BuzonSucesos.DICCIONARIO_VIAS_ADMINISTRACION);
                buzonSucesos.setFecIni(new Date());
                buzonSucesos.setFecFin(new Date());
                buzonSucesos.setMensaje(
                        "No se ha podido cargar " + DICCIONARIO_VIAS_ADMINISTRACION + ": " + e.toString());
                save(buzonSucesos);
            }

            //DICCIONARIO_MEDICAMENTOS
            try {
                logger.debug("          Iniciando la carga de " + PRESCRIPCION);
                medicamentosService.load(
                        new File(dest.getAbsolutePath() + System.getProperty("file.separator") + PRESCRIPCION));
            } catch (Exception e) {
                logger.warn("          No se ha podido cargar " + PRESCRIPCION + ": " + e.toString());
                buzonSucesos = new BuzonSucesos();
                buzonSucesos.setCodProceso(BuzonSucesos.DICCIONARIO_MEDICAMENTOS);
                buzonSucesos.setFecIni(new Date());
                buzonSucesos.setFecFin(new Date());
                buzonSucesos.setMensaje("No se ha podido cargar " + PRESCRIPCION + ": " + e.toString());
                save(buzonSucesos);
            }

            logger.debug("     Fichero: " + file.getOriginalFilename() + " procesado correctamente");
        } catch (Exception e) {
            logger.error("Se han producido errores al cargar la base de datos de AEMPS: " + e.toString());
            buzonSucesos = new BuzonSucesos();
            buzonSucesos.setCodProceso(BuzonSucesos.AEMPS);
            buzonSucesos.setFecIni(new Date());
            buzonSucesos.setFecFin(new Date());
            buzonSucesos
                    .setMensaje("Se han producido errores al cargar la base de datos de AEMPS: " + e.toString());
            save(buzonSucesos);
        } finally {
            if (zip != null && zip.isFile()) {
                logger.debug("     Moviendo el fichero: " + zip.getName() + " al directorio: "
                        + NOMENCLATORConstantes._TEMP + "old" + System.getProperty("file.separator"));
                try {
                    FileUtils.moveFileToDirectory(zip,
                            new File(NOMENCLATORConstantes._TEMP + "old" + System.getProperty("file.separator")),
                            true);
                } catch (Exception e) {
                    logger.warn("     No se ha podido mover el fichero al directorio OLD: " + e.toString());
                }
            }

            if (dest != null && dest.isDirectory()) {
                logger.debug("     Eliminando ficheros temporales del directorio: " + dest.getAbsolutePath());
                File[] ficheros = dest.listFiles();
                for (int i = 0; i < ficheros.length; i++) {
                    if (ficheros[i] != null && ficheros[i].isFile()) {
                        ficheros[i].delete();
                    }
                }
            }
        }

        logger.info("FINALIZANDO la carga de la base de datos de AEMPS");
    }
}