in hugegraph-server/hugegraph-core/src/main/java/org/apache/hugegraph/schema/builder/EdgeLabelBuilder.java [231:292]
private boolean hasSameProperties(EdgeLabel existedEdgeLabel) {
HugeGraph graph = this.graph();
for (Pair<Id, Id> link : existedEdgeLabel.links()) {
String sourceName = graph.vertexLabel(link.getLeft()).name();
String targetName = graph.vertexLabel(link.getRight()).name();
if (!this.links.contains(Pair.of(sourceName, targetName))) {
return false;
}
}
if ((this.frequency == Frequency.DEFAULT &&
existedEdgeLabel.frequency() != Frequency.SINGLE) ||
(this.frequency != Frequency.DEFAULT &&
this.frequency != existedEdgeLabel.frequency())) {
return false;
}
// this.enableLabelIndex == null, it means true.
if (this.enableLabelIndex == null || this.enableLabelIndex) {
if (!existedEdgeLabel.enableLabelIndex()) {
return false;
}
} else { // this false
if (existedEdgeLabel.enableLabelIndex()) {
return false;
}
}
Set<Id> existedProperties = existedEdgeLabel.properties();
if (this.properties.size() != existedProperties.size()) {
return false;
}
for (String key : this.properties) {
PropertyKey propertyKey = graph.propertyKey(key);
if (!existedProperties.contains(propertyKey.id())) {
return false;
}
}
List<Id> existedSortKeys = existedEdgeLabel.sortKeys();
if (this.sortKeys.size() != existedSortKeys.size()) {
return false;
}
for (String key : this.sortKeys) {
PropertyKey propertyKey = graph.propertyKey(key);
if (!existedSortKeys.contains(propertyKey.id())) {
return false;
}
}
Set<Id> existedNullableKeys = existedEdgeLabel.nullableKeys();
if (this.nullableKeys.size() != existedNullableKeys.size()) {
return false;
}
for (String nullableKeyName : this.nullableKeys) {
PropertyKey nullableKey = graph.propertyKey(nullableKeyName);
if (!existedNullableKeys.contains(nullableKey.id())) {
return false;
}
}
return true;
}