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());
+    }
 }

Reply via email to