class CsvImporter implements Importer {

    @Override
    public void doImport() throws IOException
    {
        FileSystemAbstraction fs = outsideWorld.fileSystem();
        File storeDir = databaseConfig.get( GraphDatabaseSettings.database_path );
        File reportFile = new File( reportFileName );

        OutputStream badOutput = new BufferedOutputStream( fs.openAsOutputStream( reportFile, false ) );
        Collector badCollector = badCollector( badOutput, isIgnoringSomething() ? BadCollector.UNLIMITED_TOLERANCE : 0,
                collect( ignoreBadRelationships, ignoreDuplicateNodes, ignoreExtraColumns ) );

        Configuration configuration = new WrappedBatchImporterConfigurationForNeo4jAdmin( importConfiguration(
                null, false, databaseConfig, storeDir, highIO ) );

        // Extract the default time zone from the database configuration
        ZoneId dbTimeZone = databaseConfig.get( GraphDatabaseSettings.db_temporal_timezone );
        Supplier<ZoneId> defaultTimeZone = () -> dbTimeZone;

        CsvInput input = new CsvInput(
                nodeData( inputEncoding, nodesFiles ), defaultFormatNodeFileHeader( defaultTimeZone ),
                relationshipData( inputEncoding, relationshipsFiles ), defaultFormatRelationshipFileHeader( defaultTimeZone ),
                idType,
                new WrappedCsvInputConfigurationForNeo4jAdmin( csvConfiguration( args, false ) ),
                badCollector,
                new CsvInput.PrintingMonitor( outsideWorld.outStream() ) );

        ImportTool.doImport( outsideWorld.errorStream(), outsideWorld.errorStream(), outsideWorld.inStream(), DatabaseLayout.of( storeDir ),
                reportFile, fs, nodesFiles, relationshipsFiles, false, input, this.databaseConfig, badOutput, configuration, false );
    }

      CsvImporter( Args args, Config databaseConfig, OutsideWorld outsideWorld );

}