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

com.tinkerpop.gremlin.groovy.loaders.GremlinLoader.groovy Maven / Gradle / Ivy

The newest version!
package com.tinkerpop.gremlin.groovy.loaders

import com.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine
import com.tinkerpop.gremlin.process.Step
import com.tinkerpop.gremlin.process.Traversal
import com.tinkerpop.gremlin.process.graph.GraphTraversal
import com.tinkerpop.gremlin.structure.Edge
import com.tinkerpop.gremlin.structure.Element
import com.tinkerpop.gremlin.structure.Graph
import com.tinkerpop.gremlin.structure.Vertex

/**
 * @author Marko A. Rodriguez (http://markorodriguez.com)
 * @author Stephen Mallette (http://stephen.genoprime.com)
 */
class GremlinLoader {

    private static final GremlinGroovyScriptEngine engine = new GremlinGroovyScriptEngine()
    private static final Set steps = new HashSet()
    static {
        [GraphTraversal, Graph, Vertex, Edge, Element].forEach {
            it.getMethods().findAll {
                Traversal.class.isAssignableFrom(it.getReturnType());
            }.each {
                addStep(it.getName())
            }
        }
    }

    public static void load() {
        ObjectLoader.load()
        StepLoader.load()
    }

    public static Step compile(final String script) {
        return (Step) engine.eval(script, engine.createBindings())
    }

    public static void addStep(final String stepName) {
        steps.add(stepName)
    }

    public static boolean isStep(final String stepName) {
        return steps.contains(stepName)
    }

    public static Set getStepNames() {
        return new HashSet(steps)
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy