in hugegraph-core/src/main/java/org/apache/hugegraph/schema/builder/EdgeLabelBuilder.java [176:239]
private boolean hasSameProperties(EdgeLabel existedEdgeLabel) {
HugeGraph graph = this.graph();
Id sourceId = graph.vertexLabel(this.sourceLabel).id();
if (!existedEdgeLabel.sourceLabel().equals(sourceId)) {
return false;
}
Id targetId = graph.vertexLabel(this.targetLabel).id();
if (!existedEdgeLabel.targetLabel().equals(targetId)) {
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;
}