in neptune-export/src/main/java/com/amazonaws/services/neptune/propertygraph/ExportStats.java [99:161]
public void addTo(ObjectNode exportNode, GraphSchema graphSchema) {
ObjectNode statsNode = JsonNodeFactory.instance.objectNode();
exportNode.set("stats", statsNode);
statsNode.put("nodes", nodeStats.values().stream().map(LabelStats::count).reduce(0L, Long::sum));
statsNode.put("edges", edgeStats.values().stream().map(LabelStats::count).reduce(0L, Long::sum));
statsNode.put("properties", getNumberOfProperties(graphSchema));
ObjectNode detailsNode = JsonNodeFactory.instance.objectNode();
statsNode.set("details", detailsNode);
ArrayNode nodesArrayNode = JsonNodeFactory.instance.arrayNode();
detailsNode.set("nodes", nodesArrayNode);
GraphElementSchemas nodeSchemas = graphSchema.graphElementSchemasFor(GraphElementType.nodes);
for (Map.Entry<Label, LabelStats> entry : nodeStats.entrySet()) {
Label label = entry.getKey();
LabelStats labelStats = entry.getValue();
LabelSchema labelSchema = nodeSchemas.getSchemaFor(label);
ObjectNode nodeNode = JsonNodeFactory.instance.objectNode();
nodesArrayNode.add(nodeNode);
nodeNode.put("label", label.fullyQualifiedLabel());
nodeNode.put("count", labelStats.count());
ArrayNode propertiesArray = JsonNodeFactory.instance.arrayNode();
for (PropertySchemaStats stats : labelSchema.propertySchemaStats()) {
ObjectNode propertyNode = JsonNodeFactory.instance.objectNode();
propertyNode.put("name", stats.property().toString());
propertyNode.put("count", stats.observationCount());
propertiesArray.add(propertyNode);
}
nodeNode.set("properties", propertiesArray);
}
ArrayNode edgesArrayNode = JsonNodeFactory.instance.arrayNode();
detailsNode.set("edges", edgesArrayNode);
GraphElementSchemas edgeSchemas = graphSchema.graphElementSchemasFor(GraphElementType.edges);
for (Map.Entry<Label, LabelStats> entry : edgeStats.entrySet()) {
Label label = entry.getKey();
LabelStats labelStats = entry.getValue();
LabelSchema labelSchema = edgeSchemas.getSchemaFor(label);
ObjectNode edgeNode = JsonNodeFactory.instance.objectNode();
edgesArrayNode.add(edgeNode);
edgeNode.put("label", label.fullyQualifiedLabel());
edgeNode.put("count", labelStats.count());
ArrayNode propertiesArray = JsonNodeFactory.instance.arrayNode();
for (PropertySchemaStats stats : labelSchema.propertySchemaStats()) {
ObjectNode propertyNode = JsonNodeFactory.instance.objectNode();
propertyNode.put("name", stats.property().toString());
propertyNode.put("count", stats.observationCount());
propertiesArray.add(propertyNode);
}
edgeNode.set("properties", propertiesArray);
}
}