List of usage examples for javax.persistence.criteria CriteriaBuilder greaterThanOrEqualTo
<Y extends Comparable<? super Y>> Predicate greaterThanOrEqualTo(Expression<? extends Y> x, Y y);
From source file:carrental.repository.reservation.CarSpecification.java
public static Specification<Car> powerIsGreaterThanOrEqual(final Integer minPower) { return new Specification<Car>() { @Override/* w w w . jav a 2 s . com*/ public Predicate toPredicate(Root<Car> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder cb) { return cb.greaterThanOrEqualTo(root.get("power"), minPower); } }; }
From source file:edu.chalmers.dat076.moviefinder.persistence.EpisodeSpecs.java
/** * /*from w w w .j a va 2 s .c o m*/ * @param imdbRating * @return All Episodes with a rating equal to or above imdbRating */ public static Specification<Episode> hasImdbRatingAbove(final double imdbRating) { return new Specification<Episode>() { @Override public Predicate toPredicate(Root<Episode> root, CriteriaQuery<?> cq, CriteriaBuilder cb) { return cb.greaterThanOrEqualTo(root.get(Episode_.imdbRating), imdbRating); } }; }
From source file:edu.chalmers.dat076.moviefinder.persistence.SeriesSpecs.java
/** * /*from ww w.j av a 2 s. c o m*/ * @param imdbRating * @return All Series with a rating equal to or above imdbRating */ public static Specification<Series> hasImdbRatingAbove(final double imdbRating) { return new Specification<Series>() { @Override public Predicate toPredicate(Root<Series> root, CriteriaQuery<?> cq, CriteriaBuilder cb) { return cb.greaterThanOrEqualTo(root.get(Series_.imdbRating), imdbRating); } }; }
From source file:edu.chalmers.dat076.moviefinder.persistence.MovieSpecs.java
/** * /*from ww w . jav a 2 s . c o m*/ * @param imdbRating * @return returns all movies with a rating equal to or above imdbRating. */ public static Specification<Movie> hasImdbRatingAbove(final double imdbRating) { return new Specification<Movie>() { @Override public Predicate toPredicate(Root<Movie> root, CriteriaQuery<?> cq, CriteriaBuilder cb) { return cb.greaterThanOrEqualTo(root.get(Movie_.imdbRating), imdbRating); } }; }
From source file:edu.chalmers.dat076.moviefinder.persistence.MovieSpecs.java
/** * /*from www .j a v a 2 s. c om*/ * @param runtime * @return All movies with an runtime equal to or above runtime. */ public static Specification<Movie> hasRuntimeAbove(final int runtime) { return new Specification<Movie>() { @Override public Predicate toPredicate(Root<Movie> root, CriteriaQuery<?> cq, CriteriaBuilder cb) { return cb.greaterThanOrEqualTo(root.get(Movie_.runtime), runtime); } }; }
From source file:com.netflix.genie.server.repository.jpa.ClusterSpecs.java
/** * Generate a specification given the parameters. * * @param name The name of the cluster to find * @param statuses The statuses of the clusters to find * @param tags The tags of the clusters to find * @param minUpdateTime The minimum updated time of the clusters to find * @param maxUpdateTime The maximum updated time of the clusters to find * @return The specification//from w w w . j a v a 2 s . c om */ public static Specification<Cluster> find(final String name, final Set<ClusterStatus> statuses, final Set<String> tags, final Long minUpdateTime, final Long maxUpdateTime) { return new Specification<Cluster>() { @Override public Predicate toPredicate(final Root<Cluster> root, final CriteriaQuery<?> cq, final CriteriaBuilder cb) { final List<Predicate> predicates = new ArrayList<>(); if (StringUtils.isNotBlank(name)) { predicates.add(cb.like(root.get(Cluster_.name), name)); } if (minUpdateTime != null) { predicates.add(cb.greaterThanOrEqualTo(root.get(Cluster_.updated), new Date(minUpdateTime))); } if (maxUpdateTime != null) { predicates.add(cb.lessThan(root.get(Cluster_.updated), new Date(maxUpdateTime))); } if (tags != null) { for (final String tag : tags) { if (StringUtils.isNotBlank(tag)) { predicates.add(cb.isMember(tag, root.get(Cluster_.tags))); } } } if (statuses != null && !statuses.isEmpty()) { //Could optimize this as we know size could use native array final List<Predicate> orPredicates = new ArrayList<>(); for (final ClusterStatus status : statuses) { orPredicates.add(cb.equal(root.get(Cluster_.status), status)); } predicates.add(cb.or(orPredicates.toArray(new Predicate[orPredicates.size()]))); } return cb.and(predicates.toArray(new Predicate[predicates.size()])); } }; }
From source file:com.netflix.genie.web.data.repositories.jpa.specifications.JpaClusterSpecs.java
/** * Generate a specification given the parameters. * * @param name The name of the cluster to find * @param statuses The statuses of the clusters to find * @param tags The tags of the clusters to find * @param minUpdateTime The minimum updated time of the clusters to find * @param maxUpdateTime The maximum updated time of the clusters to find * @return The specification//from w ww. j a v a2 s. c o m */ public static Specification<ClusterEntity> find(@Nullable final String name, @Nullable final Set<ClusterStatus> statuses, @Nullable final Set<TagEntity> tags, @Nullable final Instant minUpdateTime, @Nullable final Instant maxUpdateTime) { return (final Root<ClusterEntity> root, final CriteriaQuery<?> cq, final CriteriaBuilder cb) -> { final List<Predicate> predicates = new ArrayList<>(); if (StringUtils.isNotBlank(name)) { predicates.add(JpaSpecificationUtils.getStringLikeOrEqualPredicate(cb, root.get(ClusterEntity_.name), name)); } if (minUpdateTime != null) { predicates.add(cb.greaterThanOrEqualTo(root.get(ClusterEntity_.updated), minUpdateTime)); } if (maxUpdateTime != null) { predicates.add(cb.lessThan(root.get(ClusterEntity_.updated), maxUpdateTime)); } if (tags != null && !tags.isEmpty()) { final Join<ClusterEntity, TagEntity> tagEntityJoin = root.join(ClusterEntity_.tags); predicates.add(tagEntityJoin.in(tags)); cq.groupBy(root.get(ClusterEntity_.id)); cq.having(cb.equal(cb.count(root.get(ClusterEntity_.id)), tags.size())); } if (statuses != null && !statuses.isEmpty()) { //Could optimize this as we know size could use native array predicates.add( cb.or(statuses.stream().map(status -> cb.equal(root.get(ClusterEntity_.status), status)) .toArray(Predicate[]::new))); } return cb.and(predicates.toArray(new Predicate[predicates.size()])); }; }
From source file:com.hengyi.japp.execution.Util.java
public static void queryCommand(CriteriaBuilder cb, CriteriaQuery<?> cq, Root<PayOrder> root, PayOrderQueryCommand command) {// www .ja v a2 s . c om List<Predicate> ps = Lists.newArrayListWithCapacity(3); if (command.getCustomer() != null) { ps.add(cb.equal(root.get(PayOrder_.customer), command.getCustomer())); } if (command.getPayDateStart() != null) { ps.add(cb.greaterThanOrEqualTo(root.get(PayOrder_.payDate), command.getPayDateStart())); } if (command.getPayDateEnd() != null) { ps.add(cb.lessThanOrEqualTo(root.get(PayOrder_.payDate), command.getPayDateStart())); } cq.where(ps.toArray(new Predicate[ps.size()])); }
From source file:com.netflix.genie.core.jpa.specifications.JpaClusterSpecs.java
/** * Generate a specification given the parameters. * * @param name The name of the cluster to find * @param statuses The statuses of the clusters to find * @param tags The tags of the clusters to find * @param minUpdateTime The minimum updated time of the clusters to find * @param maxUpdateTime The maximum updated time of the clusters to find * @return The specification//w w w . j av a 2 s. c om */ public static Specification<ClusterEntity> find(final String name, final Set<ClusterStatus> statuses, final Set<String> tags, final Date minUpdateTime, final Date maxUpdateTime) { return (final Root<ClusterEntity> root, final CriteriaQuery<?> cq, final CriteriaBuilder cb) -> { final List<Predicate> predicates = new ArrayList<>(); if (StringUtils.isNotBlank(name)) { predicates.add(JpaSpecificationUtils.getStringLikeOrEqualPredicate(cb, root.get(ClusterEntity_.name), name)); } if (minUpdateTime != null) { predicates.add(cb.greaterThanOrEqualTo(root.get(ClusterEntity_.updated), minUpdateTime)); } if (maxUpdateTime != null) { predicates.add(cb.lessThan(root.get(ClusterEntity_.updated), maxUpdateTime)); } if (tags != null && !tags.isEmpty()) { predicates .add(cb.like(root.get(ClusterEntity_.tags), JpaSpecificationUtils.getTagLikeString(tags))); } if (statuses != null && !statuses.isEmpty()) { //Could optimize this as we know size could use native array final List<Predicate> orPredicates = statuses.stream() .map(status -> cb.equal(root.get(ClusterEntity_.status), status)) .collect(Collectors.toList()); predicates.add(cb.or(orPredicates.toArray(new Predicate[orPredicates.size()]))); } return cb.and(predicates.toArray(new Predicate[predicates.size()])); }; }
From source file:com.bxf.hradmin.common.utils.QueryParameterTransformer.java
@SuppressWarnings({ "unchecked", "rawtypes" })
public static Predicate generatePredicate(Root root, CriteriaBuilder builder,
QueryParameter... queryParameters) {
Predicate condition = builder.conjunction();
for (QueryParameter queryParameter : queryParameters) {
Object value = queryParameter.getValue();
if (value == null || StringUtils.isBlank(value.toString())) {
continue;
}/*from w w w. ja v a2 s . c o m*/
Path path = root.get(queryParameter.getKey());
switch (queryParameter.getMode()) {
case BETWEEN:
Object[] values = asArray(value);
if (values != null) {
condition = builder.and(builder.between((Path<Comparable>) path, asComparable(values[0]),
asComparable(values[1])));
}
break;
case GREATER_THAN:
condition = builder.and(condition,
builder.greaterThan((Path<Comparable>) path, asComparable(value)));
break;
case GREATER_EQUALS:
condition = builder.and(condition,
builder.greaterThanOrEqualTo((Path<Comparable>) path, asComparable(value)));
break;
case LESS_THAN:
condition = builder.and(condition, builder.lessThan((Path<Comparable>) path, asComparable(value)));
break;
case LESS_EQUALS:
condition = builder.and(condition,
builder.lessThanOrEqualTo((Path<Comparable>) path, asComparable(value)));
break;
case IS_NULL:
condition = builder.and(condition, builder.isNull(path));
break;
case IS_NOT_NULL:
condition = builder.and(condition, builder.isNotNull(path));
break;
case IN:
condition = builder.and(condition, path.in(asArray(value)));
break;
case NOT_IN:
condition = builder.and(condition, builder.not(path.in(asArray(value))));
break;
case LIKE:
condition = builder.and(condition, builder.like(path, "%" + String.valueOf(value) + "%"));
break;
case NOT_LIKE:
condition = builder.and(condition, builder.notLike(path, "%" + String.valueOf(value) + "%"));
break;
case EQUALS:
condition = builder.and(condition, builder.equal(path, value));
break;
case NOT_EQUALS:
condition = builder.and(condition, builder.notEqual(path, value));
break;
default:
break;
}
}
return condition;
}