Java tutorial
/* * 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.service.equivalencias.impl; import com.dominion.salud.mpr.negocio.entities.admin.Centros; import com.dominion.salud.mpr.negocio.entities.equivalencias.IndicacionesExt; import com.dominion.salud.mpr.negocio.entities.maestros.Indicaciones; import com.dominion.salud.mpr.negocio.repositories.equivalencias.IndicacionesExtRepository; import com.dominion.salud.mpr.negocio.service.equivalencias.IndicacionesExtService; import com.dominion.salud.mpr.negocio.service.exception.NoExisteEquivalenciaException; import java.util.List; import javax.persistence.NoResultException; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * * @author jcgonzalez */ @Service("indicacionesExtService") public class IndicacionesExtServiceImpl extends AbstractEquivalenciasServiceImpl<IndicacionesExt, Long> implements IndicacionesExtService { private static final Logger logger = LoggerFactory.getLogger(IndicacionesExtServiceImpl.class); @Autowired private IndicacionesExtRepository indicacionesExtRepository; /** * Busca los registros de <b>indicaciones_ext</b> para un centro concreto * * @param centros el centro para filtrar los registros * @return listado de IndicacionesExt para el centro indicado */ @Override public List<IndicacionesExt> findAllByIdCentro(Centros centros) { return indicacionesExtRepository.findAllByIdCentro(centros); } /** * Busca los registros de <b>indicaciones_ext</b> para un centro concreto sin * equivalencia asociada * * @param centros el centro para filtrar los registros * @return listado de IndicacionesExt para el centro indicado sin equivalencia * asociada */ @Override public List<IndicacionesExt> selectAllByIdCentroSinEquivalencia(Centros centros) { return indicacionesExtRepository.selectAllByIdCentroSinEquivalencia(centros); } /** * Busca la lista de equivalencias para un centro a partir de un codigo de plataforma. * * @param centros del que se quiere obtener la equivalencia * @param indicaciones del que se quiere obtener la equivalencia * @return la lista de equivalencias obtenidas * @throws com.dominion.salud.mpr.negocio.service.exception.NoExisteEquivalenciaException si no encuentra alguna * equivalencia con los datos indicados */ @Override public List<IndicacionesExt> findEquivalencia(Centros centros, Indicaciones indicaciones) throws NoExisteEquivalenciaException { try { logger.debug(" Buscando equivalencia para el CENTRO: " + centros.toString() + " y la INDICACION:" + indicaciones.toString()); List<IndicacionesExt> indicacionesExts = indicacionesExtRepository.findEquivalencia(centros, indicaciones); if (indicacionesExts != null && !indicacionesExts.isEmpty()) { return indicacionesExts; } else { throw new NoExisteEquivalenciaException("No se ha encontrado equivalencia para el CENTRO: " + centros.toString() + " y la INDICACION:" + indicaciones.toString()); } } catch (NoResultException nre) { throw new NoExisteEquivalenciaException("No se ha encontrado equivalencia para el CENTRO: " + centros.toString() + " y la INDICACION:" + indicaciones.toString()); } } /** * Traduce un codigo de centro a un codigo de plataforma. * * @param indicacionesExt para traducir * @return el valor de la plataforma encontrado * @throws com.dominion.salud.mpr.negocio.service.exception.NoExisteEquivalenciaException si no se puede * traducir la equivalencia */ @Override public IndicacionesExt traducirEquivalencia(IndicacionesExt indicacionesExt) throws NoExisteEquivalenciaException { try { if (StringUtils.isNotBlank(indicacionesExt.getCodIndicacionExt())) { logger.debug(" Traduciendo equivalencia de INDICACION: " + indicacionesExt.toString()); indicacionesExt = indicacionesExtRepository.traducirEquivalencia(indicacionesExt); if (indicacionesExt.getIndicaciones() != null) { return indicacionesExt; } } throw new NoExisteEquivalenciaException( "No se ha podido traducir INDICACION: " + indicacionesExt.toString()); } catch (NoResultException nre) { throw new NoExisteEquivalenciaException( "No se ha podido traducir INDICACION: " + indicacionesExt.toString() + ": " + nre.toString()); } } /** * Busca una equivalencia concreta. Si no existe, la inserta. * * @param indicacionesExt con el codigo, descripcion y centro para buscar * @return el contenedor de la equivalencia encontrada o insertada * @throws com.dominion.salud.mpr.negocio.service.exception.NoExisteEquivalenciaException si no se puede * traducir la equivalencia */ @Override public IndicacionesExt traducirEquivalenciaAndInsert(IndicacionesExt indicacionesExt) throws NoExisteEquivalenciaException { try { return traducirEquivalencia(indicacionesExt); } catch (NoExisteEquivalenciaException neee) { try { indicacionesExtRepository.traducirEquivalencia(indicacionesExt); } catch (NoResultException nre) { if (StringUtils.isNotBlank(indicacionesExt.getCodIndicacionExt()) && StringUtils.isNotBlank(indicacionesExt.getTxtIndicacionExt())) { logger.debug(" No se ha podido traducir, insertando equivalencia de INDICACION: " + indicacionesExt.toString()); save(indicacionesExt); } } throw neee; } } }