public static EdgeLabel fromMap()

in hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/schema/EdgeLabel.java [327:420]


    public static EdgeLabel fromMap(Map<String, Object> map, HugeGraph graph) {
        Id id = IdGenerator.of((int) map.get(EdgeLabel.P.ID));
        String name = (String) map.get(EdgeLabel.P.NAME);
        EdgeLabel edgeLabel = new EdgeLabel(graph, id, name);
        for (Map.Entry<String, Object> entry : map.entrySet()) {
            switch (entry.getKey()) {
                case P.ID:
                case P.NAME:
                    break;
                case P.STATUS:
                    edgeLabel.status(
                        SchemaStatus.valueOf(((String) entry.getValue()).toUpperCase()));
                    break;
                case P.USERDATA:
                    edgeLabel.userdata(new Userdata((Map<String, Object>) entry.getValue()));
                    break;
                case P.PROPERTIES:
                    Set<Id> ids = ((List<Integer>) entry.getValue()).stream().map(
                            IdGenerator::of).collect(Collectors.toSet());
                    edgeLabel.properties(ids);
                    break;
                case P.NULLABLE_KEYS:
                    ids = ((List<Integer>) entry.getValue()).stream().map(
                            IdGenerator::of).collect(Collectors.toSet());
                    edgeLabel.nullableKeys(ids);
                    break;
                case P.INDEX_LABELS:
                    ids = ((List<Integer>) entry.getValue()).stream().map(
                            IdGenerator::of).collect(Collectors.toSet());
                    edgeLabel.addIndexLabels(ids.toArray(new Id[0]));
                    break;
                case P.ENABLE_LABEL_INDEX:
                    boolean enableLabelIndex = (Boolean) entry.getValue();
                    edgeLabel.enableLabelIndex(enableLabelIndex);
                    break;
                case P.TTL:
                    long ttl = Long.parseLong((String) entry.getValue());
                    edgeLabel.ttl(ttl);
                    break;
                case P.TT_START_TIME:
                    long ttlStartTime =
                            Long.parseLong((String) entry.getValue());
                    edgeLabel.ttlStartTime(IdGenerator.of(ttlStartTime));
                    break;
                case P.LINKS:
                    // TODO: serialize and deserialize
                    List<Map> list = (List<Map>) entry.getValue();
                    for (Map m : list) {
                        for (Object key : m.keySet()) {
                            Id sid = IdGenerator.of(Long.parseLong((String) key));
                            Id tid = IdGenerator.of(Long.parseLong(String.valueOf(m.get(key))));
                            edgeLabel.links(Pair.of(sid, tid));
                        }
                    }
                    break;
                case P.SOURCE_LABEL:
                    long sourceLabel =
                            Long.parseLong((String) entry.getValue());
                    edgeLabel.sourceLabel(IdGenerator.of(sourceLabel));
                    break;
                case P.TARGET_LABEL:
                    long targetLabel =
                            Long.parseLong((String) entry.getValue());
                    edgeLabel.targetLabel(IdGenerator.of(targetLabel));
                    break;
                case P.FATHER_ID:
                    long fatherId =
                            Long.parseLong((String) entry.getValue());
                    edgeLabel.fatherId(IdGenerator.of(fatherId));
                    break;
                case P.EDGELABEL_TYPE:
                    EdgeLabelType edgeLabelType =
                            EdgeLabelType.valueOf(
                                    ((String) entry.getValue()).toUpperCase());
                    edgeLabel.edgeLabelType(edgeLabelType);
                    break;
                case P.FREQUENCY:
                    Frequency frequency =
                            Frequency.valueOf(((String) entry.getValue()).toUpperCase());
                    edgeLabel.frequency(frequency);
                    break;
                case P.SORT_KEYS:
                    ids = ((List<Integer>) entry.getValue()).stream().map(
                            IdGenerator::of).collect(Collectors.toSet());
                    edgeLabel.sortKeys(ids.toArray(new Id[0]));
                    break;
                default:
                    throw new AssertionError(String.format(
                            "Invalid key '%s' for edge label",
                            entry.getKey()));
            }
        }
        return edgeLabel;
    }