Advertisement
Guest User

getFindPredicate

a guest
Oct 15th, 2017
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.42 KB | None | 0 0
  1.     public static Predicate getFindPredicate(
  2.             final Root<MovieEntity> root,
  3.             final CriteriaBuilder cb,
  4.             final String title,
  5.             final MovieType type,
  6.             final Integer fromYear,
  7.             final Integer toYear,
  8.             final List<CountryType> countries,
  9.             final List<LanguageType> languages,
  10.             final List<GenreType> genres
  11.     ) {
  12.         final List<Predicate> predicates = new ArrayList<>();
  13.  
  14.         if(StringUtils.isNotBlank(title)) {
  15.             predicates.add(cb.like(root.get(MovieEntity_.title), "%"+title+"%"));
  16.         }
  17.         if(Optional.ofNullable(type).isPresent()) {
  18.             predicates.add(cb.equal(root.get(MovieEntity_.type), type));
  19.         }
  20.         if(countries != null && !countries.isEmpty()) {
  21.             final Join<MovieEntity, MovieCountry> listCountries = root.join(MovieEntity_.countries);
  22.             final List<Predicate> orPredicates =
  23.                     countries
  24.                             .stream()
  25.                             .map(country -> cb.equal(listCountries.get(MovieCountry_.country), country))
  26.                             .collect(Collectors.toList());
  27.             predicates.add(cb.or(orPredicates.toArray(new Predicate[orPredicates.size()])));
  28.         }
  29.         if(languages != null && !languages.isEmpty()) {
  30.             final Join<MovieEntity, MovieLanguage> listLanguages = root.join(MovieEntity_.languages);
  31.             final List<Predicate> orPredicates =
  32.                     languages
  33.                             .stream()
  34.                             .map(language -> cb.equal(listLanguages.get(MovieLanguage_.language), language))
  35.                             .collect(Collectors.toList());
  36.             predicates.add(cb.or(orPredicates.toArray(new Predicate[orPredicates.size()])));
  37.         }
  38.         if(genres != null && !genres.isEmpty()) {
  39.             final Join<MovieEntity, MovieGenre> listGenres = root.join(MovieEntity_.genres);
  40.             final List<Predicate> orPredicates =
  41.                     genres
  42.                             .stream()
  43.                             .map(genre -> cb.equal(listGenres.get(MovieGenre_.genre), genre))
  44.                             .collect(Collectors.toList());
  45.             predicates.add(cb.or(orPredicates.toArray(new Predicate[orPredicates.size()])));
  46.         }
  47.  
  48.         return cb.and(predicates.toArray(new Predicate[predicates.size()]));
  49.     }
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement