/** * Remove a {@link Step} from the traversal. * * @param step the step to remove * @param <S2> the new start type of the traversal (if the removed step was a start step) * @param <E2> the new end type of the traversal (if the removed step was an end step) * @return the newly modulated traversal * @throws IllegalStateException if the {@link TraversalStrategies} have already been applied */ public default <S2, E2> Traversal.Admin<S2, E2> removeStep(final Step<?, ?> step) throws IllegalStateException { return this.removeStep(TraversalHelper.stepIndex(step, this)); }
/** * Insert a step before a specified step instance. * * @param insertStep the step to insert * @param afterStep the step to insert the new step before * @param traversal the traversal on which the action should occur */ public static <S, E> void insertBeforeStep(final Step<S, E> insertStep, final Step<E, ?> afterStep, final Traversal.Admin<?, ?> traversal) { traversal.addStep(stepIndex(afterStep, traversal), insertStep); }
/** * Insert a step after a specified step instance. * * @param insertStep the step to insert * @param beforeStep the step to insert the new step after * @param traversal the traversal on which the action should occur */ public static <S, E> void insertAfterStep(final Step<S, E> insertStep, final Step<?, S> beforeStep, final Traversal.Admin<?, ?> traversal) { traversal.addStep(stepIndex(beforeStep, traversal) + 1, insertStep); }
public static <S, E> Step<?, E> insertTraversal(final Step<?, S> previousStep, final Traversal.Admin<S, E> insertTraversal, final Traversal.Admin<?, ?> traversal) { return TraversalHelper.insertTraversal(stepIndex(previousStep, traversal), insertTraversal, traversal); }
/** * Replace a step with a new step. * * @param removeStep the step to remove * @param insertStep the step to insert * @param traversal the traversal on which the action will occur */ public static <S, E> void replaceStep(final Step<S, E> removeStep, final Step<S, E> insertStep, final Traversal.Admin<?, ?> traversal) { final int i; traversal.removeStep(i = stepIndex(removeStep, traversal)); traversal.addStep(i, insertStep); }
while (!(currentStep instanceof EmptyStep)) { if (currentStep instanceof GraphStep && currentStep.getNextStep() instanceof VertexComputing) { int index = TraversalHelper.stepIndex(currentStep.getNextStep(), traversal); traversal.removeStep(currentStep); traversal.addStep(index, currentStep); final Step<?, ?> lastLegalOLAPStep = getLastLegalOLAPStep(currentStep); if (!(firstLegalOLAPStep instanceof EmptyStep)) { final int index = TraversalHelper.stepIndex(firstLegalOLAPStep, traversal); TraversalHelper.removeToTraversal(firstLegalOLAPStep, lastLegalOLAPStep.getNextStep(), (Traversal.Admin) computerTraversal); final TraversalVertexProgramStep traversalVertexProgramStep = new TraversalVertexProgramStep(traversal, computerTraversal);
while (!done) { done = true; final int index = TraversalHelper.stepIndex(whereTraversalStep, traversal); if (whereTraversalStep.getPreviousStep() instanceof SelectStep) { done = false; int index = TraversalHelper.stepIndex(whereTraversalStep, traversal); final SelectOneStep<?, ?> selectOneStep = new SelectOneStep<>(traversal, Pop.last, whereStartStep.getScopeKeys().iterator().next()); traversal.addStep(index, selectOneStep); final int index = TraversalHelper.stepIndex(selectStep, traversal); final Map<String, Traversal.Admin<Object, Object>> byTraversals = selectStep.getByTraversals(); final String[] keys = new String[byTraversals.size()]; selectOneStep.getMaxRequirement().compareTo(PathProcessor.ElementRequirement.ID) > 0 && labelCount(selectOneStep.getScopeKeys().iterator().next(), TraversalHelper.getRootTraversal(traversal)) <= 1) { final int index = TraversalHelper.stepIndex(selectOneStep, traversal); final Traversal.Admin<?, ?> localChild = selectOneStep.getLocalChildren().get(0); selectOneStep.removeLocalChild(localChild);
public static <S> S stepAfter(final Traversal.Admin<?, ?> traversal, final Class<S> stepClass, Step<?,?> step) { int index = TraversalHelper.stepIndex(step, traversal); List<S> steps = TraversalHelper.getStepsOfAssignableClass(stepClass, traversal); Collections.reverse(steps); for (S s : steps) { int stepIndex = TraversalHelper.stepIndex((Step)s, traversal); if (stepIndex > index) { return s; } } return null; }
public static <S> S stepAfter(final Traversal.Admin<?, ?> traversal, final Class<S> stepClass, Step<?,?> step) { int index = TraversalHelper.stepIndex(step, traversal); List<S> steps = TraversalHelper.getStepsOfAssignableClass(stepClass, traversal); Collections.reverse(steps); for (S s : steps) { int stepIndex = TraversalHelper.stepIndex((Step)s, traversal); if (stepIndex > index) { return s; } } return null; }
/** * Insert a step before a specified step instance. * * @param insertStep the step to insert * @param afterStep the step to insert the new step before * @param traversal the traversal on which the action should occur */ public static <S, E> void insertBeforeStep(final Step<S, E> insertStep, final Step<E, ?> afterStep, final Traversal.Admin<?, ?> traversal) { traversal.addStep(stepIndex(afterStep, traversal), insertStep); }
/** * Insert a step after a specified step instance. * * @param insertStep the step to insert * @param beforeStep the step to insert the new step after * @param traversal the traversal on which the action should occur */ public static <S, E> void insertAfterStep(final Step<S, E> insertStep, final Step<?, S> beforeStep, final Traversal.Admin<?, ?> traversal) { traversal.addStep(stepIndex(beforeStep, traversal) + 1, insertStep); }
/** * Remove a {@link Step} from the traversal. * * @param step the step to remove * @param <S2> the new start type of the traversal (if the removed step was a start step) * @param <E2> the new end type of the traversal (if the removed step was an end step) * @return the newly modulated traversal * @throws IllegalStateException if the {@link TraversalStrategies} have already been applied */ public default <S2, E2> Traversal.Admin<S2, E2> removeStep(final Step<?, ?> step) throws IllegalStateException { return this.removeStep(TraversalHelper.stepIndex(step, this)); }
public static <S, E> Step<?, E> insertTraversal(final Step<?, S> previousStep, final Traversal.Admin<S, E> insertTraversal, final Traversal.Admin<?, ?> traversal) { return TraversalHelper.insertTraversal(stepIndex(previousStep, traversal), insertTraversal, traversal); }
public static <S> S lastLambdaHolderBefore(final Traversal.Admin<?, ?> traversal, Step<?,?> step) { List<Class<? extends Step>> lambdaHolders = Arrays.asList( SackValueStep.class, LambdaFilterStep.class, LambdaMapStep.class, LambdaFlatMapStep.class, LambdaCollectingBarrierStep.class, LambdaSideEffectStep.class ); for (Class<? extends Step> lambdaHolder : lambdaHolders) { int index = TraversalHelper.stepIndex(step, traversal); List<S> steps = TraversalHelper.getStepsOfAssignableClassRecursively((Class<S>)lambdaHolder, traversal); Collections.reverse(steps); for (S s : steps) { int stepIndex = TraversalHelper.stepIndex((Step)s, traversal); if (stepIndex < index) { return s; } } } return null; }
public static <S> S lastLambdaHolderBefore(final Traversal.Admin<?, ?> traversal, Step<?,?> step) { List<Class<? extends Step>> lambdaHolders = Arrays.asList( SackValueStep.class, LambdaFilterStep.class, LambdaMapStep.class, LambdaFlatMapStep.class, LambdaCollectingBarrierStep.class, LambdaSideEffectStep.class ); for (Class<? extends Step> lambdaHolder : lambdaHolders) { int index = TraversalHelper.stepIndex(step, traversal); List<S> steps = TraversalHelper.getStepsOfAssignableClassRecursively((Class<S>)lambdaHolder, traversal); Collections.reverse(steps); for (S s : steps) { int stepIndex = TraversalHelper.stepIndex((Step)s, traversal); if (stepIndex < index) { return s; } } } return null; }
/** * Replace a step with a new step. * * @param removeStep the step to remove * @param insertStep the step to insert * @param traversal the traversal on which the action will occur */ public static <S, E> void replaceStep(final Step<S, E> removeStep, final Step<S, E> insertStep, final Traversal.Admin<?, ?> traversal) { final int i; traversal.removeStep(i = stepIndex(removeStep, traversal)); traversal.addStep(i, insertStep); }
if (TraversalHelper.stepIndex(unionStep, traversal) != -1) { TraversalHelper.replaceStep(unionStep, uniGraphUnionStep, traversal); } else { TraversalHelper.getStepsOfAssignableClass(TraversalParent.class, traversal).forEach(traversalParent -> { traversalParent.getLocalChildren().forEach(child -> { if(TraversalHelper.stepIndex(unionStep, child) != -1) { TraversalHelper.replaceStep(unionStep, uniGraphUnionStep, child); if(TraversalHelper.stepIndex(unionStep, child) != -1) { TraversalHelper.replaceStep(unionStep, uniGraphUnionStep, child);
if(TraversalHelper.stepIndex(vertexStep, traversal) != -1) { UniGraphVertexStep uniGraphVertexStep = new UniGraphVertexStep<>(vertexStep, uniGraph, uniGraph.getControllerManager()); TraversalHelper.replaceStep(vertexStep, uniGraphVertexStep, traversal); TraversalHelper.getStepsOfAssignableClass(TraversalParent.class, traversal).forEach(traversalParent -> { traversalParent.getLocalChildren().forEach(child -> { if(TraversalHelper.stepIndex(vertexStep, child) != -1) { UniGraphVertexStep uniGraphVertexStep = new UniGraphVertexStep<>(vertexStep, uniGraph, uniGraph.getControllerManager()); TraversalHelper.replaceStep(vertexStep, uniGraphVertexStep, child); if(TraversalHelper.stepIndex(vertexStep, child) != -1) { UniGraphVertexStep uniGraphVertexStep = new UniGraphVertexStep<>(vertexStep, uniGraph, uniGraph.getControllerManager()); TraversalHelper.replaceStep(vertexStep, uniGraphVertexStep, child); TraversalHelper.getStepsOfAssignableClass(TraversalParent.class, child).forEach(traversalParent1 -> { traversalParent.getLocalChildren().forEach(child1 -> { if(TraversalHelper.stepIndex(vertexStep, child1) != -1) { UniGraphVertexStep uniGraphVertexStep = new UniGraphVertexStep<>(vertexStep, uniGraph, uniGraph.getControllerManager()); TraversalHelper.replaceStep(vertexStep, uniGraphVertexStep, child1); if(TraversalHelper.stepIndex(vertexStep, child1) != -1) { UniGraphVertexStep uniGraphVertexStep = new UniGraphVertexStep<>(vertexStep, uniGraph, uniGraph.getControllerManager()); TraversalHelper.replaceStep(vertexStep, uniGraphVertexStep, child1);
handleConnectiveSteps(stepIterator); int index = TraversalHelper.stepIndex(step, this.traversal); if (index != -1) { this.traversal.removeStep(step);
handleConnectiveSteps(stepIterator); int index = TraversalHelper.stepIndex(step, this.traversal); if (index != -1) { this.traversal.removeStep(step);