in genie-web/src/main/java/com/netflix/genie/web/data/services/impl/jpa/queries/predicates/JobPredicates.java [69:153]
public static Predicate getFindPredicate(
final Root<JobEntity> root,
final CriteriaBuilder cb,
@Nullable final String id,
@Nullable final String name,
@Nullable final String user,
@Nullable final Set<String> statuses,
@Nullable final Set<String> tags,
@Nullable final String clusterName,
@Nullable final ClusterEntity cluster,
@Nullable final String commandName,
@Nullable final CommandEntity command,
@Nullable final Instant minStarted,
@Nullable final Instant maxStarted,
@Nullable final Instant minFinished,
@Nullable final Instant maxFinished,
@Nullable final String grouping,
@Nullable final String groupingInstance
) {
final List<Predicate> predicates = new ArrayList<>();
if (StringUtils.isNotBlank(id)) {
predicates.add(PredicateUtils.getStringLikeOrEqualPredicate(cb, root.get(JobEntity_.uniqueId), id));
}
if (StringUtils.isNotBlank(name)) {
predicates.add(PredicateUtils.getStringLikeOrEqualPredicate(cb, root.get(JobEntity_.name), name));
}
if (StringUtils.isNotBlank(user)) {
predicates.add(PredicateUtils.getStringLikeOrEqualPredicate(cb, root.get(JobEntity_.user), user));
}
if (statuses != null && !statuses.isEmpty()) {
predicates.add(
cb.or(
statuses
.stream()
.map(status -> cb.equal(root.get(JobEntity_.status), status)).toArray(Predicate[]::new)
)
);
}
if (tags != null && !tags.isEmpty()) {
predicates.add(cb.like(root.get(JobEntity_.tagSearchString), PredicateUtils.getTagLikeString(tags)));
}
if (cluster != null) {
predicates.add(cb.equal(root.get(JobEntity_.cluster), cluster));
}
if (StringUtils.isNotBlank(clusterName)) {
predicates.add(
PredicateUtils.getStringLikeOrEqualPredicate(cb, root.get(JobEntity_.clusterName), clusterName)
);
}
if (command != null) {
predicates.add(cb.equal(root.get(JobEntity_.command), command));
}
if (StringUtils.isNotBlank(commandName)) {
predicates.add(
PredicateUtils.getStringLikeOrEqualPredicate(cb, root.get(JobEntity_.commandName), commandName)
);
}
if (minStarted != null) {
predicates.add(cb.greaterThanOrEqualTo(root.get(JobEntity_.started), minStarted));
}
if (maxStarted != null) {
predicates.add(cb.lessThan(root.get(JobEntity_.started), maxStarted));
}
if (minFinished != null) {
predicates.add(cb.greaterThanOrEqualTo(root.get(JobEntity_.finished), minFinished));
}
if (maxFinished != null) {
predicates.add(cb.lessThan(root.get(JobEntity_.finished), maxFinished));
}
if (grouping != null) {
predicates.add(
PredicateUtils.getStringLikeOrEqualPredicate(cb, root.get(JobEntity_.grouping), grouping)
);
}
if (groupingInstance != null) {
predicates.add(
PredicateUtils.getStringLikeOrEqualPredicate(
cb,
root.get(JobEntity_.groupingInstance),
groupingInstance
)
);
}
return cb.and(predicates.toArray(new Predicate[0]));
}