@Override protected Traverser.Admin<S> processNextStart() throws NoSuchElementException { final Traverser.Admin<S> start = this.starts.next(); if (this.traverserStepIdAndLabelsSetByChild) { final ComputerAwareStep<?, ?> step = (ComputerAwareStep<?, ?>) this.getTraversal().getParent(); start.setStepId(step.getNextStep().getId()); start.addLabels(step.getLabels()); } return start; }
@Override public MatchStep<S, E> clone() { final MatchStep<S, E> clone = (MatchStep<S, E>) super.clone(); clone.matchTraversals = new ArrayList<>(); for (final Traversal.Admin<Object, Object> traversal : this.matchTraversals) { clone.matchTraversals.add(traversal.clone()); } if (this.dedups != null) clone.dedups = new HashSet<>(); clone.standardAlgorithmBarrier = new TraverserSet(); return clone; }
@Override protected Traverser.Admin<E> processNextStart() throws NoSuchElementException { while (true) { if (this.previousIterator.hasNext()) return this.previousIterator.next(); this.previousIterator = this.traverserStepIdAndLabelsSetByChild ? this.computerAlgorithm() : this.standardAlgorithm(); } }
@Override public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) { super.setTraversal(parentTraversal); this.integrateChild(this.branchTraversal); this.traversalOptions.values().stream().flatMap(List::stream).forEach(this::integrateChild); }
@Override public void reset() { super.reset(); this.first = true; }
@Override public int hashCode() { int result = super.hashCode(); if (this.traversalOptions != null) result ^= this.traversalOptions.hashCode(); if (this.branchTraversal != null) result ^= this.branchTraversal.hashCode(); return result; }
@Override public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) { super.setTraversal(parentTraversal); for (final Traversal.Admin<Object, Object> traversal : this.matchTraversals) { this.integrateChild(traversal); } }
@Override public void reset() { super.reset(); this.getGlobalChildren().forEach(Traversal.Admin::reset); this.first = true; }
@Override public int hashCode() { int result = super.hashCode() ^ this.repeatTraversal.hashCode(); result ^= Boolean.hashCode(this.untilFirst); result ^= Boolean.hashCode(this.emitFirst) << 1; if (this.loopName != null) result ^= this.loopName.hashCode(); if (this.untilTraversal != null) result ^= this.untilTraversal.hashCode(); if (this.emitTraversal != null) result ^= this.emitTraversal.hashCode(); return result; }
@Override protected Traverser.Admin<S> processNextStart() throws NoSuchElementException { final Traverser.Admin<S> start = this.starts.next(); if (this.traverserStepIdAndLabelsSetByChild) { final ComputerAwareStep<?, ?> step = (ComputerAwareStep<?, ?>) this.getTraversal().getParent(); start.setStepId(step.getNextStep().getId()); start.addLabels(step.getLabels()); } return start; }
@Override protected Traverser.Admin<E> processNextStart() throws NoSuchElementException { while (true) { if (this.previousIterator.hasNext()) return this.previousIterator.next(); this.previousIterator = this.traverserStepIdAndLabelsSetByChild ? this.computerAlgorithm() : this.standardAlgorithm(); } }
@Override public BranchStep<S, E, M> clone() { final BranchStep<S, E, M> clone = (BranchStep<S, E, M>) super.clone(); clone.traversalOptions = new HashMap<>(this.traversalOptions.size()); for (final Map.Entry<Object, List<Traversal.Admin<S, E>>> entry : this.traversalOptions.entrySet()) { final List<Traversal.Admin<S, E>> traversals = entry.getValue(); if (traversals.size() > 0) { final List<Traversal.Admin<S, E>> clonedTraversals = clone.traversalOptions.compute(entry.getKey(), (k, v) -> (v == null) ? new ArrayList<>(traversals.size()) : v); for (final Traversal.Admin<S, E> traversal : traversals) { clonedTraversals.add(traversal.clone()); } } } clone.branchTraversal = this.branchTraversal.clone(); return clone; }
@Override public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) { super.setTraversal(parentTraversal); this.integrateChild(this.repeatTraversal); this.integrateChild(this.untilTraversal); this.integrateChild(this.emitTraversal); }
@Override public void reset() { super.reset(); if (null != this.emitTraversal) this.emitTraversal.reset(); if (null != this.untilTraversal) this.untilTraversal.reset(); if (null != this.repeatTraversal) this.repeatTraversal.reset(); }
@Override public int hashCode() { int result = super.hashCode() ^ this.connective.hashCode(); for (final Traversal t : this.matchTraversals) { result ^= t.hashCode(); } return result; }
@Override protected Traverser.Admin<S> processNextStart() throws NoSuchElementException { final Traverser.Admin<S> start = this.starts.next(); if (this.traverserStepIdAndLabelsSetByChild) { final ComputerAwareStep<?, ?> step = (ComputerAwareStep<?, ?>) this.getTraversal().getParent(); start.setStepId(step.getNextStep().getId()); start.addLabels(step.getLabels()); } return start; }
@Override public RepeatStep<S> clone() { final RepeatStep<S> clone = (RepeatStep<S>) super.clone(); clone.repeatTraversal = this.repeatTraversal.clone(); if (null != this.untilTraversal) clone.untilTraversal = this.untilTraversal.clone(); if (null != this.emitTraversal) clone.emitTraversal = this.emitTraversal.clone(); return clone; }
@Override public void setTraversal(final Traversal.Admin<?, ?> parentTraversal) { super.setTraversal(parentTraversal); this.integrateChild(this.branchTraversal); this.traversalOptions.values().stream().flatMap(List::stream).forEach(this::integrateChild); }
@Override public void reset() { super.reset(); this.first = true; }
@Override public int hashCode() { int result = super.hashCode(); if (this.traversalOptions != null) result ^= this.traversalOptions.hashCode(); if (this.branchTraversal != null) result ^= this.branchTraversal.hashCode(); return result; }