KNOX-2027 - Need a reverse order sort on a table based on a column. (#159)

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 1fea1f9..04e5320 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
@@ -21,6 +21,8 @@
 import java.util.Collections;
 import java.util.List;
 
+import javax.swing.SortOrder;
+
 import org.apache.knox.gateway.util.JsonUtils;
 
 
@@ -122,6 +124,10 @@
   }
 
   public KnoxShellTable sort(String colName) {
+    return sort(colName, SortOrder.ASCENDING);
+  }
+
+  public KnoxShellTable sort(String colName, SortOrder order) {
     KnoxShellTable table = new KnoxShellTable();
 
     Comparable<? extends Object> value;
@@ -131,7 +137,12 @@
       value = col.get(i);
       index.add(new RowIndex(value, i));
     }
-    Collections.sort(index);
+    if (SortOrder.ASCENDING.equals(order)) {
+      Collections.sort(index);
+    }
+    else {
+      Collections.sort(index, Collections.reverseOrder());
+    }
     table.headers = new ArrayList<String>(headers);
     for (RowIndex i : index) {
       table.rows.add(new ArrayList<Comparable<? extends Object>>(this.rows.get(i.index)));
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 3141afe..6b0c60c 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
@@ -34,6 +34,8 @@
 import java.sql.ResultSetMetaData;
 import java.sql.Statement;
 
+import javax.swing.SortOrder;
+
 import org.apache.commons.io.FileUtils;
 import org.easymock.IAnswer;
 import org.junit.Test;
@@ -194,6 +196,14 @@
     KnoxShellTable table2 = table.sort("Column A");
     assertEquals(table2.getRows().get(0).get(0), "123");
     assertEquals(table2.getRows().get(1).get(0), "789");
+
+    table2 = table.sort("Column A", SortOrder.DESCENDING);
+    assertEquals(table2.getRows().get(0).get(0), "789");
+    assertEquals(table2.getRows().get(1).get(0), "123");
+
+    table2 = table.sort("Column B", SortOrder.DESCENDING);
+    assertEquals(table2.getRows().get(0).get(1), "456");
+    assertEquals(table2.getRows().get(1).get(1), "012");
   }
 
   @Test