Package com.thinkaurelius.faunus.tinkerpop.gremlin

Source Code of com.thinkaurelius.faunus.tinkerpop.gremlin.InlineScriptExecutor

package com.thinkaurelius.faunus.tinkerpop.gremlin;

import com.thinkaurelius.faunus.FaunusGraph;
import com.thinkaurelius.faunus.FaunusPipeline;
import org.apache.hadoop.conf.Configuration;

import java.io.FileInputStream;
import java.util.Map;
import java.util.Properties;

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

    public static void main(final String[] args) throws Exception {
        if (args.length < 1 || args.length > 3 || (args.length == 1 && args[0].contains("-h"))) {
            System.out.println("Faunus Usage:");
            System.out.println("  arg1: Faunus graph configuration file (optional): defaults to bin/faunus.properties");
            System.out.println("  arg2: FaunusGremlin script: 'g.V.step.step...'");
            System.out.println("  arg3: Overriding configurations (optional): '-Dmapred.map.tasks=14 mapred.reduce.tasks=6'");
            System.exit(-1);
        }

        final String script;
        final String file;
        final Properties fileConfiguration = new Properties();
        final Properties commandLineConfiguration = new Properties();
        if (args.length == 1) {
            script = args[0];
            file = "bin/faunus.properties";
        } else if (args.length == 2) {
            if (args[1].startsWith("-D")) {
                script = args[0];
                file = "bin/faunus.properties";
                for (final String property : args[1].substring(2).trim().split(" ")) {
                    commandLineConfiguration.put(property.split("=")[0], property.split("=")[1]);
                }
            } else {
                file = args[0];
                script = args[1];
            }
        } else {
            file = args[0];
            script = args[1];
            for (final String property : args[2].substring(2).trim().split(" ")) {
                commandLineConfiguration.put(property.split("=")[0], property.split("=")[1]);
            }
        }

        fileConfiguration.load(new FileInputStream(file));


        final Configuration conf = new Configuration();
        for (Map.Entry<Object, Object> entry : fileConfiguration.entrySet()) {
            conf.set(entry.getKey().toString(), entry.getValue().toString());
        }
        for (Map.Entry<Object, Object> entry : commandLineConfiguration.entrySet()) {
            conf.set(entry.getKey().toString(), entry.getValue().toString());
        }

        final FaunusGremlinScriptEngine scriptEngine = new FaunusGremlinScriptEngine();
        scriptEngine.put("g", new FaunusGraph(conf));
        Object result = scriptEngine.eval(script);
        if (result.getClass().equals(FaunusPipeline.class))
            ((FaunusPipeline) result).submit(script, true);
        System.exit(0);
    }
}
TOP

Related Classes of com.thinkaurelius.faunus.tinkerpop.gremlin.InlineScriptExecutor

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.