private boolean hasSameProperties()

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