package gov.samhsa.consent2share.service.valueset; import gov.samhsa.consent2share.domain.consent.ConsentRepository; import gov.samhsa.consent2share.domain.valueset.ValueSetCategory; import gov.samhsa.consent2share.domain.valueset.ValueSetCategoryRepository; import gov.samhsa.consent2share.service.dto.AddConsentFieldsDto; import gov.samhsa.consent2share.service.dto.ValueSetCategoryDto; import java.util.ArrayList; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.transaction.annotation.Transactional; /** * The Class ValueSetCategoryServiceImpl. */ public class ValueSetCategoryServiceImpl implements ValueSetCategoryService { /** The logger. */ private final Logger logger = LoggerFactory.getLogger(this.getClass()); /** The value set category repository. */ private ValueSetCategoryRepository valueSetCategoryRepository; /** The consent repository. */ private ConsentRepository consentRepository; /** The value set mgmt helper. */ ValueSetMgmtHelper valueSetMgmtHelper; /** * Instantiates a new value set category service impl. * * @param valueSetCategoryRepository * the value set category repository * @param consentRepository * the consent repository * @param valueSetMgmtHelper * the value set mgmt helper */ public ValueSetCategoryServiceImpl( ValueSetCategoryRepository valueSetCategoryRepository, ConsentRepository consentRepository, ValueSetMgmtHelper valueSetMgmtHelper) { super(); this.valueSetCategoryRepository = valueSetCategoryRepository; this.consentRepository = consentRepository; this.valueSetMgmtHelper = valueSetMgmtHelper; } /* * (non-Javadoc) * * @see * gov.samhsa.consent2share.service.valueset.ValueSetCategoryService#create * (gov.samhsa.consent2share.service.dto.ValueSetCategoryDto) */ @Override @Transactional public ValueSetCategoryDto create(ValueSetCategoryDto created) { logger.debug("Creating a new ValueSetCategory with information: " + created); String description = (created.getDescription() != null) ? created .getDescription() : ""; ValueSetCategory valueSetCategory = ValueSetCategory .getBuilder(created.getCode(), created.getName(), created.getUserName()).description(description).build(); valueSetCategory = valueSetCategoryRepository.save(valueSetCategory); return valueSetMgmtHelper.createValuesetCategoryDtoFromEntity( valueSetCategory, consentRepository); } /* * (non-Javadoc) * * @see * gov.samhsa.consent2share.service.valueset.ValueSetCategoryService#delete * (java.lang.Long) */ @Override @Transactional(rollbackFor = ValueSetCategoryNotFoundException.class) public ValueSetCategoryDto delete(Long valueSetCategoryId) throws ValueSetCategoryNotFoundException { logger.debug("Deleting ValueSetCategory with id: " + valueSetCategoryId); ValueSetCategory deleted = valueSetCategoryRepository .findOne(valueSetCategoryId); if (deleted == null) { logger.debug("No ValueSetCategory found with an id: " + valueSetCategoryId); throw new ValueSetCategoryNotFoundException(); } valueSetCategoryRepository.delete(deleted); return valueSetMgmtHelper.createValuesetCategoryDtoFromEntity(deleted, consentRepository); } /* * (non-Javadoc) * * @see * gov.samhsa.consent2share.service.valueset.ValueSetCategoryService#findAll * () */ @Override public List<ValueSetCategoryDto> findAll() { logger.debug("Finding all valueSetCategories"); List<ValueSetCategory> valueSetCategories = valueSetCategoryRepository .findAll(); return valueSetMgmtHelper.convertValueSetCategoryEntitiesToDtos( valueSetCategories, consentRepository); } /* * (non-Javadoc) * * @see * gov.samhsa.consent2share.service.valueset.ValueSetCategoryService#findById * (java.lang.Long) */ @Override public ValueSetCategoryDto findById(Long id) { logger.debug("Finding a ValueSetCategory with id: " + id); ValueSetCategory valueSetCategory = valueSetCategoryRepository .findOne(id); return valueSetMgmtHelper.createValuesetCategoryDtoFromEntity( valueSetCategory, consentRepository); } /* * (non-Javadoc) * * @see * gov.samhsa.consent2share.service.valueset.ValueSetCategoryService#update * (gov.samhsa.consent2share.service.dto.ValueSetCategoryDto) */ @Override @Transactional(rollbackFor = ValueSetCategoryNotFoundException.class) public ValueSetCategoryDto update(ValueSetCategoryDto updated) throws ValueSetCategoryNotFoundException { logger.debug("Updating ValueSetCategory with information" + updated); ValueSetCategory valueSetCategory = valueSetCategoryRepository .findOne(updated.getId()); if (valueSetCategory == null) { logger.debug("No ValueSetCategory found with an id: " + updated.getId()); throw new ValueSetCategoryNotFoundException(); } valueSetCategory.update(updated.getCode(), updated.getName(), updated.getDescription(), updated.getUserName()); return valueSetMgmtHelper.createValuesetCategoryDtoFromEntity( valueSetCategory, consentRepository); } /* * (non-Javadoc) * * @see gov.samhsa.consent2share.service.valueset.ValueSetCategoryService# * findAllValueSetCategoriesAddConsentFieldsDto() */ @Override public List<AddConsentFieldsDto> findAllValueSetCategoriesAddConsentFieldsDto() { List<ValueSetCategory> valueSetCategoryList = valueSetCategoryRepository .findAll(); List<AddConsentFieldsDto> sensitivityPolicyDto = new ArrayList<AddConsentFieldsDto>(); for (ValueSetCategory valueSetCategory : valueSetCategoryList) { AddConsentFieldsDto sensitivityPolicyDtoItem = new AddConsentFieldsDto(); sensitivityPolicyDtoItem.setCode(valueSetCategory.getCode()); sensitivityPolicyDtoItem.setDisplayName(valueSetCategory.getName()); sensitivityPolicyDtoItem.setDescription(valueSetCategory .getDescription()); sensitivityPolicyDto.add(sensitivityPolicyDtoItem); } return sensitivityPolicyDto; } /** * This setter method should be used only by unit tests. * * @param valueSetCategoryRepository * the new value set category repository */ protected void setValueSetCategoryRepository( ValueSetCategoryRepository valueSetCategoryRepository) { this.valueSetCategoryRepository = valueSetCategoryRepository; } }