All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.unipop.process.start.UniGraphStartStepStrategy Maven / Gradle / Ivy

package org.unipop.process.start;

import org.apache.tinkerpop.gremlin.process.traversal.Step;
import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
import org.apache.tinkerpop.gremlin.process.traversal.TraversalStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.step.filter.DedupGlobalStep;
import org.apache.tinkerpop.gremlin.process.traversal.step.map.GraphStep;
import org.apache.tinkerpop.gremlin.process.traversal.strategy.AbstractTraversalStrategy;
import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalHelper;
import org.apache.tinkerpop.gremlin.structure.Graph;
import org.unipop.process.predicate.PredicatesUtil;
import org.unipop.structure.UniGraph;

public class UniGraphStartStepStrategy extends AbstractTraversalStrategy implements TraversalStrategy.ProviderOptimizationStrategy{

    @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(GraphStep.class, traversal).forEach(graphStep -> {

            final UniGraphStartStep uniGraphStartStep = new UniGraphStartStep<>(graphStep, uniGraph.getControllerManager());
            TraversalHelper.replaceStep(graphStep, (Step) uniGraphStartStep, traversal);
            PredicatesUtil.collectPredicates(uniGraphStartStep, traversal);
        });
    }
}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy