package org.serinus.graph; import javax.annotation.PostConstruct; import javax.ejb.Startup; import javax.enterprise.context.ApplicationScoped; import javax.inject.Inject; import org.jboss.logging.Logger; import org.jboss.seam.solder.logging.Category; import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.Node; import org.neo4j.graphdb.index.Index; import org.neo4j.graphdb.index.IndexManager; import org.neo4j.helpers.collection.MapUtil; import org.neo4j.kernel.EmbeddedGraphDatabase; import org.serinus.graph.interceptor.GraphTransaction; @ApplicationScoped public class GraphManager { @Inject @Category("graphdb") private Logger logger; private GraphDatabaseService graphDatabaseService; private IndexManager indexManager; public void initializeGraphDb() { String repositoryJboss = System.getProperty("jboss.server.data.dir"); logger.info("Graph database in " + repositoryJboss); if (repositoryJboss != null) { graphDatabaseService = new EmbeddedGraphDatabase(repositoryJboss + "/serinus-graph"); logger.info("Graph database in " + repositoryJboss); indexManager = graphDatabaseService.index(); } } public void shutdownGraphDb() { graphDatabaseService.shutdown(); } public GraphDatabaseService getGraphDatabaseService() { return graphDatabaseService; } public void setGraphDatabaseService( GraphDatabaseService graphDatabaseService) { this.graphDatabaseService = graphDatabaseService; } public Index<Node> getIndexPerson() { logger.debug("Getting person index"); return indexManager.forNodes("person"); } public Index<Node> getIndexPersonName() { logger.debug("Getting person index"); return indexManager.forNodes("personname"); } public Index<Node> getIndexTopic() { logger.debug("Getting topic index"); return indexManager.forNodes("topic"); } public Index<Node> getIndexSerinus() { logger.debug("Getting serinus full-text index"); return indexManager.forNodes("serinus", MapUtil.stringMap( IndexManager.PROVIDER, "lucene", "type", "fulltext")); } }