package gov.samhsa.consent2share.service.provider; import gov.samhsa.consent2share.domain.provider.OrganizationalProvider; import gov.samhsa.consent2share.domain.provider.OrganizationalProviderRepository; import gov.samhsa.consent2share.domain.provider.StaffOrganizationalProvider; import gov.samhsa.consent2share.domain.provider.StaffOrganizationalProviderRepository; import gov.samhsa.consent2share.service.dto.StaffOrganizationalProviderDto; 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 FavoriteOrganizationalProviderServiceImpl. */ @Transactional public class FavoriteOrganizationalProviderServiceImpl implements FavoriteOrganizationalProviderService { /** The logger. */ private final Logger logger = LoggerFactory.getLogger(this.getClass()); /** The organizational provider repository. */ OrganizationalProviderRepository organizationalProviderRepository; /** The model mapper. */ ModelMapper modelMapper; /** The staff organizational provider repository. */ StaffOrganizationalProviderRepository staffOrganizationalProviderRepository; /** * Instantiates a new favorite organizational provider service impl. * * @param organizationalProviderRepository * the organizational provider repository * @param modelMapper * the model mapper * @param staffOrganizationalProviderRepository * the staff organizational provider repository */ public FavoriteOrganizationalProviderServiceImpl( OrganizationalProviderRepository organizationalProviderRepository, ModelMapper modelMapper, StaffOrganizationalProviderRepository staffOrganizationalProviderRepository) { super(); this.organizationalProviderRepository = organizationalProviderRepository; this.modelMapper = modelMapper; this.staffOrganizationalProviderRepository = staffOrganizationalProviderRepository; } /* * (non-Javadoc) * * @see gov.samhsa.consent2share.service.provider. * FavoriteOrganizationalProviderService * #findAllFavoriteOrganizationalProviders() */ @Override public List<StaffOrganizationalProvider> findAllFavoriteOrganizationalProviders() { return staffOrganizationalProviderRepository.findAll(); } /* * (non-Javadoc) * * @see gov.samhsa.consent2share.service.provider. * FavoriteOrganizationalProviderService * #findAllStaffOrganizationalProvidersDto() */ @Override public List<StaffOrganizationalProviderDto> findAllStaffOrganizationalProvidersDto() { List<StaffOrganizationalProviderDto> providers = new ArrayList<StaffOrganizationalProviderDto>(); for (StaffOrganizationalProvider entity : staffOrganizationalProviderRepository .findAll()) { providers.add(modelMapper.map(entity, StaffOrganizationalProviderDto.class)); } return providers; } /* * (non-Javadoc) * * @see gov.samhsa.consent2share.service.provider. * FavoriteOrganizationalProviderService * #isFavoriteOrganizationalProvider(long) */ @Override public boolean isFavoriteOrganizationalProvider(long id) throws IllegalArgumentException { StaffOrganizationalProvider searchedProvider = null; OrganizationalProvider organizationalProvider = findOrganizationalProvider(id); searchedProvider = staffOrganizationalProviderRepository .findByOrganizationalProvider(organizationalProvider); if (searchedProvider == null) { return false; } else { return true; } } /* * (non-Javadoc) * * @see gov.samhsa.consent2share.service.provider. * FavoriteOrganizationalProviderService * #addFavouriteOrganizationalProvider(gov * .samhsa.consent2share.domain.provider.OrganizationalProvider) */ @Override public void addFavouriteOrganizationalProvider( OrganizationalProvider organizationalProvider) { StaffOrganizationalProvider staffOrganizationalProvider = new StaffOrganizationalProvider(); staffOrganizationalProvider .setOrganizationalProvider(organizationalProvider); staffOrganizationalProvider.setId(0); staffOrganizationalProviderRepository.save(staffOrganizationalProvider); } /* * (non-Javadoc) * * @see gov.samhsa.consent2share.service.provider. * FavoriteOrganizationalProviderService * #addFavoriteOrganizationalProvider(long) */ @Override public boolean addFavoriteOrganizationalProvider(long id) throws IllegalArgumentException { boolean isAlreadyFavorite = false; isAlreadyFavorite = isFavoriteOrganizationalProvider(id); if (isAlreadyFavorite == true) { logger.info("Organizational Provider with id = '" + id + "' is already a favorite."); return false; } else { StaffOrganizationalProvider staffOrganizationalProvider = new StaffOrganizationalProvider(); OrganizationalProvider organizationalProvider = findOrganizationalProvider(id); if (organizationalProvider == null) { logger.warn("Unable to find an organizational provider with id = '" + id + "'."); throw new NullPointerException("findOrganizationalProvider(" + id + ") in OrganizationalProviderService returned null"); } staffOrganizationalProvider .setOrganizationalProvider(organizationalProvider); staffOrganizationalProviderRepository .save(staffOrganizationalProvider); return true; } } /* * (non-Javadoc) * * @see gov.samhsa.consent2share.service.provider. * FavoriteOrganizationalProviderService * #deleteFavoriteOrganizationalProvider(long) */ @Override public void deleteFavoriteOrganizationalProvider(long id) throws IllegalArgumentException { staffOrganizationalProviderRepository.delete(id); } /** * Find organizational provider. * * @param id * the id * @return the organizational provider */ private OrganizationalProvider findOrganizationalProvider(Long id) { return organizationalProviderRepository.findOne(id); } }