package gov.samhsa.consent2share.service.valueset; import gov.samhsa.consent2share.domain.valueset.CodeSystem; import gov.samhsa.consent2share.domain.valueset.CodeSystemRepository; import gov.samhsa.consent2share.service.dto.CodeSystemDto; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.transaction.annotation.Transactional; /** * The Class CodeSystemServiceImpl. */ public class CodeSystemServiceImpl implements CodeSystemService { /** The Constant LOGGER. */ private static final Logger LOGGER = LoggerFactory .getLogger(CodeSystemService.class); /** The code system repository. */ private CodeSystemRepository codeSystemRepository; /** The value set mgmt helper. */ ValueSetMgmtHelper valueSetMgmtHelper; /** * Instantiates a new code system service impl. * * @param codeSystemRepository * the code system repository * @param valueSetMgmtHelper * the value set mgmt helper */ public CodeSystemServiceImpl(CodeSystemRepository codeSystemRepository, ValueSetMgmtHelper valueSetMgmtHelper) { super(); this.codeSystemRepository = codeSystemRepository; this.valueSetMgmtHelper = valueSetMgmtHelper; } /* * (non-Javadoc) * * @see * gov.samhsa.consent2share.service.valueset.CodeSystemService#create(gov * .samhsa.consent2share.service.dto.CodeSystemDto) */ @Override @Transactional public CodeSystemDto create(CodeSystemDto created) { LOGGER.debug("Creating a new CodeSystem with information: " + created); String displayName = (created.getDisplayName() != null) ? created .getDisplayName() : ""; CodeSystem codeSystem = CodeSystem .getBuilder(created.getCodeSystemOId(), created.getCode(), created.getName(), created.getUserName()) .displayName(displayName).build(); codeSystem = codeSystemRepository.save(codeSystem); return valueSetMgmtHelper.createCodeSystemDtoFromEntity(codeSystem); } /* * (non-Javadoc) * * @see * gov.samhsa.consent2share.service.valueset.CodeSystemService#delete(java * .lang.Long) */ @Override @Transactional(rollbackFor = CodeSystemNotFoundException.class) public CodeSystemDto delete(Long codeSystemId) throws CodeSystemNotFoundException { LOGGER.debug("Deleting CodeSystem with id: " + codeSystemId); CodeSystem deleted = codeSystemRepository.findOne(codeSystemId); if (deleted == null) { LOGGER.debug("No CodeSystem found with an id: " + codeSystemId); throw new CodeSystemNotFoundException(); } codeSystemRepository.delete(deleted); return valueSetMgmtHelper.createCodeSystemDtoFromEntity(deleted); } /* * (non-Javadoc) * * @see * gov.samhsa.consent2share.service.valueset.CodeSystemService#findAll() */ @Override public List<CodeSystemDto> findAll() { LOGGER.debug("Finding all codeSystems"); List<CodeSystem> codeSystems = codeSystemRepository.findAll(); return valueSetMgmtHelper.convertCodeSystemEntitiesToDtos(codeSystems); } /* * (non-Javadoc) * * @see * gov.samhsa.consent2share.service.valueset.CodeSystemService#findById( * java.lang.Long) */ @Override public CodeSystemDto findById(Long id) { LOGGER.debug("Finding a CodeSystem with id: " + id); CodeSystem codeSystem = codeSystemRepository.findOne(id); return valueSetMgmtHelper.createCodeSystemDtoFromEntity(codeSystem); } /* * (non-Javadoc) * * @see * gov.samhsa.consent2share.service.valueset.CodeSystemService#update(gov * .samhsa.consent2share.service.dto.CodeSystemDto) */ @Override @Transactional(rollbackFor = CodeSystemNotFoundException.class) public CodeSystemDto update(CodeSystemDto updated) throws CodeSystemNotFoundException { LOGGER.debug("Updating CodeSystem with information" + updated); CodeSystem codeSystem = codeSystemRepository.findOne(updated.getId()); if (codeSystem == null) { LOGGER.debug("No CodeSystem found with an id: " + updated.getId()); throw new CodeSystemNotFoundException(); } codeSystem.update(updated.getCodeSystemOId(), updated.getCode(), updated.getName(), updated.getDisplayName(), updated.getUserName()); return valueSetMgmtHelper.createCodeSystemDtoFromEntity(codeSystem); } /** * This setter method should be used only by unit tests. * * @param codeSystemRepository * the new code system repository */ protected void setCodeSystemRepository( CodeSystemRepository codeSystemRepository) { this.codeSystemRepository = codeSystemRepository; } }