Package com.tinkerpop.gremlin.process.graph.strategy

Source Code of com.tinkerpop.gremlin.process.graph.strategy.TraverserSourceStrategy

package com.tinkerpop.gremlin.process.graph.strategy;

import com.tinkerpop.gremlin.process.Traversal;
import com.tinkerpop.gremlin.process.TraversalEngine;
import com.tinkerpop.gremlin.process.TraversalStrategies;
import com.tinkerpop.gremlin.process.TraversalStrategy;
import com.tinkerpop.gremlin.process.TraverserGenerator;
import com.tinkerpop.gremlin.process.graph.marker.TraverserSource;

import java.util.HashSet;
import java.util.Set;

/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
public class TraverserSourceStrategy extends AbstractTraversalStrategy {

    private static final TraverserSourceStrategy INSTANCE = new TraverserSourceStrategy();
    private static final Set<Class<? extends TraversalStrategy>> PRIORS = new HashSet<>();

    static {
        PRIORS.add(ChooseLinearStrategy.class);
        PRIORS.add(ComparingRemovalStrategy.class);
        PRIORS.add(DedupOptimizerStrategy.class);
        PRIORS.add(EngineDependentStrategy.class);
        PRIORS.add(IdentityRemovalStrategy.class);
        PRIORS.add(LabeledEndStepStrategy.class);
        PRIORS.add(LocalRangeStrategy.class);
        PRIORS.add(MatchWhereStrategy.class);
        PRIORS.add(ReducingStrategy.class);
        PRIORS.add(SideEffectCapStrategy.class);
        PRIORS.add(UnionLinearStrategy.class);
        PRIORS.add(UnrollJumpStrategy.class);
        PRIORS.add(UntilStrategy.class);
    }


    private TraverserSourceStrategy() {
    }

    @Override
    public void apply(final Traversal<?, ?> traversal, final TraversalEngine engine) {
        if (engine.equals(TraversalEngine.COMPUTER))
            return;

        final TraverserGenerator traverserGenerator = TraversalStrategies.GlobalCache.getStrategies(traversal.getClass()).getTraverserGenerator(traversal, engine);
        traversal.getSteps()
                .stream()
                .filter(step -> step instanceof TraverserSource)
                .forEach(step -> ((TraverserSource) step).generateTraversers(traverserGenerator));
    }

    @Override
    public Set<Class<? extends TraversalStrategy>> applyPrior() {
        return PRIORS;
    }

    public static TraverserSourceStrategy instance() {
        return INSTANCE;
    }
}
TOP

Related Classes of com.tinkerpop.gremlin.process.graph.strategy.TraverserSourceStrategy

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.