Package org.hibernate.ogm.datastore.neo4j.impl

Source Code of org.hibernate.ogm.datastore.neo4j.impl.Neo4jDatastoreProvider

/*
* Hibernate OGM, Domain model persistence for NoSQL datastores
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.ogm.datastore.neo4j.impl;

import java.util.Map;

import org.hibernate.boot.registry.classloading.spi.ClassLoaderService;
import org.hibernate.ogm.datastore.neo4j.Neo4jDialect;
import org.hibernate.ogm.datastore.neo4j.Neo4jProperties;
import org.hibernate.ogm.datastore.neo4j.dialect.impl.Neo4jSequenceGenerator;
import org.hibernate.ogm.datastore.neo4j.spi.GraphDatabaseServiceFactory;
import org.hibernate.ogm.datastore.spi.DatastoreProvider;
import org.hibernate.ogm.dialect.GridDialect;
import org.hibernate.ogm.service.impl.LuceneBasedQueryParserService;
import org.hibernate.ogm.service.impl.QueryParserService;
import org.hibernate.ogm.util.configurationreader.impl.ConfigurationPropertyReader;
import org.hibernate.service.spi.Configurable;
import org.hibernate.service.spi.ServiceRegistryAwareService;
import org.hibernate.service.spi.ServiceRegistryImplementor;
import org.hibernate.service.spi.Startable;
import org.hibernate.service.spi.Stoppable;
import org.neo4j.graphdb.GraphDatabaseService;

/**
* Provides access to the Neo4j system.
*
* @author Davide D'Alto
*/
public class Neo4jDatastoreProvider implements DatastoreProvider, Startable, Stoppable, Configurable, ServiceRegistryAwareService {

  private static final int DEFAULT_SEQUENCE_QUERY_CACHE_MAX_SIZE = 128;

  private GraphDatabaseService neo4jDb;

  private GraphDatabaseServiceFactory graphDbFactory;

  private ServiceRegistryImplementor registry;

  private Neo4jSequenceGenerator sequenceGenerator;

  private Integer sequenceCacheMaxSize;

  @Override
  public void injectServices(ServiceRegistryImplementor serviceRegistry) {
    this.registry = serviceRegistry;
  }

  @Override
  public Class<? extends QueryParserService> getDefaultQueryParserServiceType() {
    return LuceneBasedQueryParserService.class;
  }

  @Override
  public void configure(Map cfg) {
    graphDbFactory = new Neo4jGraphDatabaseServiceFactoryProvider().load( cfg, registry.getService( ClassLoaderService.class ) );
    sequenceCacheMaxSize = new ConfigurationPropertyReader( cfg )
      .property( Neo4jProperties.SEQUENCE_QUERY_CACHE_MAX_SIZE, int.class )
      .withDefault( DEFAULT_SEQUENCE_QUERY_CACHE_MAX_SIZE )
      .getValue();
  }

  @Override
  public void stop() {
    neo4jDb.shutdown();
  }

  @Override
  public void start() {
    this.neo4jDb = graphDbFactory.create();
    this.sequenceGenerator = new Neo4jSequenceGenerator( neo4jDb, sequenceCacheMaxSize );
    this.graphDbFactory = null;
    this.sequenceCacheMaxSize = null;
  }

  @Override
  public Class<? extends GridDialect> getDefaultDialect() {
    return Neo4jDialect.class;
  }

  public GraphDatabaseService getDataBase() {
    return neo4jDb;
  }

  public Neo4jSequenceGenerator getSequenceGenerator() {
    return this.sequenceGenerator;
  }

}
TOP

Related Classes of org.hibernate.ogm.datastore.neo4j.impl.Neo4jDatastoreProvider

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.