package com.tinkerpop.blueprints.impls.neo4j; import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.ConfigurationConverter; import org.neo4j.graphdb.factory.HighlyAvailableGraphDatabaseFactory; import org.neo4j.kernel.ha.HighlyAvailableGraphDatabase; import java.util.HashMap; import java.util.Iterator; import java.util.Map; /** * A Blueprints implementation of the graph database Neo4j (http://neo4j.org) with High Availability mode. * * @author Stephen Mallette */ public class Neo4jHaGraph extends Neo4jGraph { public Neo4jHaGraph(final String directory) { super(new HighlyAvailableGraphDatabaseFactory().newHighlyAvailableDatabase(directory)); } public Neo4jHaGraph(final String directory, final Map<String, String> configuration) { super(new HighlyAvailableGraphDatabaseFactory().newHighlyAvailableDatabaseBuilder(directory).setConfig(configuration).newGraphDatabase()); } public Neo4jHaGraph(final HighlyAvailableGraphDatabase rawGraph) { super(rawGraph); } public Neo4jHaGraph(final Configuration configuration) { this(configuration.getString("blueprints.neo4jha.directory", null), convertConfiguration(configuration.subset("blueprints.neo4jha.conf"))); } private static Map<String,String> convertConfiguration(final Configuration configuration) { final Map<String,String> c = new HashMap<String,String>(); final Iterator<String> keys = configuration.getKeys(); while (keys.hasNext()) { final String k = keys.next(); c.put(k, configuration.getString(k)); } return c; } }