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

com.tinkerpop.rexster.config.TinkerGraphGraphConfiguration Maven / Gradle / Ivy

package com.tinkerpop.rexster.config;

import com.tinkerpop.blueprints.Graph;
import com.tinkerpop.blueprints.impls.tg.TinkerGraph;
import com.tinkerpop.rexster.Tokens;
import com.tinkerpop.rexster.util.MockTinkerTransactionalGraph;
import org.apache.commons.configuration.ConversionException;

/**
 * @author Stephen Mallette (http://stephen.genoprime.com)
 */
public class TinkerGraphGraphConfiguration implements GraphConfiguration {

    public Graph configureGraphInstance(final GraphConfigurationContext context) throws GraphConfigurationException {

        final String graphFile = context.getProperties().getString(Tokens.REXSTER_GRAPH_LOCATION, null);

        // determines if a mock transactional graph should be used for testing purposes.
        boolean mockTx;
        try {
            mockTx = context.getProperties().getBoolean("graph-mock-tx", false);
        } catch (ConversionException ce) {
            throw new GraphConfigurationException(ce);
        }

        String fileType;
        try {
            fileType = context.getProperties().getString("graph-storage", "");
        } catch (IllegalArgumentException iae) {
            // default to java serialization
            fileType = "";
        }

        try {
            if (graphFile == null || graphFile.length() == 0) {
                // pure in memory if graph file is specified
                return mockTx ? new MockTinkerTransactionalGraph() : new TinkerGraph();
            } else {
                return mockTx ? new MockTinkerTransactionalGraph(graphFile, getFileType(fileType)) : new TinkerGraph(graphFile, getFileType(fileType));
            }
        } catch (Exception ex) {
            throw new GraphConfigurationException(ex);
        }
    }

    private TinkerGraph.FileType getFileType(final String fileType)
    {
        String fileTypeLower = fileType.toLowerCase();

        if (fileTypeLower.equals("graphson")) {
            return TinkerGraph.FileType.GRAPHSON;
        }
        else if (fileTypeLower.equals("graphml")) {
            return TinkerGraph.FileType.GRAPHML;
        }
        else if (fileTypeLower.equals(("gml"))) {
            return TinkerGraph.FileType.GML;
        }
        else {
            return TinkerGraph.FileType.JAVA;
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy