This is an automated email from the ASF dual-hosted git repository.
lmccay pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/knox.git
The following commit(s) were added to refs/heads/master by this push:
new b225050 KNOX-2308 - Add sortNumeric to KnoxShellTable for Cols that
are numeric but values are String (#300)
b225050 is described below
commit b22505022b17388c099e419185409a35455f1827
Author: lmccay <[email protected]>
AuthorDate: Thu Mar 26 10:57:56 2020 -0400
KNOX-2308 - Add sortNumeric to KnoxShellTable for Cols that are numeric but
values are String (#300)
Change-Id: I773e5ee9805347de36d5e4921a026f91b35c54b7
---
.../apache/knox/gateway/shell/table/KnoxShellTable.java | 16 +++++++++++++++-
.../knox/gateway/shell/table/KnoxShellTableTest.java | 14 ++++++++++++++
2 files changed, 29 insertions(+), 1 deletion(-)
diff --git
a/gateway-shell/src/main/java/org/apache/knox/gateway/shell/table/KnoxShellTable.java
b/gateway-shell/src/main/java/org/apache/knox/gateway/shell/table/KnoxShellTable.java
index 4c5368a..e630118 100644
---
a/gateway-shell/src/main/java/org/apache/knox/gateway/shell/table/KnoxShellTable.java
+++
b/gateway-shell/src/main/java/org/apache/knox/gateway/shell/table/KnoxShellTable.java
@@ -379,11 +379,25 @@ public class KnoxShellTable {
return sort(colName, SortOrder.ASCENDING);
}
+ public KnoxShellTable sortNumeric(String colName) {
+ double[] col = toDoubleArray(colName);
+ ArrayList<Comparable<? extends Object>> column = new ArrayList<>();
+ for(double v : col) {
+ column.add(v);
+ }
+ return sort(column, SortOrder.ASCENDING);
+ }
+
public KnoxShellTable sort(String colName, SortOrder order) {
+ List<Comparable<? extends Object>> col = values(colName);
+ return sort(col, order);
+ }
+
+ public KnoxShellTable sort(List<Comparable<? extends Object>> col,
+ SortOrder order) {
KnoxShellTable table = new KnoxShellTable();
Comparable<? extends Object> value;
- List<Comparable<? extends Object>> col = values(colName);
List<RowIndex> index = new ArrayList<>();
for (int i = 0; i < col.size(); i++) {
value = col.get(i);
diff --git
a/gateway-shell/src/test/java/org/apache/knox/gateway/shell/table/KnoxShellTableTest.java
b/gateway-shell/src/test/java/org/apache/knox/gateway/shell/table/KnoxShellTableTest.java
index 5644924..676bef6 100644
---
a/gateway-shell/src/test/java/org/apache/knox/gateway/shell/table/KnoxShellTableTest.java
+++
b/gateway-shell/src/test/java/org/apache/knox/gateway/shell/table/KnoxShellTableTest.java
@@ -284,6 +284,20 @@ public class KnoxShellTableTest {
}
@Test
+ public void testSortStringValuesNumerically() throws IOException {
+ KnoxShellTable table = new KnoxShellTable();
+
+ table.header("Column A").header("Column B").header("Column C");
+
+ table.row().value("2").value("012").value("844444444");
+ table.row().value("10").value("456").value("344444444");
+
+ KnoxShellTable table2 = table.sortNumeric("Column A");
+ assertEquals(table2.getRows().get(0).get(0), "2");
+ assertEquals(table2.getRows().get(1).get(0), "10");
+ }
+
+ @Test
@SuppressWarnings({ "rawtypes", "unchecked" })
public void testCells() throws IOException {
KnoxShellTable table = new KnoxShellTable();