package gov.samhsa.consent2share.service.provider; import gov.samhsa.consent2share.domain.provider.IndividualProvider; import gov.samhsa.consent2share.domain.provider.IndividualProviderRepository; import gov.samhsa.consent2share.domain.provider.StaffIndividualProvider; import gov.samhsa.consent2share.domain.provider.StaffIndividualProviderRepository; import gov.samhsa.consent2share.service.dto.StaffIndividualProviderDto; import java.util.ArrayList; import java.util.List; import org.modelmapper.ModelMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.transaction.annotation.Transactional; /** * The Class FavoriteIndividualProviderServiceImpl. */ @Transactional public class FavoriteIndividualProviderServiceImpl implements FavoriteIndividualProviderService { /** The logger. */ private final Logger logger = LoggerFactory.getLogger(this.getClass()); /** The individual provider repository. */ IndividualProviderRepository individualProviderRepository; /** The model mapper. */ ModelMapper modelMapper; /** The staff individual provider repository. */ StaffIndividualProviderRepository staffIndividualProviderRepository; /** * Instantiates a new favorite individual provider service impl. * * @param individualProviderRepository * the individual provider repository * @param modelMapper * the model mapper * @param staffIndividualProviderRepository * the staff individual provider repository */ public FavoriteIndividualProviderServiceImpl( IndividualProviderRepository individualProviderRepository, ModelMapper modelMapper, StaffIndividualProviderRepository staffIndividualProviderRepository) { super(); this.individualProviderRepository = individualProviderRepository; this.modelMapper = modelMapper; this.staffIndividualProviderRepository = staffIndividualProviderRepository; } /* * (non-Javadoc) * * @see * gov.samhsa.consent2share.service.provider.FavoriteIndividualProviderService * #findAllStaffIndividualProviders() */ @Override public List<StaffIndividualProvider> findAllStaffIndividualProviders() { return staffIndividualProviderRepository.findAll(); } /* * (non-Javadoc) * * @see * gov.samhsa.consent2share.service.provider.FavoriteIndividualProviderService * #findAllStaffIndividualProvidersDto() */ @Override public List<StaffIndividualProviderDto> findAllStaffIndividualProvidersDto() { List<StaffIndividualProviderDto> providers = new ArrayList<StaffIndividualProviderDto>(); for (StaffIndividualProvider entity : staffIndividualProviderRepository .findAll()) { providers.add(modelMapper.map(entity, StaffIndividualProviderDto.class)); } return providers; } /* * (non-Javadoc) * * @see * gov.samhsa.consent2share.service.provider.FavoriteIndividualProviderService * #isFavoriteIndividualProvider(long) */ @Override public boolean isFavoriteIndividualProvider(long id) throws IllegalArgumentException { StaffIndividualProvider searchedProvider = null; IndividualProvider individualProvider = findIndividualProvider(id); searchedProvider = staffIndividualProviderRepository .findByIndividualProvider(individualProvider); if (searchedProvider == null) { return false; } else { return true; } } /* * (non-Javadoc) * * @see * gov.samhsa.consent2share.service.provider.FavoriteIndividualProviderService * #addFavoriteIndividualProvider(long) */ @Override public boolean addFavoriteIndividualProvider(long id) throws IllegalArgumentException { boolean isAlreadyFavorite = false; isAlreadyFavorite = isFavoriteIndividualProvider(id); if (isAlreadyFavorite == true) { logger.info("Individual Provider with id = '" + id + "' is already a favorite."); return false; } else { StaffIndividualProvider staffIndividualProvider = new StaffIndividualProvider(); IndividualProvider individualProvider = findIndividualProvider(id); if (individualProvider == null) { logger.warn("Unable to find an individual provider with id = '" + id + "'."); throw new NullPointerException("findIndividualProvider(" + id + ") in IndividualProviderService returned null"); } staffIndividualProvider.setIndividualProvider(individualProvider); staffIndividualProviderRepository.save(staffIndividualProvider); return true; } } /* * (non-Javadoc) * * @see * gov.samhsa.consent2share.service.provider.FavoriteIndividualProviderService * #addFavouriteIndividualProvider(gov.samhsa.consent2share.domain.provider. * IndividualProvider) */ @Override public void addFavouriteIndividualProvider( IndividualProvider individualProvider) { StaffIndividualProvider staffIndividualProvider = new StaffIndividualProvider(); staffIndividualProvider.setIndividualProvider(individualProvider); staffIndividualProvider.setId(0); staffIndividualProviderRepository.save(staffIndividualProvider); } /* * (non-Javadoc) * * @see * gov.samhsa.consent2share.service.provider.FavoriteIndividualProviderService * #deleteFavoriteIndividualProvider(long) */ @Override public void deleteFavoriteIndividualProvider(long id) throws IllegalArgumentException { staffIndividualProviderRepository.delete(id); } /** * Find individual provider. * * @param id * the id * @return the individual provider */ private IndividualProvider findIndividualProvider(Long id) { return individualProviderRepository.findOne(id); } }