private static FulgoraElementTraversal<Vertex,Edge> getReverseTraversal(final MessageScope.Local<?> scope, final TitanTransaction graph, @Nullable final Vertex start) { Traversal.Admin<Vertex,Edge> incident = scope.getIncidentTraversal().get().asAdmin(); FulgoraElementTraversal<Vertex,Edge> result = FulgoraElementTraversal.of(graph); for (Step step : incident.getSteps()) result.addStep(step); Step<Vertex,?> startStep = result.getStartStep(); assert startStep instanceof VertexStep; ((VertexStep) startStep).reverseDirection(); if (start!=null) result.addStep(0, new StartStep<>(incident, start)); result.asAdmin().setStrategies(FULGORA_STRATEGIES); return result; }
private static FulgoraElementTraversal<Vertex,Edge> getReverseTraversal(final MessageScope.Local<?> scope, final JanusGraphTransaction graph, @Nullable final Vertex start) { Traversal.Admin<Vertex,Edge> incident = scope.getIncidentTraversal().get().asAdmin(); FulgoraElementTraversal<Vertex,Edge> result = FulgoraElementTraversal.of(graph); for (Step step : incident.getSteps()) result.addStep(step); Step<Vertex,?> startStep = result.getStartStep(); assert startStep instanceof VertexStep; ((VertexStep) startStep).reverseDirection(); if (start!=null) result.addStep(0, new StartStep<>(incident, start)); result.asAdmin().setStrategies(FULGORA_STRATEGIES); return result; }
private static Traversal.Admin<?,?> connectiveTraversal(final Traversal.Admin<?, ?> connectiveTraversal, final ConnectiveStep connectiveStep) { final Traversal.Admin<?, ?> traversal = __.start().asAdmin(); final Set<String> conjunctionLabels = connectiveStep.getLabels(); if (!conjunctionLabels.isEmpty()) { final StartStep<?> startStep = new StartStep<>(connectiveTraversal); conjunctionLabels.forEach(startStep::addLabel); traversal.addStep(startStep); } return traversal; }
/** * A step modulator that provides a lable to the step that can be accessed later in the traversal by other steps. * * @param stepLabel the name of the step * @param stepLabels additional names for the label * @return the traversal with the modified end step * @see <a href="http://tinkerpop.apache.org/docs/${project.version}/reference/#as-step" target="_blank">Reference Documentation - As Step</a> * @since 3.0.0-incubating */ public default GraphTraversal<S, E> as(final String stepLabel, final String... stepLabels) { this.asAdmin().getBytecode().addStep(Symbols.as, stepLabel, stepLabels); if (this.asAdmin().getSteps().size() == 0) this.asAdmin().addStep(new StartStep<>(this.asAdmin())); final Step<?, E> endStep = this.asAdmin().getEndStep(); endStep.addLabel(stepLabel); for (final String label : stepLabels) { endStep.addLabel(label); } return this; }
private static <T extends Traversal.Admin<Vertex, Edge>> T setVertexStart( Traversal.Admin<Vertex, Edge> incidentTraversal, Vertex vertex) { incidentTraversal.addStep(0, new StartStep<>(incidentTraversal, vertex)); @SuppressWarnings("unchecked") T t = (T) incidentTraversal; return t; }
private static Traversal.Admin<?,?> connectiveTraversal(final Traversal.Admin<?, ?> connectiveTraversal, final ConnectiveStep connectiveStep) { final Traversal.Admin<?, ?> traversal = __.start().asAdmin(); final Set<String> conjunctionLabels = connectiveStep.getLabels(); if (!conjunctionLabels.isEmpty()) { final StartStep<?> startStep = new StartStep<>(connectiveTraversal); conjunctionLabels.forEach(startStep::addLabel); traversal.addStep(startStep); } return traversal; }
private static FulgoraElementTraversal<Vertex,Edge> getReverseTraversal(final MessageScope.Local<?> scope, final TitanTransaction graph, @Nullable final Vertex start) { Traversal.Admin<Vertex,Edge> incident = scope.getIncidentTraversal().get().asAdmin(); FulgoraElementTraversal<Vertex,Edge> result = FulgoraElementTraversal.of(graph); for (Step step : incident.getSteps()) result.addStep(step); Step<Vertex,?> startStep = result.getStartStep(); assert startStep instanceof VertexStep; ((VertexStep) startStep).reverseDirection(); if (start!=null) result.addStep(0, new StartStep<>(incident, start)); result.asAdmin().setStrategies(FULGORA_STRATEGIES); return result; }
/** * A step modulator that provides a lable to the step that can be accessed later in the traversal by other steps. * * @param stepLabel the name of the step * @param stepLabels additional names for the label * @return the traversal with the modified end step * @see <a href="http://tinkerpop.apache.org/docs/${project.version}/reference/#as-step" target="_blank">Reference Documentation - As Step</a> * @since 3.0.0-incubating */ public default GraphTraversal<S, E> as(final String stepLabel, final String... stepLabels) { this.asAdmin().getBytecode().addStep(Symbols.as, stepLabel, stepLabels); if (this.asAdmin().getSteps().size() == 0) this.asAdmin().addStep(new StartStep<>(this.asAdmin())); final Step<?, E> endStep = this.asAdmin().getEndStep(); endStep.addLabel(stepLabel); for (final String label : stepLabels) { endStep.addLabel(label); } return this; }