public static PredicatesHolder or(PredicatesHolder... predicatesHolders) { return or(Sets.newHashSet(predicatesHolders)); } public static PredicatesHolder or(Collection<PredicatesHolder> predicatesHolders) {
@Override public PredicatesHolder toPredicate(HasContainer hasContainer) { Set<PredicatesHolder> predicates = new HashSet<>(); children.forEach(schema -> predicates.add(schema.toPredicate(hasContainer))); return PredicatesHolderFactory.or(predicates); }
@Override public PredicatesHolder toPredicate(HasContainer hasContainer) { Set<PredicatesHolder> predicates = new HashSet<>(); for (PropertySchema schema : schemas) { PredicatesHolder predicatesHolder = schema.toPredicates(PredicatesHolderFactory.predicate(hasContainer)); if (predicatesHolder.equals(PredicatesHolderFactory.empty())) return predicatesHolder; if (!predicatesHolder.equals(PredicatesHolderFactory.abort())) predicates.add(predicatesHolder); } return PredicatesHolderFactory.or(predicates); }
/** * Receives a list of vertices and converts them to predicates * @param vertices A list of vertices * @return Predicate holder */ default PredicatesHolder toPredicates(List<? extends Vertex> vertices) { if(vertices == null || vertices.size() == 0) return PredicatesHolderFactory.abort(); HashSet<PredicatesHolder> predicates = new HashSet<>(); vertices.stream().collect(Collectors.groupingBy(Vertex::label)).forEach((label, labelVertices) -> { HasContainer labelPredicate = new HasContainer(T.label.getAccessor(), P.eq(label)); HasContainer ids = new HasContainer(T.id.getAccessor(), P.within(labelVertices.stream().map(Vertex::id).collect(Collectors.toSet()))); PredicatesHolder labelPredicates = PredicatesHolderFactory.and(ids, labelPredicate); PredicatesHolder toPredicates = toPredicates(labelPredicates); predicates.add(toPredicates); }); return PredicatesHolderFactory.or(predicates); } }
protected PredicatesHolder getVertexPredicates(List<Vertex> vertices, Direction direction) { PredicatesHolder outPredicates = this.outVertexSchema.toPredicates(vertices); PredicatesHolder inPredicates = this.inVertexSchema.toPredicates(vertices); if(direction.equals(Direction.OUT)) return outPredicates; if(direction.equals(Direction.IN)) return inPredicates; return PredicatesHolderFactory.or(inPredicates, outPredicates); }
public static PredicatesHolder create(PredicatesHolder.Clause clause, Set<PredicatesHolder> predicatesHolders) { if(clause.equals(PredicatesHolder.Clause.And)) return and(predicatesHolders); if(clause.equals(PredicatesHolder.Clause.Or)) return or(predicatesHolders); return abort(); }
protected PredicatesHolder getVertexPredicates(List<Vertex> vertices, Direction direction) { PredicatesHolder outPredicates = this.outVertexSchema.toPredicates(vertices); PredicatesHolder inPredicates = this.inVertexSchema.toPredicates(vertices); if(direction.equals(Direction.OUT) && outPredicates.notAborted()) return outPredicates; if(direction.equals(Direction.IN) && inPredicates.notAborted()) return inPredicates; if (outPredicates.notAborted() && inPredicates.notAborted()) return PredicatesHolderFactory.or(inPredicates, outPredicates); else if (outPredicates.isAborted()) return inPredicates; else if (inPredicates.isAborted()) return outPredicates; else return PredicatesHolderFactory.abort(); }
protected PredicatesHolder getVertexPredicates(List<Vertex> vertices, Direction direction) { PredicatesHolder outPredicates = this.outVertexSchema.toPredicates(vertices); PredicatesHolder inPredicates = this.inVertexSchema.toPredicates(vertices); if (direction.equals(Direction.OUT) && outPredicates.notAborted()) return outPredicates; if (direction.equals(Direction.IN) && inPredicates.notAborted()) return inPredicates; if (outPredicates.notAborted() && inPredicates.notAborted()) return PredicatesHolderFactory.or(inPredicates, outPredicates); else if (outPredicates.isAborted()) return inPredicates; else if (inPredicates.isAborted()) return outPredicates; else return PredicatesHolderFactory.abort(); } }