Java tutorial
/* * 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"); } }