private String pullOutVariableStartStepToParent(final WhereTraversalStep<?> whereStep) { return this.pullOutVariableStartStepToParent(new HashSet<>(), whereStep.getLocalChildren().get(0), true).size() != 1 ? null : pullOutVariableStartStepToParent(new HashSet<>(), whereStep.getLocalChildren().get(0), false).iterator().next(); }
public WhereTraversalStep(final Traversal.Admin traversal, final Traversal<?, ?> whereTraversal) { super(traversal); this.whereTraversal = whereTraversal.asAdmin(); this.configureStartAndEndSteps(this.whereTraversal); if (this.scopeKeys.isEmpty()) throw new IllegalArgumentException("A where()-traversal must have at least a start or end label (i.e. variable): " + whereTraversal); this.whereTraversal = this.integrateChild(this.whereTraversal); }
@Override public Set<TraverserRequirement> getRequirements() { return this.getSelfAndChildRequirements(TraverserRequirement.OBJECT, TraverserRequirement.SIDE_EFFECTS); }
for (@SuppressWarnings("unchecked") WhereTraversalStep<S> whereTraversalStep : whereTraversalSteps) { List<Traversal.Admin<?, ?>> whereTraversals = whereTraversalStep.getLocalChildren(); Preconditions.checkState(whereTraversals.size() == 1); Traversal.Admin<?, ?> whereTraversal = whereTraversals.get(0); whereTraversalStep ); for (String label : whereTraversalStep.getLabels()) { sqlgTraversalFilterStepBarrier.addLabel(label); whereTraversalStep, sqlgTraversalFilterStepBarrier, whereTraversalStep.getTraversal() );
final Traversal.Admin<?, ?> localChild = whereTraversalStep.getLocalChildren().get(0); if ((localChild.getStartStep() instanceof WhereTraversalStep.WhereStartStep) && !((WhereTraversalStep.WhereStartStep) localChild.getStartStep()).getScopeKeys().isEmpty()) { done = true; final int index = TraversalHelper.stepIndex(whereTraversalStep, traversal); if (whereTraversalStep.getPreviousStep() instanceof SelectStep) { done = false; traversal.removeStep(index);
SqlgWhereStartStep(final Traversal.Admin traversal, final String selectKey) { super(traversal); this.selectKey = selectKey; }
final DefaultTraversal notTraversal = new DefaultTraversal<>(); TraversalHelper.removeToTraversal(startStep, startStep.getNextStep(), notTraversal); matchTraversal.addStep(0, new WhereTraversalStep<>(matchTraversal, notTraversal)); this.configureStartAndEndSteps(matchTraversal); } else if (StartStep.isVariableStartStep(startStep)) {
@Override public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) { super.setTraversal(parentTraversal); integrateChild(this.whereTraversal); }
for (@SuppressWarnings("unchecked") WhereTraversalStep<S> whereTraversalStep : whereTraversalSteps) { List<Traversal.Admin<?, ?>> whereTraversals = whereTraversalStep.getLocalChildren(); Preconditions.checkState(whereTraversals.size() == 1); Traversal.Admin<?, ?> whereTraversal = whereTraversals.get(0); whereTraversalStep ); for (String label : whereTraversalStep.getLabels()) { sqlgTraversalFilterStepBarrier.addLabel(label); whereTraversalStep, sqlgTraversalFilterStepBarrier, whereTraversalStep.getTraversal() );
final Traversal.Admin<?, ?> localChild = whereTraversalStep.getLocalChildren().get(0); if ((localChild.getStartStep() instanceof WhereTraversalStep.WhereStartStep) && !((WhereTraversalStep.WhereStartStep) localChild.getStartStep()).getScopeKeys().isEmpty()) { done = true; final int index = TraversalHelper.stepIndex(whereTraversalStep, traversal); if (whereTraversalStep.getPreviousStep() instanceof SelectStep) { done = false; traversal.removeStep(index);
SqlgWhereStartStep(final Traversal.Admin traversal, final String selectKey) { super(traversal); this.selectKey = selectKey; }
/** * Filters the current object based on the object itself or the path history. * * @param whereTraversal the filter to apply * @return the traversal with an appended {@link WherePredicateStep} * @see <a href="http://tinkerpop.apache.org/docs/${project.version}/reference/#where-step" target="_blank">Reference Documentation - Where Step</a> * @see <a href="http://tinkerpop.apache.org/docs/${project.version}/reference/#using-where-with-match" target="_blank">Reference Documentation - Where with Match</a> * @see <a href="http://tinkerpop.apache.org/docs/${project.version}/reference/#using-where-with-select" target="_blank">Reference Documentation - Where with Select</a> * @since 3.0.0-incubating */ public default GraphTraversal<S, E> where(final Traversal<?, ?> whereTraversal) { this.asAdmin().getBytecode().addStep(Symbols.where, whereTraversal); return TraversalHelper.getVariableLocations(whereTraversal.asAdmin()).isEmpty() ? this.asAdmin().addStep(new TraversalFilterStep<>(this.asAdmin(), (Traversal) whereTraversal)) : this.asAdmin().addStep(new WhereTraversalStep<>(this.asAdmin(), whereTraversal)); }
@Override public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) { super.setTraversal(parentTraversal); integrateChild(this.whereTraversal); }
private String pullOutVariableStartStepToParent(final WhereTraversalStep<?> whereStep) { return this.pullOutVariableStartStepToParent(new HashSet<>(), whereStep.getLocalChildren().get(0), true).size() != 1 ? null : pullOutVariableStartStepToParent(new HashSet<>(), whereStep.getLocalChildren().get(0), false).iterator().next(); }
public WhereTraversalStep(final Traversal.Admin traversal, final Traversal<?, ?> whereTraversal) { super(traversal); this.whereTraversal = whereTraversal.asAdmin(); this.configureStartAndEndSteps(this.whereTraversal); if (this.scopeKeys.isEmpty()) throw new IllegalArgumentException("A where()-traversal must have at least a start or end label (i.e. variable): " + whereTraversal); this.whereTraversal = this.integrateChild(this.whereTraversal); }
final DefaultTraversal notTraversal = new DefaultTraversal<>(); TraversalHelper.removeToTraversal(startStep, startStep.getNextStep(), notTraversal); matchTraversal.addStep(0, new WhereTraversalStep<>(matchTraversal, notTraversal)); this.configureStartAndEndSteps(matchTraversal); } else if (StartStep.isVariableStartStep(startStep)) {
@Override public Set<TraverserRequirement> getRequirements() { return this.getSelfAndChildRequirements(TraverserRequirement.OBJECT, TraverserRequirement.SIDE_EFFECTS); }
@Override public void apply(Traversal.Admin<?, ?> traversal) { if (TraversalHelper.hasStepOfClass(MatchStep.class, traversal) || TraversalHelper.hasStepOfClass(MatchStep.MatchStartStep.class, traversal)) return; TraversalHelper.getStepsOfClass(WhereTraversalStep.class, traversal).forEach(whereTraversalStep -> { Traversal.Admin innerWhereTraversal = ((Traversal) whereTraversalStep.getLocalChildren().get(0)).asAdmin(); TraversalHelper.getStepsOfClass(WhereTraversalStep.WhereStartStep.class, innerWhereTraversal).forEach(whereStartStep -> { Iterator<String> iterator = whereStartStep.getScopeKeys().iterator(); String selectKey = null; if (iterator.hasNext()) selectKey = iterator.next(); UniGraphWhereTraversalStep.UniGraphWhereStartStep uniGraphWhereStartStep = new UniGraphWhereTraversalStep.UniGraphWhereStartStep(innerWhereTraversal, selectKey); TraversalHelper.replaceStep(whereStartStep, uniGraphWhereStartStep, innerWhereTraversal); }); TraversalHelper.getStepsOfClass(WhereTraversalStep.WhereEndStep.class, innerWhereTraversal).forEach(whereEndStep -> { UniGraphWhereTraversalStep.UniGraphWhereEndStep uniGraphWhereEndStep = new UniGraphWhereTraversalStep.UniGraphWhereEndStep(innerWhereTraversal, whereEndStep.getScopeKeys().iterator().next().toString()); TraversalHelper.replaceStep(whereEndStep, uniGraphWhereEndStep, innerWhereTraversal); }); UniGraphWhereTraversalStep uniGraphWhereTraversalStep = new UniGraphWhereTraversalStep(traversal, innerWhereTraversal); TraversalHelper.replaceStep(whereTraversalStep, uniGraphWhereTraversalStep, traversal); }); } }
/** * Filters the current object based on the object itself or the path history. * * @param whereTraversal the filter to apply * @return the traversal with an appended {@link WherePredicateStep} * @see <a href="http://tinkerpop.apache.org/docs/${project.version}/reference/#where-step" target="_blank">Reference Documentation - Where Step</a> * @see <a href="http://tinkerpop.apache.org/docs/${project.version}/reference/#using-where-with-match" target="_blank">Reference Documentation - Where with Match</a> * @see <a href="http://tinkerpop.apache.org/docs/${project.version}/reference/#using-where-with-select" target="_blank">Reference Documentation - Where with Select</a> * @since 3.0.0-incubating */ public default GraphTraversal<S, E> where(final Traversal<?, ?> whereTraversal) { this.asAdmin().getBytecode().addStep(Symbols.where, whereTraversal); return TraversalHelper.getVariableLocations(whereTraversal.asAdmin()).isEmpty() ? this.asAdmin().addStep(new TraversalFilterStep<>(this.asAdmin(), (Traversal) whereTraversal)) : this.asAdmin().addStep(new WhereTraversalStep<>(this.asAdmin(), whereTraversal)); }