Advertisement
Guest User

df

a guest
Dec 3rd, 2017
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.83 KB | None | 0 0
  1. @Service("contributionPersistenceService")
  2. @Slf4j
  3. @Transactional(
  4.         rollbackFor = {
  5.                 ResourceForbiddenException.class,
  6.                 ResourceNotFoundException.class,
  7.                 ResourceConflictException.class,
  8.                 ConstraintViolationException.class
  9.         }
  10. )
  11. @Validated
  12. public class ContributionPersistenceServiceImpl implements ContributionPersistenceService {
  13.  
  14.     private final MovieRepository movieRepository;
  15.     private final MovieInfoRepository movieInfoRepository;
  16.     private final ContributionRepository contributionRepository;
  17.     private final UserRepository userRepository;
  18.     private final MoviePersistenceService moviePersistenceService;
  19.  
  20.     @PersistenceContext
  21.     private EntityManager entityManager;
  22.  
  23.     /**
  24.      * Constructor.
  25.      *
  26.      * @param movieRepository The movie repository to use
  27.      * @param movieInfoRepository The movie info repository to use
  28.      * @param contributionRepository The contribution repository to use
  29.      * @param userRepository The user repository to use
  30.      */
  31.     @Autowired
  32.     public ContributionPersistenceServiceImpl(
  33.             @NotNull final MovieRepository movieRepository,
  34.             @NotNull final MovieInfoRepository movieInfoRepository,
  35.             @NotNull final ContributionRepository contributionRepository,
  36.             @NotNull final UserRepository userRepository,
  37.             @NotNull final MoviePersistenceService moviePersistenceService
  38.     ) {
  39.         this.movieRepository = movieRepository;
  40.         this.movieInfoRepository = movieInfoRepository;
  41.         this.contributionRepository = contributionRepository;
  42.         this.userRepository = userRepository;
  43.         this.moviePersistenceService = moviePersistenceService;
  44.     }
  45.  
  46.     @Override
  47.     public void updateOtherTitleContribution(
  48.             ContributionUpdate<OtherTitle> contribution,
  49.             Long contributionId,
  50.             Long userId
  51.     ) throws ResourceNotFoundException {
  52.         log.info("Called with contribution {}, contributionId {}, userId {}",
  53.                 contribution, contributionId, userId);
  54.  
  55.         final UserEntity user = this.findUser(userId);
  56.         final ContributionEntity contributionEntity = this.findContribution(contributionId, EditStatus.WAITING, user, MovieField.OTHER_TITLE);
  57.  
  58.         this.cleanUpIdsToAdd(contributionEntity.getIdsToAdd(), contribution.getElementsToAdd().keySet(), contributionEntity.getMovie().getOtherTitles());
  59.  
  60.         contribution.getNewElementsToAdd()
  61.                 .forEach(otherTitle -> {
  62.                     final Long id = this.moviePersistenceService.createOtherTitle(otherTitle, contributionEntity.getMovie(), user);
  63.                     contributionEntity.getIdsToAdd().add(id);
  64.                 });
  65.     }
  66.  
  67.     private UserEntity findUser(final Long id) {
  68.         return this.userRepository
  69.                 .findByIdAndEnabledTrue(id)
  70.                 .orElseThrow(() -> new ResourceNotFoundException("No user found with id " + id));
  71.     }
  72.  
  73.     private ContributionEntity findContribution(final Long id, final EditStatus status, final UserEntity user, final MovieField field) {
  74.         return this.contributionRepository
  75.                 .findByIdAndStatusAndUserAndField(id, status, user, field)
  76.                 .orElseThrow(() -> new ResourceNotFoundException("No contribution found with id " + id));
  77.     }
  78.  
  79.  
  80.     private void cleanUpIdsToAdd(final List<Long> idsToAddFromEntity, final Set<Long> idsToAddFromDto,
  81.                                  final List<? extends MovieInfo> entites) {
  82.         for (final Iterator<Long> it = idsToAddFromEntity.iterator(); it.hasNext(); ) {
  83.             final Long id = it.next();
  84.             if (!idsToAddFromDto.contains(id)) {
  85.                 it.remove();
  86.                 entites.removeIf(movieInfo -> movieInfo.getId().equals(id));
  87.             }
  88.         }
  89.     }
  90. }
  91.  
  92.  
  93.  
  94. @Service("moviePersistenceService")
  95. @Slf4j
  96. @Transactional(
  97.         rollbackFor = {
  98.                 ResourceForbiddenException.class,
  99.                 ResourceNotFoundException.class,
  100.                 ResourceConflictException.class,
  101.                 ConstraintViolationException.class
  102.         }
  103. )
  104. @Validated
  105. public class MoviePersistenceServiceImpl implements MoviePersistenceService {
  106. ...
  107.    @Override
  108.     public Long createOtherTitle(
  109.             @NotNull @Valid final OtherTitle otherTitle,
  110.             @NotNull final MovieEntity movie,
  111.             @NotNull final UserEntity user
  112.     ) {
  113.         final MovieOtherTitle movieOtherTitle = new MovieOtherTitle(otherTitle.getTitle(), otherTitle.getCountry());
  114.         movieOtherTitle.setMovie(movie);
  115.         movieOtherTitle.setUser(user);
  116.  
  117.         movie.getOtherTitles().add(movieOtherTitle);
  118.  
  119.         this.movieRepository.save(movie);
  120.  
  121.         return Iterables.getLast(movie.getOtherTitles()).getId();
  122.     }
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement