public void run()

in src/main/java/com/amazonaws/services/neptune/CreatePropertyGraphExportConfig.java [74:160]


    public void run() {

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

                    if (sampling.isFullScan()) {

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

                        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(),
                                    getMaxFileDescriptorCount()
                            );

                            graphSchema = exportJob.execute();

                            configFileResource.save(graphSchema, false);
                            statsFileResource.save(stats, 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, Boolean> configFileResource = directories.configFileResource();
                        JsonResource<ExportStats, GraphSchema> statsFileResource = directories.statsFileResource();
                        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, false);
                            statsFileResource.save(stats, graphSchema);
                            configFileResource.writeResourcePathAsMessage(target);
                        }

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