public BatchingNeoStore(
      FileSystemAbstraction fileSystem,
      String storeDir,
      Configuration config,
      Monitor writeMonitor,
      Logging logging,
      WriterFactory writerFactory,
      Monitors monitors) {
    this.config = config;
    this.writeMonitor = writeMonitor;
    this.writerFactory = writerFactory;
    this.monitors = monitors;
    this.fileSystem = life.add(new ChannelReusingFileSystemAbstraction(fileSystem));

    this.logger = logging.getMessagesLog(getClass());
    this.neo4jConfig =
        configForStoreDir(
            new Config(
                stringMap(dense_node_threshold.name(), valueOf(config.denseNodeThreshold())),
                GraphDatabaseSettings.class),
            new File(storeDir));

    this.neoStore = newBatchWritingNeoStore();
    this.propertyKeyRepository =
        new BatchingPropertyKeyTokenRepository(neoStore.getPropertyKeyTokenStore());
    this.labelRepository = new BatchingLabelTokenRepository(neoStore.getLabelTokenStore());
    this.relationshipTypeRepository =
        new BatchingRelationshipTypeTokenRepository(neoStore.getRelationshipTypeTokenStore());
    life.start();
  }
  private void shouldImportCsvData0(BatchingPageCache.WriterFactory delegateWriterFactory)
      throws Exception {
    // GIVEN
    Configuration config =
        new Configuration.Default() {
          @Override
          public int denseNodeThreshold() {
            return 30;
          }
        };
    BatchImporter inserter =
        new ParallelBatchImporter(
            directory.getAbsolutePath(),
            new DefaultFileSystemAbstraction(),
            config,
            new DetailedExecutionMonitor(),
            new IoQueue(config.numberOfIoThreads(), delegateWriterFactory));

    // WHEN
    int nodeCount = 100_000;
    int relationshipCount = nodeCount * 10;
    inserter.doImport(
        nodes(nodeCount), relationships(relationshipCount, nodeCount), IdMappers.actualIds());
    inserter.shutdown();

    // THEN
    GraphDatabaseService db =
        new GraphDatabaseFactory().newEmbeddedDatabase(directory.getAbsolutePath());
    try (Transaction tx = db.beginTx()) {
      verifyData(nodeCount, db);

      tx.success();
    } finally {
      db.shutdown();
    }
  }
 private BatchingPageCache batchingPageCache(Mode mode) {
   return new BatchingPageCache(
       fileSystem, config.fileChannelBufferSize(), writerFactory, writeMonitor, mode);
 }
 @Override
 public int fileChannelBufferSize() {
   return defaults.fileChannelBufferSize();
 }
 @Override
 public int batchSize() {
   return defaults.batchSize();
 }
 @Override
 public int workAheadSize() {
   return defaults.workAheadSize();
 }