in src/main/java/com/amazonaws/services/neptune/propertygraph/schema/GraphElementSchemas.java [27:84]
public static GraphElementSchemas fromJson(ArrayNode arrayNode) {
GraphElementSchemas graphElementSchemas = new GraphElementSchemas();
for (JsonNode node : arrayNode) {
Label label = Label.fromJson(node.path("label"));
Collection<String> filenames = new ArrayList<>();
if (node.has("files")) {
ArrayNode filenamesArray = (ArrayNode) node.path("files");
for (JsonNode jsonNode : filenamesArray) {
filenames.add(jsonNode.textValue());
}
}
graphElementSchemas.addLabelSchema(new LabelSchema(label), filenames);
if (node.has("properties")) {
ArrayNode propertiesArray = (ArrayNode) node.path("properties");
for (JsonNode propertyNode : propertiesArray) {
if (propertyNode.isObject()) {
String key = propertyNode.path("property").textValue();
DataType dataType = propertyNode.has("dataType") ?
Enum.valueOf(DataType.class, propertyNode.path("dataType").textValue()) :
DataType.None;
boolean isMultiValue = propertyNode.has("isMultiValue") &&
propertyNode.path("isMultiValue").booleanValue();
boolean isNullable = propertyNode.has("isNullable") &&
propertyNode.path("isNullable").booleanValue();
EnumSet<DataType> allTypes = EnumSet.noneOf(DataType.class);
if (propertyNode.has("allTypes") ){
ArrayNode allTypesNode = (ArrayNode) propertyNode.path("allTypes");
for (JsonNode jsonNode : allTypesNode) {
allTypes.add(DataType.valueOf(jsonNode.textValue()));
}
}
graphElementSchemas.getSchemaFor(label).put(
key,
new PropertySchema(key, isNullable, dataType, isMultiValue, allTypes));
} else {
String property = propertyNode.textValue();
graphElementSchemas.getSchemaFor(label).put(
property,
new PropertySchema(property, false, DataType.None, false, EnumSet.noneOf(DataType.class)));
}
}
}
}
return graphElementSchemas;
}