public DeferredVertexQuery(List<DeferredVertex> vertices, Set<String> propertyKeys, List<Pair<String, Order>> orders, StepDescriptor stepDescriptor, Traversal traversal) { super(Vertex.class, PredicatesHolderFactory.empty(), -1, propertyKeys, orders, stepDescriptor, traversal); this.vertices = vertices; }
@Override public void addPredicate(PredicatesHolder predicatesHolder) { this.predicates = PredicatesHolderFactory.and(this.predicates, predicatesHolder); }
public boolean test(E element, PredicatesHolder predicates) { if(predicates.getClause().equals(PredicatesHolder.Clause.And)) { if (!HasContainer.testAll(element, predicates.getPredicates())) return false; for (PredicatesHolder child : predicates.getChildren()) { if (!test(element, child)) return false; } return true; } else { for(HasContainer has : predicates.getPredicates()) { if (has.test(element)) return true; } for (PredicatesHolder child : predicates.getChildren()) { if (test(element, child)) return true; } return false; } }
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(); }
@Override public void addPredicate(PredicatesHolder predicatesHolder) { predicatesHolder.getPredicates().forEach(has -> GraphStep.processHasContainerIds(this, has)); this.predicates = PredicatesHolderFactory.and(this.predicates, predicatesHolder); }
@Override public QueryBuilder getSearch(SearchVertexQuery query) { PredicatesHolder edgePredicates = this.toPredicates(query.getPredicates()); PredicatesHolder vertexPredicates = this.getVertexPredicates(query.getVertices(), query.getDirection()); PredicatesHolder predicatesHolder = PredicatesHolderFactory.and(edgePredicates, vertexPredicates); if (predicatesHolder.isAborted()) return null; QueryBuilder queryBuilder = createQueryBuilder(predicatesHolder); return queryBuilder; // return createSearch(query, queryBuilder); }
@Override public QueryBuilder getSearch(SearchQuery<E> query) { PredicatesHolder predicatesHolder = this.toPredicates(query.getPredicates()); if (predicatesHolder.getClause().equals(PredicatesHolder.Clause.Abort)) return null; QueryBuilder queryBuilder = createQueryBuilder(predicatesHolder); return queryBuilder; // return createSearch(query, queryBuilder); }
public boolean notAborted() { return !isAborted(); }
public static PredicatesHolder or(PredicatesHolder... predicatesHolders) { return or(Sets.newHashSet(predicatesHolders)); } public static PredicatesHolder or(Collection<PredicatesHolder> predicatesHolders) {
public boolean isAborted() { return this.clause.equals(Clause.Abort); }
public static PredicatesHolder abort() { return new PredicatesHolder(PredicatesHolder.Clause.Abort, null, null); }
public boolean isEmpty() { return !hasPredicates() && !hasChildren(); }
public boolean notEmpty() { return !isEmpty(); }
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(); } }
public static PredicatesHolder predicate(HasContainer predicate) { return and(predicate); }
protected QueryBuilder createQueryBuilder(PredicatesHolder predicatesHolder) { if (predicatesHolder.isAborted()) return null; return FilterHelper.createFilterBuilder(predicatesHolder); }
public static PredicatesHolder empty() { return new PredicatesHolder(PredicatesHolder.Clause.And, null, null); }
@Override public PredicatesHolder toPredicates(List<Vertex> vertices, Direction direction, PredicatesHolder predicates) { PredicatesHolder edgePredicates = this.toPredicates(predicates); PredicatesHolder vertexPredicates = this.getVertexPredicates(vertices, direction); return PredicatesHolderFactory.and(edgePredicates, vertexPredicates); }