public boolean checkIfMatchTheFilter()

in tablestore/src/main/java/com/alicloud/openservices/tablestore/ecosystem/TablestoreSplit.java [727:795]


    public boolean checkIfMatchTheFilter(Filter filter) {
        if (filter.isNested()) {
            if (filter.getLogicOperator() == Filter.LogicOperator.AND) {
                for (Filter subFilter : filter.getSubFilters()) {
                    if (!checkIfMatchTheFilter(subFilter)) {
                        return false;
                    }
                }
                return true;
            } else if (filter.getLogicOperator() == Filter.LogicOperator.OR) {
                for (Filter subFilter : filter.getSubFilters()) {
                    if (checkIfMatchTheFilter(subFilter)) {
                        return true;
                    }
                }
                return false;
            } else {
                //
                return true;
            }
        } else {
            PrimaryKey pk = kvSplit.getLowerBound();
            if (filter.getCompareOperator() == Filter.CompareOperator.NOT_EQUAL) {
                return true;
            } else if (Filter.CompareOperator.EQUAL == filter.getCompareOperator()) {
                if (!filter.getColumnName().equals(pk.getPrimaryKeyColumn(0).getName())) {
                    return true;
                }
                try {
                    return (kvSplit.getLowerBound().getPrimaryKeyColumn(0).getValue().isInfMin() || kvSplit.getLowerBound().getPrimaryKeyColumn(0).getValue().toColumnValue().compareTo(filter.getColumnValue()) <= 0)
                            && (kvSplit.getUpperBound().getPrimaryKeyColumn(0).getValue().isInfMax() || kvSplit.getUpperBound().getPrimaryKeyColumn(0).getValue().toColumnValue().compareTo(filter.getColumnValue()) > 0);
                } catch (IOException e) {
                    e.printStackTrace();
                    return true;
                }
            } else if (Filter.CompareOperator.EMPTY_FILTER == filter.getCompareOperator()) {
                return true;
            }

            if (filter.getColumnName().equals(pk.getPrimaryKeyColumn(0).getName())) {
                if (filter.getCompareOperator() == Filter.CompareOperator.GREATER_THAN ||
                        filter.getCompareOperator() == Filter.CompareOperator.GREATER_EQUAL) {
                    try {

                        return (kvSplit.getUpperBound().getPrimaryKeyColumn(0).getValue().isInfMax()
                                || kvSplit.getUpperBound().getPrimaryKeyColumn(0).getValue().toColumnValue().compareTo(filter.getColumnValue()) > 0);
                    } catch (IOException e) {
                        return true;
                    }

                } else if (filter.getCompareOperator() == Filter.CompareOperator.LESS_THAN ||
                        filter.getCompareOperator() == Filter.CompareOperator.LESS_EQUAL) {
                    try {
                        if (filter.getCompareOperator() == Filter.CompareOperator.LESS_THAN) {
                            return (kvSplit.getLowerBound().getPrimaryKeyColumn(0).getValue().isInfMin()
                                    || kvSplit.getLowerBound().getPrimaryKeyColumn(0).getValue().toColumnValue().compareTo(filter.getColumnValue()) < 0);
                        } else {
                            return (kvSplit.getLowerBound().getPrimaryKeyColumn(0).getValue().isInfMin()
                                    || kvSplit.getLowerBound().getPrimaryKeyColumn(0).getValue().toColumnValue().compareTo(filter.getColumnValue()) <= 0);
                        }

                    } catch (IOException e) {
                        return true;
                    }
                }
            }
            return true;
        }
    }