Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static Predicate getFindPredicate(
- final Root<MovieEntity> root,
- final CriteriaBuilder cb,
- final String title,
- final MovieType type,
- final Integer fromYear,
- final Integer toYear,
- final List<CountryType> countries,
- final List<LanguageType> languages,
- final List<GenreType> genres
- ) {
- final List<Predicate> predicates = new ArrayList<>();
- if(StringUtils.isNotBlank(title)) {
- predicates.add(cb.like(root.get(MovieEntity_.title), "%"+title+"%"));
- }
- if(Optional.ofNullable(type).isPresent()) {
- predicates.add(cb.equal(root.get(MovieEntity_.type), type));
- }
- if(countries != null && !countries.isEmpty()) {
- final Join<MovieEntity, MovieCountry> listCountries = root.join(MovieEntity_.countries);
- final List<Predicate> orPredicates =
- countries
- .stream()
- .map(country -> cb.equal(listCountries.get(MovieCountry_.country), country))
- .collect(Collectors.toList());
- predicates.add(cb.or(orPredicates.toArray(new Predicate[orPredicates.size()])));
- }
- if(languages != null && !languages.isEmpty()) {
- final Join<MovieEntity, MovieLanguage> listLanguages = root.join(MovieEntity_.languages);
- final List<Predicate> orPredicates =
- languages
- .stream()
- .map(language -> cb.equal(listLanguages.get(MovieLanguage_.language), language))
- .collect(Collectors.toList());
- predicates.add(cb.or(orPredicates.toArray(new Predicate[orPredicates.size()])));
- }
- if(genres != null && !genres.isEmpty()) {
- final Join<MovieEntity, MovieGenre> listGenres = root.join(MovieEntity_.genres);
- final List<Predicate> orPredicates =
- genres
- .stream()
- .map(genre -> cb.equal(listGenres.get(MovieGenre_.genre), genre))
- .collect(Collectors.toList());
- predicates.add(cb.or(orPredicates.toArray(new Predicate[orPredicates.size()])));
- }
- return cb.and(predicates.toArray(new Predicate[predicates.size()]));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement