Repository: kylin Updated Branches: refs/heads/master 59cb57ca6 -> b109948e0
minor, add function for ranges Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/b109948e Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/b109948e Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/b109948e Branch: refs/heads/master Commit: b109948e0601c3026afac60c566c84bfa5d2c5db Parents: 59cb57c Author: lidongsjtu <[email protected]> Authored: Tue Apr 12 22:39:44 2016 +0800 Committer: lidongsjtu <[email protected]> Committed: Wed Apr 13 15:54:27 2016 +0800 ---------------------------------------------------------------------- .../org/apache/kylin/common/util/RangeUtil.java | 24 ++++++++++++++++++++ .../apache/kylin/common/util/RangeUtilTest.java | 9 ++++++++ 2 files changed, 33 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/b109948e/core-common/src/main/java/org/apache/kylin/common/util/RangeUtil.java ---------------------------------------------------------------------- diff --git a/core-common/src/main/java/org/apache/kylin/common/util/RangeUtil.java b/core-common/src/main/java/org/apache/kylin/common/util/RangeUtil.java index 82ad34a..96c6d9b 100644 --- a/core-common/src/main/java/org/apache/kylin/common/util/RangeUtil.java +++ b/core-common/src/main/java/org/apache/kylin/common/util/RangeUtil.java @@ -18,6 +18,8 @@ package org.apache.kylin.common.util; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.NavigableMap; @@ -195,4 +197,26 @@ public class RangeUtil { } return sb.toString(); } + + public static List<Range<Integer>> buildRanges(int[] values, boolean needSort) { + ArrayList ranges = Lists.newArrayList(); + + if (values == null || values.length == 0) + return ranges; + + if (needSort) { + Arrays.sort(values); + } + int lastBegin = values[0]; + int lastEnd = lastBegin; + for (int index = 1; index < values.length; index++) { + if (values[index] - lastEnd != 1) { + ranges.add(Ranges.closed(lastBegin, lastEnd)); + lastBegin = values[index]; + } + lastEnd = values[index]; + } + ranges.add(Ranges.closed(lastBegin, lastEnd)); + return ranges; + } } http://git-wip-us.apache.org/repos/asf/kylin/blob/b109948e/core-common/src/test/java/org/apache/kylin/common/util/RangeUtilTest.java ---------------------------------------------------------------------- diff --git a/core-common/src/test/java/org/apache/kylin/common/util/RangeUtilTest.java b/core-common/src/test/java/org/apache/kylin/common/util/RangeUtilTest.java index 1601fe7..bc0937e 100644 --- a/core-common/src/test/java/org/apache/kylin/common/util/RangeUtilTest.java +++ b/core-common/src/test/java/org/apache/kylin/common/util/RangeUtilTest.java @@ -18,6 +18,7 @@ package org.apache.kylin.common.util; +import java.util.List; import java.util.Map; import java.util.NavigableMap; import java.util.TreeMap; @@ -25,6 +26,7 @@ import java.util.TreeMap; import org.junit.Assert; import org.junit.Test; +import com.google.common.collect.Range; import com.google.common.collect.Ranges; /** @@ -63,4 +65,11 @@ public class RangeUtilTest { subMap = RangeUtil.filter(map, Ranges.lessThan(0)); Assert.assertEquals(subMap.size(), 0); } + + @Test + public void testBuildRanges() { + int[] test1 = { 1, 2, 3, 5, 7, 8, 10, 4 }; + List<Range<Integer>> ranges = RangeUtil.buildRanges(test1, true); + Assert.assertEquals(3, ranges.size()); + } }
