private boolean hasSameProperties()

in hugegraph-core/src/main/java/org/apache/hugegraph/schema/builder/IndexLabelBuilder.java [130:173]


    private boolean hasSameProperties(IndexLabel existedIndexLabel) {
        // baseType is null, it means HugeType.SYS_SCHEMA
        if ((this.baseType == null &&
             existedIndexLabel.baseType() != HugeType.SYS_SCHEMA) ||
            (this.baseType != null &&
             this.baseType != existedIndexLabel.baseType())) {
            return false;
        }

        SchemaLabel schemaLabel = this.loadBaseLabel();
        if (!schemaLabel.id().equals(existedIndexLabel.baseValue())) {
            return false;
        }

        if (this.indexType == null) {
            // The default index type is SECONDARY
            if (existedIndexLabel.indexType() != IndexType.SECONDARY) {
                return false;
            }
        } else {
            // NOTE: IndexType.RANGE.isRange() return false
            if (this.indexType == IndexType.RANGE) {
                // existedIndexLabel index type format: RANGE_INT, RANGE_LONG
                if (!existedIndexLabel.indexType().isRange()) {
                    return false;
                }
            } else if (this.indexType != existedIndexLabel.indexType()) {
                return false;
            }
        }

        List<Id> existedIndexFieldIds = existedIndexLabel.indexFields();
        if (this.indexFields.size() != existedIndexFieldIds.size()) {
            return false;
        }
        for (String field : this.indexFields) {
            PropertyKey propertyKey = graph().propertyKey(field);
            if (!existedIndexFieldIds.contains(propertyKey.id())) {
                return false;
            }
        }
        // all properties are same, return true.
        return true;
    }