本文整理汇总了Java中org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep类的典型用法代码示例。如果您正苦于以下问题:Java ReducingBarrierStep类的具体用法?Java ReducingBarrierStep怎么用?Java ReducingBarrierStep使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ReducingBarrierStep类属于org.apache.tinkerpop.gremlin.process.traversal.step.util包,在下文中一共展示了ReducingBarrierStep类的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: apply
import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep; //导入依赖的package包/类
@Override
public void apply(final Traversal.Admin<?, ?> traversal) {
if (!traversal.getStrategies().toList().contains(ComputerVerificationStrategy.instance())) {
if (!TraversalHelper.getStepsOfAssignableClass(VertexComputing.class, traversal).isEmpty())
throw new VerificationException("VertexComputing steps must be executed with a GraphComputer: " + TraversalHelper.getStepsOfAssignableClass(VertexComputing.class, traversal), traversal);
}
traversal.getSteps().forEach(step -> {
if (step instanceof ReducingBarrierStep && step.getTraversal().getParent() instanceof RepeatStep && step.getTraversal().getParent().getGlobalChildren().get(0).getSteps().contains(step))
throw new VerificationException("The parent of a reducing barrier can not be repeat()-step: " + step, traversal);
});
// The ProfileSideEffectStep must be the last step or the 2nd last step when accompanied by the cap step.
if (TraversalHelper.hasStepOfClass(ProfileSideEffectStep.class, traversal) &&
!(traversal.asAdmin().getEndStep() instanceof ProfileSideEffectStep) &&
!(traversal.asAdmin().getEndStep() instanceof SideEffectCapStep && traversal.asAdmin().getEndStep().getPreviousStep() instanceof ProfileSideEffectStep)) {
throw new VerificationException("When specified, the profile()-Step must be the last step or followed only by the cap()-step.", traversal);
}
if (TraversalHelper.getStepsOfClass(ProfileSideEffectStep.class, traversal).size() > 1) {
throw new VerificationException("The profile()-Step cannot be specified multiple times.", traversal);
}
}
示例2: apply
import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep; //导入依赖的package包/类
@Override
public void apply(Traversal.Admin<?, ?> traversal) {
Graph graph = traversal.getGraph().get();
if (!(graph instanceof UniGraph)) {
return;
}
UniGraph uniGraph = (UniGraph) graph;
TraversalHelper.getStepsOfClass(UnionStep.class, traversal).forEach(unionStep -> {
Traversal.Admin[] traversals = (Traversal.Admin[]) unionStep.getGlobalChildren().toArray(new Traversal.Admin[0]);
for (Traversal.Admin admin : traversals) {
if (TraversalHelper.getLastStepOfAssignableClass(ReducingBarrierStep.class, admin).isPresent() ||
traversal.getParent() instanceof RepeatStep)
return;
}
UniGraphUnionStep uniGraphUnionStep = new UniGraphUnionStep(traversal, uniGraph, traversals);
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);
}
});
traversalParent.getGlobalChildren().forEach(child -> {
if(TraversalHelper.stepIndex(unionStep, child) != -1) {
TraversalHelper.replaceStep(unionStep, uniGraphUnionStep, child);
}
});
});
}
});
}
示例3: apply
import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep; //导入依赖的package包/类
@Override
public void apply(Traversal.Admin<?, ?> traversal) {
if (TraversalHelper.onGraphComputer(traversal)) return;
Graph graph = traversal.getGraph().get();
if (!(graph instanceof UniGraph)) {
return;
}
UniGraph uniGraph = (UniGraph) graph;
TraversalHelper.getStepsOfClass(RepeatStep.class, traversal).forEach(repeatStep -> {
if (TraversalHelper.hasStepOfClass(UnionStep.class, (Traversal.Admin) repeatStep.getGlobalChildren().get(0))) {
return;
}
UniGraphRepeatStep uniGraphRepeatStep = new UniGraphRepeatStep(repeatStep, traversal.asAdmin(), uniGraph);
if (repeatStep.getUntilTraversal() != null && TraversalHelper.getFirstStepOfAssignableClass(ReducingBarrierStep.class, repeatStep.getUntilTraversal()).isPresent())
return;
Traversal.Admin<?, ?> repeatTraversal = uniGraphRepeatStep.getRepeatTraversal();
TraversalHelper.replaceStep(repeatStep, uniGraphRepeatStep, traversal);
TraversalHelper.getStepsOfClass(RepeatStep.RepeatEndStep.class, repeatTraversal).forEach(repeatEndStep -> {
UniGraphRepeatStep.RepeatEndStep uniGraphRepeatEndStep = new UniGraphRepeatStep.RepeatEndStep(repeatTraversal, uniGraphRepeatStep);
TraversalHelper.replaceStep(repeatEndStep, uniGraphRepeatEndStep, repeatTraversal);
});
});
}
示例4: apply
import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep; //导入依赖的package包/类
@Override
public void apply(final Traversal.Admin<?, ?> traversal) {
if (!traversal.getStrategies().toList().contains(ComputerFinalizationStrategy.instance()) &&
!traversal.getStrategies().toList().contains(ComputerVerificationStrategy.instance())) {
if (!TraversalHelper.getStepsOfAssignableClass(VertexComputing.class, traversal).isEmpty())
throw new VerificationException("VertexComputing steps must be executed with a GraphComputer: " + TraversalHelper.getStepsOfAssignableClass(VertexComputing.class, traversal), traversal);
}
for (final Step<?, ?> step : traversal.getSteps()) {
for (String label : new HashSet<>(step.getLabels())) {
if (Graph.Hidden.isHidden(label))
step.removeLabel(label);
}
if (step instanceof ReducingBarrierStep && step.getTraversal().getParent() instanceof RepeatStep && step.getTraversal().getParent().getGlobalChildren().get(0).getSteps().contains(step))
throw new VerificationException("The parent of a reducing barrier can not be repeat()-step: " + step, traversal);
}
// The ProfileSideEffectStep must be the last step, 2nd last step when accompanied by the cap step,
// or 3rd to last when the traversal ends with a RequirementsStep.
final Step<?, ?> endStep = traversal.asAdmin().getEndStep();
if (TraversalHelper.hasStepOfClass(ProfileSideEffectStep.class, traversal) &&
!(endStep instanceof ProfileSideEffectStep ||
(endStep instanceof SideEffectCapStep && endStep.getPreviousStep() instanceof ProfileSideEffectStep) ||
(endStep instanceof RequirementsStep && (
endStep.getPreviousStep() instanceof SideEffectCapStep ||
endStep.getPreviousStep() instanceof ProfileSideEffectStep)))) {
throw new VerificationException("When specified, the profile()-Step must be the last step or followed only by the cap()-step and/or requirements step.", traversal);
}
if (TraversalHelper.getStepsOfClass(ProfileSideEffectStep.class, traversal).size() > 1) {
throw new VerificationException("The profile()-Step cannot be specified multiple times.", traversal);
}
}
示例5: apply
import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep; //导入依赖的package包/类
@Override
public void apply(final Traversal.Admin<?, ?> traversal) {
//Only optimize SqlgGraph. StarGraph also passes through here.
//noinspection OptionalGetWithoutIsPresent
if (!(traversal.getGraph().get() instanceof SqlgGraph)) {
return;
}
List<TraversalFilterStep> traversalFilterSteps = TraversalHelper.getStepsOfAssignableClass(TraversalFilterStep.class, traversal);
for (TraversalFilterStep<S> traversalFilterStep : traversalFilterSteps) {
List<Traversal.Admin<S, ?>> filterTraversals = traversalFilterStep.getLocalChildren();
Preconditions.checkState(filterTraversals.size() == 1);
Traversal.Admin<S, ?> filterTraversal = filterTraversals.get(0);
//reducing barrier steps like count does not work with Sqlg's barrier optimizations
List<ReducingBarrierStep> reducingBarrierSteps = TraversalHelper.getStepsOfAssignableClassRecursively(ReducingBarrierStep.class, filterTraversal);
if (!reducingBarrierSteps.isEmpty()) {
continue;
}
SqlgTraversalFilterStepBarrier sqlgTraversalFilterStepBarrier = new SqlgTraversalFilterStepBarrier<>(
traversal,
filterTraversal
);
for (String label : traversalFilterStep.getLabels()) {
sqlgTraversalFilterStepBarrier.addLabel(label);
}
TraversalHelper.replaceStep(
traversalFilterStep,
sqlgTraversalFilterStepBarrier,
traversalFilterStep.getTraversal()
);
}
}
示例6: apply
import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep; //导入依赖的package包/类
@Override
public void apply(final Traversal.Admin<?, ?> traversal) {
//Only optimize SqlgGraph. StarGraph also passes through here.
//noinspection OptionalGetWithoutIsPresent
if (!(traversal.getGraph().get() instanceof SqlgGraph)) {
return;
}
List<AndStep> andSteps = TraversalHelper.getStepsOfAssignableClass(AndStep.class, traversal);
for (AndStep<S> andStep : andSteps) {
Collection<Traversal.Admin<S, ?>> andTraversals = andStep.getLocalChildren();
//reducing barrier steps like count does not work with Sqlg's barrier optimizations
List<ReducingBarrierStep> reducingBarrierSteps = TraversalHelper.getStepsOfAssignableClassRecursively(ReducingBarrierStep.class, traversal);
if (!reducingBarrierSteps.isEmpty()) {
return;
}
SqlgAndStepBarrier<S> sqlgAndStepBarrier = new SqlgAndStepBarrier(
traversal,
andTraversals
);
for (String label : andStep.getLabels()) {
sqlgAndStepBarrier.addLabel(label);
}
TraversalHelper.replaceStep(
andStep,
sqlgAndStepBarrier,
andStep.getTraversal()
);
}
}
示例7: apply
import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep; //导入依赖的package包/类
@Override
public void apply(final Traversal.Admin<?, ?> traversal) {
//Only optimize SqlgGraph. StarGraph also passes through here.
//noinspection OptionalGetWithoutIsPresent
if (!(traversal.getGraph().get() instanceof SqlgGraph)) {
return;
}
List<OptionalStep> optionalSteps = TraversalHelper.getStepsOfAssignableClass(OptionalStep.class, traversal);
for (OptionalStep<S> optionalStep : optionalSteps) {
//The predicate branch step is a local traversal.
//As such if it contains a ReducingBarrierStep the SqlgBranchStepBarrier will not work.
Traversal.Admin<S, S> optionalTraversal = optionalStep.getLocalChildren().get(0);
List<ReducingBarrierStep> reducingBarrierSteps = TraversalHelper.getStepsOfAssignableClass(ReducingBarrierStep.class, optionalTraversal);
if (!reducingBarrierSteps.isEmpty()) {
continue;
}
SqlgOptionalStepBarrier sqlgOptionalStepBarrier = new SqlgOptionalStepBarrier<>(
traversal,
optionalTraversal
);
for (String label : optionalStep.getLabels()) {
sqlgOptionalStepBarrier.addLabel(label);
}
TraversalHelper.replaceStep(
optionalStep,
sqlgOptionalStepBarrier,
optionalStep.getTraversal()
);
}
}
示例8: apply
import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep; //导入依赖的package包/类
@Override
public void apply(final Traversal.Admin<?, ?> traversal) {
//Only optimize SqlgGraph. StarGraph also passes through here.
//noinspection OptionalGetWithoutIsPresent
if (!(traversal.getGraph().get() instanceof SqlgGraph)) {
return;
}
List<NotStep> notSteps = TraversalHelper.getStepsOfAssignableClass(NotStep.class, traversal);
for (NotStep<S> notStep : notSteps) {
//reducing barrier steps like count does not work with Sqlg's barrier optimizations
List<ReducingBarrierStep> reducingBarrierSteps = TraversalHelper.getStepsOfAssignableClassRecursively(ReducingBarrierStep.class, traversal);
if (!reducingBarrierSteps.isEmpty()) {
return;
}
SqlgNotStepBarrier<S> sqlgNotStepBarrier = new SqlgNotStepBarrier<>(traversal, notStep.getLocalChildren().get(0));
for (String label : notStep.getLabels()) {
sqlgNotStepBarrier.addLabel(label);
}
TraversalHelper.replaceStep(
notStep,
sqlgNotStepBarrier,
notStep.getTraversal()
);
}
}
示例9: apply
import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep; //导入依赖的package包/类
@Override
public void apply(final Traversal.Admin<?, ?> traversal) {
//Only optimize SqlgGraph. StarGraph also passes through here.
//noinspection OptionalGetWithoutIsPresent
if (!(traversal.getGraph().get() instanceof SqlgGraph)) {
return;
}
List<WhereTraversalStep> whereTraversalSteps = TraversalHelper.getStepsOfAssignableClass(WhereTraversalStep.class, traversal);
for (WhereTraversalStep<S> whereTraversalStep : whereTraversalSteps) {
List<Traversal.Admin<?, ?>> whereTraversals = whereTraversalStep.getLocalChildren();
Preconditions.checkState(whereTraversals.size() == 1);
Traversal.Admin<?, ?> whereTraversal = whereTraversals.get(0);
//reducing barrier steps like count does not work with Sqlg's barrier optimizations
List<ReducingBarrierStep> reducingBarrierSteps = TraversalHelper.getStepsOfAssignableClassRecursively(ReducingBarrierStep.class, whereTraversal);
if (!reducingBarrierSteps.isEmpty()) {
continue;
}
SqlgWhereTraversalStepBarrier sqlgTraversalFilterStepBarrier = new SqlgWhereTraversalStepBarrier<>(
traversal,
whereTraversalStep
);
for (String label : whereTraversalStep.getLabels()) {
sqlgTraversalFilterStepBarrier.addLabel(label);
}
TraversalHelper.replaceStep(
whereTraversalStep,
sqlgTraversalFilterStepBarrier,
whereTraversalStep.getTraversal()
);
}
}
示例10: apply
import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep; //导入依赖的package包/类
@Override
public void apply(final Traversal.Admin<?, ?> traversal) {
//Only optimize SqlgGraph. StarGraph also passes through here.
//noinspection OptionalGetWithoutIsPresent
if (!(traversal.getGraph().get() instanceof SqlgGraph)) {
return;
}
List<OrStep> orSteps = TraversalHelper.getStepsOfAssignableClass(OrStep.class, traversal);
for (OrStep<S> orStep : orSteps) {
Collection<Traversal.Admin<S, ?>> orTraversals = orStep.getLocalChildren();
//reducing barrier steps like count does not work with Sqlg's barrier optimizations
List<ReducingBarrierStep> reducingBarrierSteps = TraversalHelper.getStepsOfAssignableClassRecursively(ReducingBarrierStep.class, traversal);
if (!reducingBarrierSteps.isEmpty()) {
return;
}
SqlgOrStepBarrier<S> sqlgOrStepBarrier = new SqlgOrStepBarrier(
traversal,
orTraversals
);
for (String label : orStep.getLabels()) {
sqlgOrStepBarrier.addLabel(label);
}
TraversalHelper.replaceStep(
orStep,
sqlgOrStepBarrier,
orStep.getTraversal()
);
}
}
示例11: apply
import org.apache.tinkerpop.gremlin.process.traversal.step.util.ReducingBarrierStep; //导入依赖的package包/类
@Override
public void apply(final Traversal.Admin<?, ?> traversal) {
//Only optimize SqlgGraph. StarGraph also passes through here.
//noinspection OptionalGetWithoutIsPresent
if (!(traversal.getGraph().get() instanceof SqlgGraph)) {
return;
}
List<ChooseStep> chooseSteps = TraversalHelper.getStepsOfAssignableClass(ChooseStep.class, traversal);
for (ChooseStep<S, E, M> chooseStep : chooseSteps) {
Traversal.Admin<S, M> predicateTraversal = chooseStep.getLocalChildren().get(0);
//The predicate branch step is a local traversal.
//As such if it contains a ReducingBarrierStep the SqlgBranchStepBarrier will not work.
List<ReducingBarrierStep> reducingBarrierSteps = TraversalHelper.getStepsOfAssignableClass(ReducingBarrierStep.class, predicateTraversal);
if (!reducingBarrierSteps.isEmpty()) {
continue;
}
if (predicateTraversal.getSteps().get(predicateTraversal.getSteps().size() - 1) instanceof HasNextStep) {
predicateTraversal.removeStep(predicateTraversal.getSteps().get(predicateTraversal.getSteps().size() - 1));
}
SqlgBranchStepBarrier sqlgBranchStepBarrier = new SqlgChooseStepBarrier<>(
traversal,
predicateTraversal
);
for (String label : chooseStep.getLabels()) {
sqlgBranchStepBarrier.addLabel(label);
}
try {
Field traversalOptionsField = chooseStep.getClass().getSuperclass().getDeclaredField("traversalOptions");
traversalOptionsField.setAccessible(true);
Map<M, List<Traversal.Admin<S, E>>> traversalOptions = (Map<M, List<Traversal.Admin<S, E>>>) traversalOptionsField.get(chooseStep);
for (Map.Entry<M, List<Traversal.Admin<S, E>>> entry : traversalOptions.entrySet()) {
for (Traversal.Admin<S, E> admin : entry.getValue()) {
sqlgBranchStepBarrier.addGlobalChildOption(entry.getKey(), admin);
}
}
} catch (NoSuchFieldException | IllegalAccessException e) {
throw new RuntimeException(e);
}
TraversalHelper.replaceStep(
chooseStep,
sqlgBranchStepBarrier,
chooseStep.getTraversal()
);
}
}