Traversal.Admin<?, ?> filterTraversal = (Traversal.Admin<?, ?>) originalStep.getLocalChildren().get(0); List<Step> steps = filterTraversal.getSteps(); if (steps.size()==2 && direction = Direction.BOTH; P predicate = ((IsStep)steps.get(1)).getPredicate(); Step<?, ?> currentStep = originalStep.getPreviousStep(); while (true) { if (currentStep instanceof HasStep || currentStep instanceof IdentityStep) { new HasStep(traversal, HasContainer.makeHasContainers(ImplicitKey.ADJACENT_ID.name(), P.eq(vertex))), traversal);
public static <E extends Ranging> void foldInRange(final HasStepFolder titanStep, final Traversal.Admin<?, ?> traversal) { Step<?, ?> nextStep = TitanTraversalUtil.getNextNonIdentityStep(titanStep); if (nextStep instanceof RangeGlobalStep) { RangeGlobalStep range = (RangeGlobalStep) nextStep; int limit = QueryUtil.convertLimit(range.getHighRange()); titanStep.setLimit(QueryUtil.mergeLimits(limit, titanStep.getLimit())); if (range.getLowRange() == 0) { //Range can be removed since there is no offset nextStep.getLabels().forEach(titanStep::addLabel); traversal.removeStep(nextStep); } } }
@Override public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) { super.setTraversal(parentTraversal); for (final Traversal.Admin<S, ?> traversal : this.traversals) { integrateChild(traversal); } }
Step nextStep = TitanTraversalUtil.getNextNonIdentityStep(vstep); if (nextStep instanceof RangeGlobalStep) { int limit = QueryUtil.convertLimit(((RangeGlobalStep) nextStep).getHighRange()); vstep.setLimit(QueryUtil.mergeLimits(limit, vstep.getLimit()));
static void foldInHasContainer(final HasStepFolder janusgraphStep, final Traversal.Admin<?, ?> traversal, final Traversal<?, ?> rootTraversal) { Step<?, ?> currentStep = janusgraphStep.getNextStep(); while (true) { if (currentStep instanceof OrStep && janusgraphStep instanceof JanusGraphStep) { for (final Traversal.Admin<?, ?> child : ((OrStep<?>) currentStep).getLocalChildren()) { if (!validFoldInHasContainer(child.getStartStep(), false)){ return; } } ((OrStep<?>) currentStep).getLocalChildren().forEach(t ->localFoldInHasContainer(janusgraphStep, t.getStartStep(), t, rootTraversal)); traversal.removeStep(currentStep); } else if (currentStep instanceof HasContainerHolder){ final Iterable<HasContainer> containers = ((HasContainerHolder) currentStep).getHasContainers().stream().map(c -> JanusGraphPredicate.Converter.convert(c)).collect(Collectors.toList()); if (validFoldInHasContainer(currentStep, true)) { janusgraphStep.addAll(containers); currentStep.getLabels().forEach(janusgraphStep::addLabel); traversal.removeStep(currentStep); } } else if (!(currentStep instanceof IdentityStep) && !(currentStep instanceof NoOpBarrierStep) && !(currentStep instanceof HasContainerHolder)) { break; } currentStep = currentStep.getNextStep(); } }
@Override public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) { super.setTraversal(parentTraversal); integrateChild(this.notTraversal); }
@Override public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) { super.setTraversal(parentTraversal); integrateChild(this.filterTraversal); }
@Override public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) { super.setTraversal(parentTraversal); this.integrateChild(this.dedupTraversal); }
@Override public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) { super.setTraversal(parentTraversal); integrateChild(this.whereTraversal); }
@Override public boolean equals(final Object other) { if (super.equals(other)) { final RangeGlobalStep typedOther = (RangeGlobalStep) other; return typedOther.low == this.low && typedOther.high == this.high; } return false; }
@Override public Set<TraverserRequirement> getRequirements() { return this.dedupLabels == null ? this.getSelfAndChildRequirements(TraverserRequirement.BULK) : this.getSelfAndChildRequirements(TraverserRequirement.LABELED_PATH, TraverserRequirement.BULK); }
public void processStartTraverser(final Traverser.Admin traverser) { if (null != this.matchKey) this.matchValue = this.getScopeValue(Pop.last, this.matchKey, traverser); }
@Override public void modulateBy(final Traversal.Admin<?, ?> probabilityTraversal) { this.probabilityTraversal = this.integrateChild(probabilityTraversal); }
@Override public Set<TraverserRequirement> getRequirements() { return this.getSelfAndChildRequirements(); } }
@Override public Set<TraverserRequirement> getRequirements() { return this.getSelfAndChildRequirements(); } }
@Override public Set<TraverserRequirement> getRequirements() { return this.getSelfAndChildRequirements(); }
@Override public void modulateBy(final Traversal.Admin<?, ?> dedupTraversal) { this.dedupTraversal = this.integrateChild(dedupTraversal); }
Traversal.Admin<?, ?> filterTraversal = (Traversal.Admin<?, ?>) originalStep.getLocalChildren().get(0); List<Step> steps = filterTraversal.getSteps(); if (steps.size() == 2 && direction = Direction.BOTH; P predicate = ((IsStep) steps.get(1)).getPredicate(); Step<?, ?> currentStep = originalStep.getPreviousStep(); while (true) { if (!(currentStep instanceof HasStep) && !(currentStep instanceof IdentityStep)) { new HasStep(traversal, HasContainer.makeHasContainers(ImplicitKey.ADJACENT_ID.name(), P.eq(vertex))), traversal);
static void foldInRange(final HasStepFolder janusgraphStep, final Step<?, ?> tinkerpopStep, final Traversal.Admin<?, ?> traversal, final List<HasContainer> hasContainers) { final Step<?, ?> nextStep = tinkerpopStep instanceof IdentityStep ? JanusGraphTraversalUtil.getNextNonIdentityStep(tinkerpopStep): tinkerpopStep; if (nextStep instanceof RangeGlobalStep) { final RangeGlobalStep range = (RangeGlobalStep) nextStep; int low = 0; if (janusgraphStep instanceof JanusGraphStep) { low = QueryUtil.convertLimit(range.getLowRange()); low = QueryUtil.mergeLowLimits(low, hasContainers == null ? janusgraphStep.getLowLimit(): janusgraphStep.getLocalLowLimit(hasContainers)); } int high = QueryUtil.convertLimit(range.getHighRange()); high = QueryUtil.mergeHighLimits(high, hasContainers == null ? janusgraphStep.getHighLimit(): janusgraphStep.getLocalHighLimit(hasContainers)); if (hasContainers == null) { janusgraphStep.setLimit(low, high); } else { janusgraphStep.setLocalLimit(hasContainers, low, high); } if (janusgraphStep instanceof JanusGraphStep || range.getLowRange() == 0) { //Range can be removed since there is JanusGraphStep or no offset nextStep.getLabels().forEach(janusgraphStep::addLabel); traversal.removeStep(nextStep); } } } }
final Step nextStep = JanusGraphTraversalUtil.getNextNonIdentityStep(vertexStep); if (nextStep instanceof RangeGlobalStep) { final int limit = QueryUtil.convertLimit(((RangeGlobalStep) nextStep).getHighRange()); vertexStep.setLimit(0, QueryUtil.mergeHighLimits(limit, vertexStep.getHighLimit()));