KNOX-2024 - KnoxShellTable - Case Insensitive Operations with Col Names (#160)

diff --git a/gateway-shell/src/main/java/org/apache/knox/gateway/shell/table/KnoxShellTableFilter.java b/gateway-shell/src/main/java/org/apache/knox/gateway/shell/table/KnoxShellTableFilter.java
index 1dddee3..32bf9db 100644
--- a/gateway-shell/src/main/java/org/apache/knox/gateway/shell/table/KnoxShellTableFilter.java
+++ b/gateway-shell/src/main/java/org/apache/knox/gateway/shell/table/KnoxShellTableFilter.java
@@ -24,15 +24,23 @@
 public class KnoxShellTableFilter {
 
   private KnoxShellTable tableToFilter;
-  private int index;
+  private int index = -1;
 
   public KnoxShellTableFilter table(KnoxShellTable table) {
     this.tableToFilter = table;
     return this;
   }
 
-  public KnoxShellTableFilter name(String name) {
-    index = tableToFilter == null ? -1 : tableToFilter.headers.indexOf(name);
+  public KnoxShellTableFilter name(String name) throws KnoxShellTableFilterException {
+    for (int i = 0; i < tableToFilter.headers.size(); i++) {
+      if (tableToFilter.headers.get(i).equalsIgnoreCase(name)) {
+        index = i;
+        break;
+      }
+    }
+    if (index == -1) {
+        throw new KnoxShellTableFilterException("Column name not found");
+    }
     return this;
   }
 
diff --git a/gateway-shell/src/main/java/org/apache/knox/gateway/shell/table/KnoxShellTableFilterException.java b/gateway-shell/src/main/java/org/apache/knox/gateway/shell/table/KnoxShellTableFilterException.java
index 1966b8a..27c2a16 100644
--- a/gateway-shell/src/main/java/org/apache/knox/gateway/shell/table/KnoxShellTableFilterException.java
+++ b/gateway-shell/src/main/java/org/apache/knox/gateway/shell/table/KnoxShellTableFilterException.java
@@ -23,4 +23,7 @@
     super("Error while filtering KnoxShellTable: " + e.getMessage());
   }
 
+  KnoxShellTableFilterException(String s) {
+      super("Error while filtering KnoxShellTable: " + s);
+    }
 }
diff --git a/gateway-shell/src/test/java/org/apache/knox/gateway/shell/table/KnoxShellTableFilterTest.java b/gateway-shell/src/test/java/org/apache/knox/gateway/shell/table/KnoxShellTableFilterTest.java
index 701408b..b1f3736 100644
--- a/gateway-shell/src/test/java/org/apache/knox/gateway/shell/table/KnoxShellTableFilterTest.java
+++ b/gateway-shell/src/test/java/org/apache/knox/gateway/shell/table/KnoxShellTableFilterTest.java
@@ -50,6 +50,13 @@
   }
 
   @Test
+  public void testNameMethod() throws KnoxShellTableFilterException, ParseException {
+    assertEquals(TABLE.filter().name("cOlUmN iNtEgEr").greaterThan(10).getRows().size(), 1);
+    assertEquals(TABLE.filter().name("COLUMN DOUBLE").greaterThan(25d).getRows().size(), 1);
+    assertEquals(TABLE.filter().name("column string").greaterThan("text20").getRows().size(), 2);
+  }
+
+  @Test
   public void testGreaterThanFilter() throws KnoxShellTableFilterException, ParseException {
     assertEquals(TABLE.filter().name("Column Integer").greaterThan(5).getRows().size(), 3);
     assertEquals(TABLE.filter().name("Column Integer").greaterThan(25).getRows().size(), 2);
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 6b0c60c..c6c63e0 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
@@ -227,7 +227,7 @@
   }
 
   @Test
-  public void testFilterTable() {
+  public void testFilterTable() throws KnoxShellTableFilterException {
     KnoxShellTable table = new KnoxShellTable();
 
     table.header("Column A").header("Column B").header("Column C");