public static Predicate getFindPredicate()

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]));
    }