private boolean hasSameProperties()

in hugegraph-core/src/main/java/org/apache/hugegraph/schema/builder/VertexLabelBuilder.java [163:205]


    private boolean hasSameProperties(VertexLabel existedVertexLabel) {
        HugeGraph graph = this.graph();

        Set<Id> existedProperties = existedVertexLabel.properties();
        if (this.properties.size() != existedProperties.size()) {
            return false;
        }
        for (String propertyName : this.properties) {
            PropertyKey propertyKey = graph.propertyKey(propertyName);
            if (!existedProperties.contains(propertyKey.id())) {
                return false;
            }
        }

        List<Id> existedPrimaryKeys = existedVertexLabel.primaryKeys();
        if (this.primaryKeys.size() != existedPrimaryKeys.size()) {
            return false;
        }
        for (String primaryKeyName : this.primaryKeys) {
            PropertyKey primaryKey = graph.propertyKey(primaryKeyName);
            if (!existedPrimaryKeys.contains(primaryKey.id())) {
                return false;
            }
        }

        Set<Id> existedNullableKeys = existedVertexLabel.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;
            }
        }

        // this.enableLabelIndex == null, it means true.
        if (this.enableLabelIndex == null || this.enableLabelIndex) {
            return existedVertexLabel.enableLabelIndex();
        } else { // this.enableLabelIndex is false
            return !existedVertexLabel.enableLabelIndex();
        }
    }