private boolean checkCondition()

in src/core-common/src/main/java/org/apache/kylin/common/persistence/RawResourceFilter.java [79:144]


    private boolean checkCondition(Condition condition, RawResource rawResource) {
        Object value;
        switch (condition.name) {
        case "metaKey":
            value = rawResource.getMetaKey();
            break;
        case "uuid":
            value = rawResource.getUuid();
            break;
        case "project":
            value = rawResource.getProject();
            break;
        case "mvcc":
            value = rawResource.getMvcc();
            break;
        case "ts":
            value = rawResource.getTs();
            break;
        case "reservedFiled1":
            value = rawResource.getReservedFiled1();
            break;
        case "reservedFiled2":
            value = rawResource.getReservedFiled2();
            break;
        case "reservedFiled3":
            value = rawResource.getReservedFiled3();
            break;
        case "id":
        case "content":
            throw new IllegalArgumentException("id & content field can't be used as filter condition");
        default:
            value = getCustomValue(rawResource, condition.name);
        }
        if (value != null) {
            switch (condition.getOp()) {
            case EQUAL:
                return Objects.equals(condition.values.get(0), value);
            case EQUAL_CASE_INSENSITIVE:
                assert value instanceof String
                        : "[" + condition.name + "] '" + value + "' is not String, can't compare case insensitive";
                return ((String) value).equalsIgnoreCase((String) condition.values.get(0));
            case LIKE_CASE_INSENSITIVE:
                assert value instanceof String
                        : "[" + condition.name + "] '" + value + "' is not String, can't compare like case insensitive";
                return StringUtils.containsIgnoreCase((String) value, (String) condition.values.get(0));
            case IN:
                return condition.values.contains(value);
            case GT:
                assert value instanceof Long;
                return (Long) value > ((Long) condition.values.get(0));
            case LT:
                assert value instanceof Long;
                return (Long) value < ((Long) condition.values.get(0));
            case LE:
                assert value instanceof Long;
                return (Long) value <= ((Long) condition.values.get(0));
            case GE:
                assert value instanceof Long;
                return (Long) value >= ((Long) condition.values.get(0));
            default:
                throw new UnsupportedOperationException("Operator not supported:" + condition.getOp());
            }
        }
        //Maybe rawResource is broken, just return false
        return false;
    }