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