@Override protected Iterator<Traverser.Admin<S>> standardAlgorithm() throws NoSuchElementException { if (null == this.repeatTraversal) throw new IllegalStateException("The repeat()-traversal was not defined: " + this); while (true) { if (this.repeatTraversal.getEndStep().hasNext()) { return this.repeatTraversal.getEndStep(); } else { final Traverser.Admin<S> start = this.starts.next(); start.initialiseLoops(this.getId(), this.loopName); if (doUntil(start, true)) { start.resetLoops(); return IteratorUtils.of(start); } this.repeatTraversal.addStart(start); if (doEmit(start, true)) { final Traverser.Admin<S> emitSplit = start.split(); emitSplit.resetLoops(); return IteratorUtils.of(emitSplit); } } } }
@Override protected Iterator<Traverser.Admin<S>> computerAlgorithm() throws NoSuchElementException { if (null == this.repeatTraversal) throw new IllegalStateException("The repeat()-traversal was not defined: " + this); final Traverser.Admin<S> start = this.starts.next(); if (doUntil(start, true)) { start.setStepId(this.getNextStep().getId()); start.addLabels(this.labels); return IteratorUtils.of(start); } else { start.setStepId(this.repeatTraversal.getStartStep().getId()); start.initialiseLoops(start.getStepId(), this.loopName); if (doEmit(start, true)) { final Traverser.Admin<S> emitSplit = start.split(); emitSplit.resetLoops(); emitSplit.setStepId(this.getNextStep().getId()); return IteratorUtils.of(start, emitSplit); } else { return IteratorUtils.of(start); } } }
Traverser.Admin<S> traverser = iterator.next(); if (doUntil(traverser, true)) { traverser.resetLoops(); untils.add(traverser); if (doEmit(traverser, true)) { final Traverser.Admin<S> emitSplit = traverser.split(); emitSplit.resetLoops(); emits.add(emitSplit);
@SuppressWarnings("unchecked") @Override protected Iterator<Traverser.Admin<S>> standardAlgorithm() throws NoSuchElementException { final SqlgRepeatStepBarrier<S> repeatStep = (SqlgRepeatStepBarrier<S>) this.getTraversal().getParent(); while (true) { Iterator<Iterator<Traverser.Admin<S>>> returnIterator = toReturn.iterator(); if (returnIterator.hasNext()) { Iterator<Traverser.Admin<S>> next = returnIterator.next(); returnIterator.remove(); if (SqlgRepeatStepBarrier.this.sqlgRangeHolder != null && applyRange()) { continue; } return next; } boolean foundSomething = false; // if (repeatStep.optimizeUntil) { if (barrierUntil()) { if (!repeatStep.untilFirst) { Multimap<String, Traverser.Admin<S>> startRecordIds = LinkedListMultimap.create(); foundSomething = repeatStep.doUntilBarrier(this.starts, this.toReturn, startRecordIds); for (Traverser.Admin<S> start : startRecordIds.values()) { //This is a brain bender. if (!repeatStep.emitFirst) { repeatStep.repeatTraversal.addStart(start); } else { //util is last and emit is first. //the start here did not pass the until so it goes round again. //The RepeatStep will iter the start and since emit is first it will emit it. repeatStep.addStart(start); }
@SuppressWarnings("unchecked") @Override protected Iterator<Traverser.Admin<S>> standardAlgorithm() throws NoSuchElementException { final SqlgRepeatStepBarrier<S> repeatStep = (SqlgRepeatStepBarrier<S>) this.getTraversal().getParent(); while (true) { Iterator<Iterator<Traverser.Admin<S>>> returnIterator = toReturn.iterator(); if (returnIterator.hasNext()) { Iterator<Traverser.Admin<S>> next = returnIterator.next(); returnIterator.remove(); if (SqlgRepeatStepBarrier.this.sqlgRangeHolder != null && applyRange()) { continue; } return next; } boolean foundSomething = false; // if (repeatStep.optimizeUntil) { if (barrierUntil()) { if (!repeatStep.untilFirst) { Multimap<String, Traverser.Admin<S>> startRecordIds = LinkedListMultimap.create(); foundSomething = repeatStep.doUntilBarrier(this.starts, this.toReturn, startRecordIds); for (Traverser.Admin<S> start : startRecordIds.values()) { //This is a brain bender. if (!repeatStep.emitFirst) { repeatStep.repeatTraversal.addStart(start); } else { //util is last and emit is first. //the start here did not pass the until so it goes round again. //The RepeatStep will iter the start and since emit is first it will emit it. repeatStep.addStart(start); }
Collection<Traverser.Admin<S>> startsToReturn = startRecordIds.get(startId); for (Traverser.Admin<S> start : startsToReturn) { start.resetLoops(); toReturn.add(IteratorUtils.of(start));
Collection<Traverser.Admin<S>> startsToReturn = startRecordIds.get(startId); for (Traverser.Admin<S> start : startsToReturn) { start.resetLoops(); toReturn.add(IteratorUtils.of(start));
@Override protected Iterator<Traverser.Admin<S>> computerAlgorithm() throws NoSuchElementException { final RepeatStep<S> repeatStep = (RepeatStep<S>) this.getTraversal().getParent(); final Traverser.Admin<S> start = this.starts.next(); start.incrLoops(); if (repeatStep.doUntil(start, false)) { start.resetLoops(); start.setStepId(repeatStep.getNextStep().getId()); start.addLabels(repeatStep.labels); return IteratorUtils.of(start); } else { start.setStepId(repeatStep.getId()); if (repeatStep.doEmit(start, false)) { final Traverser.Admin<S> emitSplit = start.split(); emitSplit.resetLoops(); emitSplit.setStepId(repeatStep.getNextStep().getId()); emitSplit.addLabels(repeatStep.labels); return IteratorUtils.of(start, emitSplit); } return IteratorUtils.of(start); } } }
@Override protected Iterator<Traverser.Admin<S>> computerAlgorithm() throws NoSuchElementException { final RepeatStep<S> repeatStep = (RepeatStep<S>) this.getTraversal().getParent(); final Traverser.Admin<S> start = this.starts.next(); start.incrLoops(repeatStep.getId()); if (repeatStep.doUntil(start, false)) { start.resetLoops(); start.setStepId(repeatStep.getNextStep().getId()); start.addLabels(repeatStep.getLabels()); return IteratorUtils.of(start); } else { start.setStepId(repeatStep.getId()); if (repeatStep.doEmit(start, false)) { final Traverser.Admin<S> emitSplit = start.split(); emitSplit.resetLoops(); emitSplit.setStepId(repeatStep.getNextStep().getId()); return IteratorUtils.of(start, emitSplit); } return IteratorUtils.of(start); } } }
@Override protected Iterator<Traverser.Admin<S>> standardAlgorithm() throws NoSuchElementException { final RepeatStep<S> repeatStep = (RepeatStep<S>) this.getTraversal().getParent(); while (true) { final Traverser.Admin<S> start = this.starts.next(); start.incrLoops(); if (repeatStep.doUntil(start, false)) { start.resetLoops(); return IteratorUtils.of(start); } else { if (!repeatStep.untilFirst && !repeatStep.emitFirst) repeatStep.repeatTraversal.addStart(start); else repeatStep.addStart(start); if (repeatStep.doEmit(start, false)) { final Traverser.Admin<S> emitSplit = start.split(); emitSplit.resetLoops(); return IteratorUtils.of(emitSplit); } } } }
@Override protected Iterator<Traverser.Admin<S>> computerAlgorithm() throws NoSuchElementException { if (null == this.repeatTraversal) throw new IllegalStateException("The repeat()-traversal was not defined: " + this); final Traverser.Admin<S> start = this.starts.next(); if (doUntil(start, true)) { start.setStepId(this.getNextStep().getId()); start.addLabels(this.labels); return IteratorUtils.of(start); } else { start.setStepId(this.repeatTraversal.getStartStep().getId()); start.initialiseLoops(start.getStepId(), this.loopName); if (doEmit(start, true)) { final Traverser.Admin<S> emitSplit = start.split(); emitSplit.resetLoops(); emitSplit.setStepId(this.getNextStep().getId()); return IteratorUtils.of(start, emitSplit); } else { return IteratorUtils.of(start); } } }
@Override protected Iterator<Traverser.Admin<S>> standardAlgorithm() throws NoSuchElementException { while (true) { final Traverser.Admin<S> start = this.starts.next(); start.incrLoops(this.getId()); if (repeatStep.doUntil(start, false)) { start.resetLoops(); return IteratorUtils.of(start); } else { if (!repeatStep.untilFirst && !repeatStep.emitFirst) repeatStep.repeatTraversal.addStart(start); else repeatStep.addStart(start); if (repeatStep.doEmit(start, false)) { final Traverser.Admin<S> emitSplit = start.split(); emitSplit.resetLoops(); return IteratorUtils.of(emitSplit); } } } }
@Override protected Iterator<Traverser.Admin<S>> standardAlgorithm() throws NoSuchElementException { if (null == this.repeatTraversal) throw new IllegalStateException("The repeat()-traversal was not defined: " + this); while (true) { if (this.repeatTraversal.getEndStep().hasNext()) { return this.repeatTraversal.getEndStep(); } else { final Traverser.Admin<S> start = this.starts.next(); start.initialiseLoops(this.getId(), this.loopName); if (doUntil(start, true)) { start.resetLoops(); return IteratorUtils.of(start); } this.repeatTraversal.addStart(start); if (doEmit(start, true)) { final Traverser.Admin<S> emitSplit = start.split(); emitSplit.resetLoops(); return IteratorUtils.of(emitSplit); } } } }
@Override public void resetLoops() { this.baseTraverser.resetLoops(); }
@Override protected Iterator<Traverser.Admin<S>> computerAlgorithm() throws NoSuchElementException { final RepeatStep<S> repeatStep = (RepeatStep<S>) this.getTraversal().getParent(); final Traverser.Admin<S> start = this.starts.next(); start.incrLoops(); if (repeatStep.doUntil(start, false)) { start.resetLoops(); start.setStepId(repeatStep.getNextStep().getId()); start.addLabels(repeatStep.labels); return IteratorUtils.of(start); } else { start.setStepId(repeatStep.getId()); if (repeatStep.doEmit(start, false)) { final Traverser.Admin<S> emitSplit = start.split(); emitSplit.resetLoops(); emitSplit.setStepId(repeatStep.getNextStep().getId()); emitSplit.addLabels(repeatStep.labels); return IteratorUtils.of(start, emitSplit); } return IteratorUtils.of(start); } } }
@Override protected Iterator<Traverser.Admin<S>> standardAlgorithm() throws NoSuchElementException { final RepeatStep<S> repeatStep = (RepeatStep<S>) this.getTraversal().getParent(); while (true) { final Traverser.Admin<S> start = this.starts.next(); start.incrLoops(); if (repeatStep.doUntil(start, false)) { start.resetLoops(); return IteratorUtils.of(start); } else { if (!repeatStep.untilFirst && !repeatStep.emitFirst) repeatStep.repeatTraversal.addStart(start); else repeatStep.addStart(start); if (repeatStep.doEmit(start, false)) { final Traverser.Admin<S> emitSplit = start.split(); emitSplit.resetLoops(); return IteratorUtils.of(emitSplit); } } } }
@Override public void resetLoops() { this.baseTraverser.resetLoops(); }