private static final boolean processHasStep(final HasStep<?> step, final Traversal.Admin<?, ?> traversal) { if (step.getPreviousStep() instanceof HasStep) { final HasStep<?> previousStep = (HasStep<?>) step.getPreviousStep(); for (final HasContainer hasContainer : step.getHasContainers()) { previousStep.addHasContainer(hasContainer); final VertexStep<Edge> previousStep = (VertexStep<Edge>) step.getPreviousStep(); final List<String> edgeLabels = new ArrayList<>(); for (final HasContainer hasContainer : new ArrayList<>(step.getHasContainers())) { if (hasContainer.getKey().equals(T.label.getAccessor())) { if (hasContainer.getBiPredicate() == Compare.eq && TraversalHelper.replaceStep(previousStep, newVertexStep, traversal); TraversalHelper.copyLabels(previousStep, newVertexStep, false); if (step.getHasContainers().isEmpty()) { TraversalHelper.copyLabels(step, newVertexStep, false); traversal.removeStep(step);
@Override public void apply(final Traversal.Admin<?, ?> traversal) { TraversalHelper.getStepsOfAssignableClass(HasStep.class, traversal).stream() .filter(hasStep -> ((HasStep<?>) hasStep).getHasContainers().get(0).getKey().equals(T.id.getAccessor())) .forEach(hasStep -> ((HasStep<?>) hasStep).getHasContainers().get(0).setKey(this.idPropertyKey));
if (!(next instanceof HasStep) || !((HasContainer) ((HasStep) next).getHasContainers().get(0)).getKey().equals(partitionKey)) {
if (childStep instanceof HasStep) { P p = null; for (final HasContainer hasContainer : ((HasStep<?>) childStep).getHasContainers()) { if (null == key) key = hasContainer.getKey();
@Override public void apply(final Traversal.Admin<?, ?> traversal) { //Only optimize SqlgGraph. StarGraph also passes through here. if (!(traversal.getGraph().orElseThrow(IllegalStateException::new) instanceof SqlgGraph)) { return; } if (!SqlgTraversalUtil.mayOptimize(traversal)) { return; } List<HasStep> hasSteps = TraversalHelper.getStepsOfAssignableClass(HasStep.class, traversal); for (HasStep<?> hasStep : hasSteps) { List<HasContainer> hasContainers = new ArrayList<>(hasStep.getHasContainers()); SqlgHasStep sqlgHasStep = new SqlgHasStep( hasStep.getTraversal(), hasContainers.toArray(new HasContainer[]{}) ); for (String label : hasStep.getLabels()) { sqlgHasStep.addLabel(label); } //noinspection unchecked TraversalHelper.replaceStep( hasStep, sqlgHasStep, hasStep.getTraversal() ); } }
@Override public void apply(final Traversal.Admin<?, ?> traversal) { //Only optimize SqlgGraph. StarGraph also passes through here. if (!(traversal.getGraph().orElseThrow(IllegalStateException::new) instanceof SqlgGraph)) { return; } if (!SqlgTraversalUtil.mayOptimize(traversal)) { return; } List<HasStep> hasSteps = TraversalHelper.getStepsOfAssignableClass(HasStep.class, traversal); for (HasStep<?> hasStep : hasSteps) { List<HasContainer> hasContainers = new ArrayList<>(hasStep.getHasContainers()); SqlgHasStep sqlgHasStep = new SqlgHasStep( hasStep.getTraversal(), hasContainers.toArray(new HasContainer[]{}) ); for (String label : hasStep.getLabels()) { sqlgHasStep.addLabel(label); } //noinspection unchecked TraversalHelper.replaceStep( hasStep, sqlgHasStep, hasStep.getTraversal() ); } }
private static final boolean processHasStep(final HasStep<?> step, final Traversal.Admin<?, ?> traversal) { if (step.getPreviousStep() instanceof HasStep) { final HasStep<?> previousStep = (HasStep<?>) step.getPreviousStep(); for (final HasContainer hasContainer : step.getHasContainers()) { previousStep.addHasContainer(hasContainer); final VertexStep<Edge> previousStep = (VertexStep<Edge>) step.getPreviousStep(); final List<String> edgeLabels = new ArrayList<>(); for (final HasContainer hasContainer : new ArrayList<>(step.getHasContainers())) { if (hasContainer.getKey().equals(T.label.getAccessor())) { if (hasContainer.getBiPredicate() == Compare.eq && TraversalHelper.replaceStep(previousStep, newVertexStep, traversal); TraversalHelper.copyLabels(previousStep, newVertexStep, false); if (step.getHasContainers().isEmpty()) { TraversalHelper.copyLabels(step, newVertexStep, false); traversal.removeStep(step);
@Override public void apply(final Traversal.Admin<?, ?> traversal) { TraversalHelper.getStepsOfAssignableClass(HasStep.class, traversal).stream() .filter(hasStep -> ((HasStep<?>) hasStep).getHasContainers().get(0).getKey().equals(T.id.getAccessor())) .forEach(hasStep -> ((HasStep<?>) hasStep).getHasContainers().get(0).setKey(this.idPropertyKey));
if (step instanceof HasStep) { HasStep<?> hasStep = (HasStep) step; for (HasContainer hasContainer : hasStep.getHasContainers()) { boolean hasContainerKeyNotIdOrLabel = hasContainerKeyNotIdOrLabel(hasContainer); if (hasContainerKeyNotIdOrLabel && SUPPORTED_BI_PREDICATE.contains(hasContainer.getBiPredicate())) {
HasStep hasStep = (HasStep) traversal.getSteps().get(0); this.untilHasContainers = hasStep.getHasContainers(); if (this.untilHasContainers.size() == 1) { this.untilHasContainer = this.untilHasContainers.get(0);
HasStep hasStep = (HasStep) traversal.getSteps().get(0); this.untilHasContainers = hasStep.getHasContainers(); if (this.untilHasContainers.size() == 1) { this.untilHasContainer = this.untilHasContainers.get(0);
if (step instanceof HasStep) { HasStep<?> hasStep = (HasStep) step; for (HasContainer hasContainer : hasStep.getHasContainers()) { boolean hasContainerKeyNotIdOrLabel = hasContainerKeyNotIdOrLabel(hasContainer); if (hasContainerKeyNotIdOrLabel && SUPPORTED_BI_PREDICATE.contains(hasContainer.getBiPredicate())) {
if (!(next instanceof HasStep) || !((HasContainer) ((HasStep) next).getHasContainers().get(0)).getKey().equals(partitionKey)) {
propertyFetcher.fetchAllKeys(); } else { List<HasContainer> hasContainers = hasStep.getHasContainers(); hasContainers.stream().map(HasContainer::getKey).forEach(propertyFetcher::addPropertyKey);
for (final HasContainer hasContainer : ((HasStep<?>) childStep).getHasContainers()) { if (null == key) key = hasContainer.getKey();