private List mergeSubRange()

in tablestore/src/main/java/com/alicloud/openservices/tablestore/ecosystem/TablestoreSplit.java [638:686]


    private List<Range> mergeSubRange(List<Range> range1, Range subRange, PrimaryKey begin, PrimaryKey end) {
        List<Range> retRange = new ArrayList<Range>();
        for (Range range : range1) {
            LOGGER.info("rangeBegin: {}, rangeEnd: {}, rangeEqual: {}, subRangeBegin: {}, subRangeEnd: {}, subRangeEqual: {}",
                    range.begin, range.end, range.equal, subRange.begin, subRange.end, subRange.equal);
            if (range.equal != null) {
                return range1;
            } else if (subRange.equal != null) {
                List<Range> rangeList = new ArrayList<Range>();
                rangeList.add(subRange);
                return rangeList;
            } else {
                PrimaryKeyColumn pkcBegin = range.begin;
                PrimaryKeyColumn pkcEnd = range.end;

                if (subRange.begin.getName().equals(pkcBegin.getName())) {
                    if (pkcEnd.getValue().compareTo(subRange.begin.getValue()) < 0 ||
                            pkcBegin.getValue().compareTo(subRange.end.getValue()) > 0) {
                        continue;
                    }
                    if (pkcBegin.getValue().compareTo(subRange.begin.getValue()) > 0
                            && pkcBegin.getValue().compareTo(subRange.end.getValue()) < 0
                            && pkcEnd.getValue().compareTo(subRange.end.getValue()) > 0) {
                        range.setEnd(subRange.end);
                        range.setRightOpen(subRange.isRightOpen);
                    } else if (pkcBegin.getValue().compareTo(subRange.begin.getValue()) < 0
                            && pkcEnd.getValue().compareTo(subRange.begin.getValue()) > 0) {
                        if (pkcEnd.getValue().compareTo(subRange.end.getValue()) > 0) {
                            range.setEnd(subRange.end);
                            range.setRightOpen(subRange.isRightOpen);
                            range.setBegin(subRange.begin);
                        }
                        if (pkcEnd.getValue().compareTo(subRange.end.getValue()) <= 0) {
                            range.setBegin(subRange.begin);
                        }
                    }

                    retRange.add(range);
                   /* else if (pkcBegin.getValue().compareTo(subRange.end.getValue()) == 0) {

                    }*/
                } else {
                    return range1;
                }
            }
        }
        return retRange;

    }