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);
}
}