public static GraphElementSchemas fromJson()

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