public void run()

in neptune-export/src/main/java/com/amazonaws/services/neptune/CreatePropertyGraphExportConfig.java [74:150]


    public void run() {

        try {
            Timer.timedActivity("creating property graph config", (CheckedActivity.Runnable) () -> {
                try (Cluster cluster = cloneStrategy.cloneCluster(connection.config(), concurrency.config(sampling.isFullScan()), featureToggles())) {

                    if (sampling.isFullScan()) {

                        Directories directories = target.createDirectories(DirectoryStructure.Config);
                        JsonResource<GraphSchema> configFileResource = directories.configFileResource();

                        GraphSchema graphSchema = new GraphSchema();
                        ExportStats stats = new ExportStats();

                        PropertyGraphTargetConfig targetConfig = target.config(directories, new PrinterOptionsModule().config());

                        Collection<ExportSpecification> exportSpecifications = scope.exportSpecifications(
                                graphSchema,
                                gremlinFilters.filters(),
                                stats,
                                featureToggles());

                        try (NeptuneGremlinClient client = NeptuneGremlinClient.create(cluster, serialization.config());
                             GraphTraversalSource g = client.newTraversalSource()) {

                            ExportPropertyGraphJob exportJob = new ExportPropertyGraphJob(
                                    exportSpecifications,
                                    graphSchema,
                                    g,
                                    new PropertyGraphRangeModule().config(),
                                    gremlinFilters.filters(),
                                    cluster.concurrencyConfig(),
                                    targetConfig, featureToggles());

                            graphSchema = exportJob.execute();

                            configFileResource.save(graphSchema);
                        }

                        directories.writeRootDirectoryPathAsMessage(target.description(), target);
                        configFileResource.writeResourcePathAsMessage(target);

                        System.err.println();
                        System.err.println(stats.formatStats(graphSchema));

                        directories.writeRootDirectoryPathAsReturnValue(target);
                        onExportComplete(directories, stats, cluster, graphSchema);

                    } else {

                        ExportStats stats = new ExportStats();
                        Directories directories = target.createDirectories(DirectoryStructure.Config);
                        JsonResource<GraphSchema> configFileResource = directories.configFileResource();
                        Collection<ExportSpecification> exportSpecifications = scope.exportSpecifications(
                                stats,
                                gremlinFilters.filters(),
                                featureToggles());

                        try (NeptuneGremlinClient client = NeptuneGremlinClient.create(cluster, serialization.config());
                             GraphTraversalSource g = client.newTraversalSource()) {

                            CreateGraphSchemaCommand createGraphSchemaCommand = sampling.createSchemaCommand(exportSpecifications, g);
                            GraphSchema graphSchema = createGraphSchemaCommand.execute();

                            configFileResource.save(graphSchema);
                            configFileResource.writeResourcePathAsMessage(target);
                        }

                        directories.writeConfigFilePathAsReturnValue(target);
                        onExportComplete(directories, stats, cluster);
                    }
                }
            });
        } catch (Exception e) {
            handleException(e);
        }
    }