MoviePersistenceServiceImpl.java 文件源码

java
阅读 31 收藏 0 点赞 0 评论 0

项目:REST-Web-Services 作者:
/**
 * {@inheritDoc}
 */
@Override
public void saveRating(
        @NotNull @Valid final Rate rate,
        @Min(1) final Long movieId,
        @NotBlank final String userId
) throws ResourceNotFoundException, ResourceConflictException {
    log.info("Called with rate {}, movieId {}, userId {}", rate, movieId, userId);

    final UserEntity user = this.findUser(userId);
    final MovieEntity movie = this.findMovie(movieId, DataStatus.ACCEPTED);

    final List<MovieReleaseDateEntity> releaseDates = movie.getReleaseDates();

    Lists.newArrayList(releaseDates).sort(Comparator.comparing(MovieReleaseDateEntity::getDate));

    if(!releaseDates.isEmpty()
            && new Date().before(releaseDates.iterator().next().getDate())) {
        throw new ResourceConflictException("The movie with id " + movieId + " had no premiere");
    }

    boolean rated = false;

    final List<MovieRateEntity> ratings = movie.getRatings();
    for(final MovieRateEntity mRate : ratings) {
        if(mRate.getUser().getUniqueId().equals(userId)) {
            mRate.setRate(rate.getRate());

            movie.setRating(this.calculationRating(ratings));

            rated = true;

            break;
        }
    }

    if(!rated) {
        final MovieRateEntity movieRate = new MovieRateEntity();
        movieRate.setRate(rate.getRate());
        movieRate.setMovie(movie);
        movieRate.setUser(user);

        movie.getRatings().add(movieRate);

        movie.setRating(this.calculationRating(movie.getRatings()));
    }
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号