List of usage examples for javax.persistence.criteria CriteriaBuilder or
Predicate or(Predicate... restrictions);
From source file:com.netflix.genie.server.repository.jpa.CommandSpecs.java
/** * Get all the clusters given the specified parameters. * * @param applicationId The id of the application that is registered with these commands * @param statuses The status of the commands * @return The specification/* w w w . j ava 2 s . c o m*/ */ public static Specification<Command> findCommandsForApplication(final String applicationId, final Set<CommandStatus> statuses) { return new Specification<Command>() { @Override public Predicate toPredicate(final Root<Command> root, final CriteriaQuery<?> cq, final CriteriaBuilder cb) { final List<Predicate> predicates = new ArrayList<>(); final Join<Command, Application> application = root.join(Command_.application); predicates.add(cb.equal(application.get(Application_.id), applicationId)); if (statuses != null && !statuses.isEmpty()) { //Could optimize this as we know size could use native array final List<Predicate> orPredicates = new ArrayList<>(); for (final CommandStatus status : statuses) { orPredicates.add(cb.equal(root.get(Command_.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.server.repository.jpa.ClusterSpecs.java
/** * Get all the clusters given the specified parameters. * * @param commandId The id of the command that is registered with this cluster * @param statuses The status of the cluster * @return The specification/*from www. j a v a 2 s .c o m*/ */ public static Specification<Cluster> findClustersForCommand(final String commandId, final Set<ClusterStatus> statuses) { return new Specification<Cluster>() { @Override public Predicate toPredicate(final Root<Cluster> root, final CriteriaQuery<?> cq, final CriteriaBuilder cb) { final List<Predicate> predicates = new ArrayList<>(); final Join<Cluster, Command> commands = root.join(Cluster_.commands); predicates.add(cb.equal(commands.get(Command_.id), commandId)); 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.core.jpa.specifications.JpaApplicationSpecs.java
/** * Get a specification using the specified parameters. * * @param name The name of the application * @param user The name of the user who created the application * @param statuses The status of the application * @param tags The set of tags to search the command for * @param type The type of applications to fine * @return A specification object used for querying *//*w ww . ja v a2 s .c o m*/ public static Specification<ApplicationEntity> find(final String name, final String user, final Set<ApplicationStatus> statuses, final Set<String> tags, final String type) { return (final Root<ApplicationEntity> root, final CriteriaQuery<?> cq, final CriteriaBuilder cb) -> { final List<Predicate> predicates = new ArrayList<>(); if (StringUtils.isNotBlank(name)) { predicates.add(JpaSpecificationUtils.getStringLikeOrEqualPredicate(cb, root.get(ApplicationEntity_.name), name)); } if (StringUtils.isNotBlank(user)) { predicates.add(JpaSpecificationUtils.getStringLikeOrEqualPredicate(cb, root.get(ApplicationEntity_.user), user)); } if (statuses != null && !statuses.isEmpty()) { final List<Predicate> orPredicates = statuses.stream() .map(status -> cb.equal(root.get(ApplicationEntity_.status), status)) .collect(Collectors.toList()); predicates.add(cb.or(orPredicates.toArray(new Predicate[orPredicates.size()]))); } if (tags != null && !tags.isEmpty()) { predicates.add( cb.like(root.get(ApplicationEntity_.tags), JpaSpecificationUtils.getTagLikeString(tags))); } if (StringUtils.isNotBlank(type)) { predicates.add(JpaSpecificationUtils.getStringLikeOrEqualPredicate(cb, root.get(ApplicationEntity_.type), type)); } return cb.and(predicates.toArray(new Predicate[predicates.size()])); }; }
From source file:com.netflix.genie.core.jpa.specifications.JpaCommandSpecs.java
/** * Get a specification using the specified parameters. * * @param name The name of the command * @param user The name of the user who created the command * @param statuses The status of the command * @param tags The set of tags to search the command for * @return A specification object used for querying *//* ww w . j av a 2 s . com*/ public static Specification<CommandEntity> find(final String name, final String user, final Set<CommandStatus> statuses, final Set<String> tags) { return (final Root<CommandEntity> root, final CriteriaQuery<?> cq, final CriteriaBuilder cb) -> { final List<Predicate> predicates = new ArrayList<>(); if (StringUtils.isNotBlank(name)) { predicates.add(JpaSpecificationUtils.getStringLikeOrEqualPredicate(cb, root.get(CommandEntity_.name), name)); } if (StringUtils.isNotBlank(user)) { predicates.add(JpaSpecificationUtils.getStringLikeOrEqualPredicate(cb, root.get(CommandEntity_.user), user)); } if (statuses != null && !statuses.isEmpty()) { final List<Predicate> orPredicates = statuses.stream() .map(status -> cb.equal(root.get(CommandEntity_.status), status)) .collect(Collectors.toList()); predicates.add(cb.or(orPredicates.toArray(new Predicate[orPredicates.size()]))); } if (tags != null && !tags.isEmpty()) { predicates .add(cb.like(root.get(CommandEntity_.tags), JpaSpecificationUtils.getTagLikeString(tags))); } return cb.and(predicates.toArray(new Predicate[predicates.size()])); }; }
From source file:com.netflix.genie.server.repository.jpa.ApplicationSpecs.java
/** * Get a specification using the specified parameters. * * @param name The name of the application * @param userName The name of the user who created the application * @param statuses The status of the application * @param tags The set of tags to search the command for * @return A specification object used for querying *//*from ww w. j av a2s.c o m*/ public static Specification<Application> find(final String name, final String userName, final Set<ApplicationStatus> statuses, final Set<String> tags) { return new Specification<Application>() { @Override public Predicate toPredicate(final Root<Application> root, final CriteriaQuery<?> cq, final CriteriaBuilder cb) { final List<Predicate> predicates = new ArrayList<>(); if (StringUtils.isNotBlank(name)) { predicates.add(cb.equal(root.get(Application_.name), name)); } if (StringUtils.isNotBlank(userName)) { predicates.add(cb.equal(root.get(Application_.user), userName)); } if (statuses != null && !statuses.isEmpty()) { //Could optimize this as we know size could use native array final List<Predicate> orPredicates = new ArrayList<>(); for (final ApplicationStatus status : statuses) { orPredicates.add(cb.equal(root.get(Application_.status), status)); } predicates.add(cb.or(orPredicates.toArray(new Predicate[orPredicates.size()]))); } if (tags != null) { for (final String tag : tags) { if (StringUtils.isNotBlank(tag)) { predicates.add(cb.isMember(tag, root.get(Application_.tags))); } } } return cb.and(predicates.toArray(new Predicate[predicates.size()])); } }; }
From source file:com.netflix.genie.server.repository.jpa.CommandSpecs.java
/** * Get a specification using the specified parameters. * * @param name The name of the command * @param userName The name of the user who created the command * @param statuses The status of the command * @param tags The set of tags to search the command for * @return A specification object used for querying */// w w w . j ava 2s .c o m public static Specification<Command> find(final String name, final String userName, final Set<CommandStatus> statuses, final Set<String> tags) { return new Specification<Command>() { @Override public Predicate toPredicate(final Root<Command> root, final CriteriaQuery<?> cq, final CriteriaBuilder cb) { final List<Predicate> predicates = new ArrayList<>(); if (StringUtils.isNotBlank(name)) { predicates.add(cb.equal(root.get(Command_.name), name)); } if (StringUtils.isNotBlank(userName)) { predicates.add(cb.equal(root.get(Command_.user), userName)); } if (statuses != null && !statuses.isEmpty()) { //Could optimize this as we know size could use native array final List<Predicate> orPredicates = new ArrayList<>(); for (final CommandStatus status : statuses) { orPredicates.add(cb.equal(root.get(Command_.status), status)); } predicates.add(cb.or(orPredicates.toArray(new Predicate[orPredicates.size()]))); } if (tags != null) { for (final String tag : tags) { if (StringUtils.isNotBlank(tag)) { predicates.add(cb.isMember(tag, root.get(Command_.tags))); } } } return cb.and(predicates.toArray(new Predicate[predicates.size()])); } }; }
From source file:com.netflix.genie.server.repository.jpa.JobSpecs.java
/** * Find jobs based on the parameters.//from w w w.j a v a 2 s . c om * * @param id The job id * @param jobName The job name * @param userName The user who created the job * @param statuses The job statuses * @param tags The tags for the jobs to find * @param clusterName The cluster name * @param clusterId The cluster id * @param commandName The command name * @param commandId The command id * @return The specification */ public static Specification<Job> find(final String id, final String jobName, final String userName, final Set<JobStatus> statuses, final Set<String> tags, final String clusterName, final String clusterId, final String commandName, final String commandId) { return new Specification<Job>() { @Override public Predicate toPredicate(final Root<Job> root, final CriteriaQuery<?> cq, final CriteriaBuilder cb) { final List<Predicate> predicates = new ArrayList<>(); if (StringUtils.isNotBlank(id)) { predicates.add(cb.like(root.get(Job_.id), id)); } if (StringUtils.isNotBlank(jobName)) { predicates.add(cb.like(root.get(Job_.name), jobName)); } if (StringUtils.isNotBlank(userName)) { predicates.add(cb.equal(root.get(Job_.user), userName)); } if (statuses != null && !statuses.isEmpty()) { //Could optimize this as we know size could use native array final List<Predicate> orPredicates = new ArrayList<>(); for (final JobStatus status : statuses) { orPredicates.add(cb.equal(root.get(Job_.status), status)); } predicates.add(cb.or(orPredicates.toArray(new Predicate[orPredicates.size()]))); } if (tags != null) { for (final String tag : tags) { if (StringUtils.isNotBlank(tag)) { predicates.add(cb.isMember(tag, root.get(Job_.tags))); } } } if (StringUtils.isNotBlank(clusterName)) { predicates.add(cb.equal(root.get(Job_.executionClusterName), clusterName)); } if (StringUtils.isNotBlank(clusterId)) { predicates.add(cb.equal(root.get(Job_.executionClusterId), clusterId)); } if (StringUtils.isNotBlank(commandName)) { predicates.add(cb.equal(root.get(Job_.commandName), commandName)); } if (StringUtils.isNotBlank(commandId)) { predicates.add(cb.equal(root.get(Job_.commandId), commandId)); } return cb.and(predicates.toArray(new Predicate[predicates.size()])); } }; }
From source file:edu.pitt.dbmi.ccd.db.specification.AnnotationSpecification.java
/** * Requester access predicate// ww w . j av a 2s. c o m * <p> * annotation has public access OR annotation has private access AND * annotation belongs to requester OR annotation has group access AND * requester is in group */ private static Predicate authFilter(Root<Annotation> root, CriteriaBuilder cb, UserAccount requester) { final List<Predicate> predicates = new ArrayList<>(0); // public access predicates.add(cb.like(root.get(ACCESS).get(NAME), PUBLIC_ACCESS)); // private access AND belongs to requester predicates.add( cb.and(cb.like(root.get(ACCESS).get(NAME), PRIVATE_ACCESS), cb.equal(root.get(USER), requester))); // group access AND requester in group // criteriabuilder's in clause throws // sql error if collection has no elements if (requester.getGroups().size() > 0) { predicates.add(cb.and(cb.like(root.get(ACCESS).get(NAME), GROUP_ACCESS), root.get(GROUP).in(requester.getGroups()))); } return cb.or(predicates.toArray(new Predicate[predicates.size()])); }
From source file:gr.abiss.calipso.jpasearch.specifications.GenericSpecifications.java
@Deprecated protected static Predicate getPredicate(final Class clazz, final Restriction searchTerms, Root<Persistable> root, CriteriaBuilder cb) { LinkedList<Predicate> predicates = new LinkedList<Predicate>(); Predicate predicate;/*from ww w . j a va 2 s . c o m*/ // process child restrictions if (!CollectionUtils.isEmpty(searchTerms.getRestrictions())) { for (Restriction restriction : searchTerms.getRestrictions()) { predicates.add(getPredicate(clazz, restriction, root, cb)); } } // process main restriction if (StringUtils.isNotBlank(searchTerms.getField())) { String propertyName = searchTerms.getField(); addPredicate(clazz, root, cb, predicates, searchTerms.getValues().toArray(new String[searchTerms.getValues().size()]), propertyName); } if (searchTerms.getJunction().equals(Restriction.Junction.OR)) { predicate = cb.or(predicates.toArray(new Predicate[predicates.size()])); } else { predicate = cb.and(predicates.toArray(new Predicate[predicates.size()])); } return predicate; }
From source file:gr.abiss.calipso.jpasearch.specifications.GenericSpecifications.java
protected static Predicate getRootPredicate(final Class clazz, final Map<String, String[]> searchTerms, Root<Persistable> root, CriteriaBuilder cb, boolean skipSimpleSearch) { LinkedList<Predicate> predicates = new LinkedList<Predicate>(); Predicate predicate;//from w ww. j a va 2 s .co m parseSearchTerms(clazz, searchTerms, root, cb, predicates); if (!skipSimpleSearch) { // handle "_all", i.e. simple search if (searchTerms.containsKey(SIMPLE_SEARCH_PARAM_NAME) && predicates.size() == 0) { Map<String, String[]> simpleSearchTerms = getSimpleSearchTerms(clazz, searchTerms.get(SIMPLE_SEARCH_PARAM_NAME)); parseSearchTerms(clazz, simpleSearchTerms, root, cb, predicates); } } if (searchTerms.containsKey(SEARCH_MODE) && searchTerms.get(SEARCH_MODE)[0].equalsIgnoreCase(OR) // A disjunction of zero predicates is false && predicates.size() > 0) { predicate = cb.or(predicates.toArray(new Predicate[predicates.size()])); } else { predicate = cb.and(predicates.toArray(new Predicate[predicates.size()])); } return predicate; }