This is an automated email from the ASF dual-hosted git repository.

ddanielr pushed a commit to branch 2.1
in repository https://gitbox.apache.org/repos/asf/accumulo.git


The following commit(s) were added to refs/heads/2.1 by this push:
     new c2681b3f9b Fix CF and CQ cli options for DeleteMany and Grep commands 
(#5445)
c2681b3f9b is described below

commit c2681b3f9bc46b5144f8571ba3bfc5dbb8250cd5
Author: Daniel Roberts <ddani...@gmail.com>
AuthorDate: Thu Apr 3 13:06:35 2025 -0400

    Fix CF and CQ cli options for DeleteMany and Grep commands (#5445)
    
    * Use Column CF and CQ cli options
    
    Use the CF and CQ command line options in the DeleteMany and Grep
    commands.
    
    * Fix minor spelling of "interpreter"
    
    * Simplify column fetching methods
    
    Reduce the two separate column fetch methods into a single method.
---
 .../accumulo/shell/commands/DeleteManyCommand.java |   6 +-
 .../accumulo/shell/commands/GrepCommand.java       |   6 +-
 .../accumulo/shell/commands/ScanCommand.java       | 102 +++++++++------------
 3 files changed, 49 insertions(+), 65 deletions(-)

diff --git 
a/shell/src/main/java/org/apache/accumulo/shell/commands/DeleteManyCommand.java 
b/shell/src/main/java/org/apache/accumulo/shell/commands/DeleteManyCommand.java
index 5384736b53..9bf09830c8 100644
--- 
a/shell/src/main/java/org/apache/accumulo/shell/commands/DeleteManyCommand.java
+++ 
b/shell/src/main/java/org/apache/accumulo/shell/commands/DeleteManyCommand.java
@@ -42,7 +42,7 @@ public class DeleteManyCommand extends ScanCommand {
     final String tableName = OptUtil.getTableOpt(cl, shellState);
 
     @SuppressWarnings("deprecation")
-    final org.apache.accumulo.core.util.interpret.ScanInterpreter interpeter =
+    final org.apache.accumulo.core.util.interpret.ScanInterpreter interpreter =
         getInterpreter(cl, tableName, shellState);
 
     // handle first argument, if present, the authorizations list to
@@ -57,12 +57,12 @@ public class DeleteManyCommand extends ScanCommand {
     addScanIterators(shellState, cl, scanner, tableName);
 
     // handle remaining optional arguments
-    scanner.setRange(getRange(cl, interpeter));
+    scanner.setRange(getRange(cl, interpreter));
 
     scanner.setTimeout(getTimeout(cl), TimeUnit.MILLISECONDS);
 
     // handle columns
-    fetchColumns(cl, scanner, interpeter);
+    fetchColumns(cl, scanner, interpreter);
 
     // output / delete the records
     final BatchWriter writer = 
shellState.getAccumuloClient().createBatchWriter(tableName,
diff --git 
a/shell/src/main/java/org/apache/accumulo/shell/commands/GrepCommand.java 
b/shell/src/main/java/org/apache/accumulo/shell/commands/GrepCommand.java
index 2695f572f3..4f6160fcdd 100644
--- a/shell/src/main/java/org/apache/accumulo/shell/commands/GrepCommand.java
+++ b/shell/src/main/java/org/apache/accumulo/shell/commands/GrepCommand.java
@@ -65,7 +65,7 @@ public class GrepCommand extends ScanCommand {
       }
       final Class<? extends Formatter> formatter = getFormatter(cl, tableName, 
shellState);
       @SuppressWarnings("deprecation")
-      final org.apache.accumulo.core.util.interpret.ScanInterpreter interpeter 
=
+      final org.apache.accumulo.core.util.interpret.ScanInterpreter 
interpreter =
           getInterpreter(cl, tableName, shellState);
 
       // handle first argument, if present, the authorizations list to
@@ -83,7 +83,7 @@ public class GrepCommand extends ScanCommand {
       final Authorizations auths = getAuths(cl, shellState);
       final BatchScanner scanner =
           shellState.getAccumuloClient().createBatchScanner(tableName, auths, 
numThreads);
-      scanner.setRanges(Collections.singletonList(getRange(cl, interpeter)));
+      scanner.setRanges(Collections.singletonList(getRange(cl, interpreter)));
 
       scanner.setTimeout(getTimeout(cl), TimeUnit.MILLISECONDS);
 
@@ -98,7 +98,7 @@ public class GrepCommand extends ScanCommand {
       }
       try {
         // handle columns
-        fetchColumns(cl, scanner, interpeter);
+        fetchColumns(cl, scanner, interpreter);
 
         // output the records
         printRecords(cl, shellState, config, scanner, formatter, printFile);
diff --git 
a/shell/src/main/java/org/apache/accumulo/shell/commands/ScanCommand.java 
b/shell/src/main/java/org/apache/accumulo/shell/commands/ScanCommand.java
index d9bc9f7d90..d2c5286c2d 100644
--- a/shell/src/main/java/org/apache/accumulo/shell/commands/ScanCommand.java
+++ b/shell/src/main/java/org/apache/accumulo/shell/commands/ScanCommand.java
@@ -58,7 +58,7 @@ import org.apache.hadoop.io.Text;
 public class ScanCommand extends Command {
 
   private Option scanOptAuths, scanOptRow, scanOptColumns, 
disablePaginationOpt, formatterOpt,
-      interpreterOpt, formatterInterpeterOpt, outputFileOpt, scanOptCf, 
scanOptCq;
+      interpreterOpt, formatterInterpreterOpt, outputFileOpt, scanOptCf, 
scanOptCq;
 
   protected Option showFewOpt;
   protected Option timestampOpt;
@@ -104,7 +104,7 @@ public class ScanCommand extends Command {
 
       final Class<? extends Formatter> formatter = getFormatter(cl, tableName, 
shellState);
       @SuppressWarnings("deprecation")
-      final org.apache.accumulo.core.util.interpret.ScanInterpreter interpeter 
=
+      final org.apache.accumulo.core.util.interpret.ScanInterpreter 
interpreter =
           getInterpreter(cl, tableName, shellState);
 
       String classLoaderContext = null;
@@ -121,11 +121,10 @@ public class ScanCommand extends Command {
       addScanIterators(shellState, cl, scanner, tableName);
 
       // handle remaining optional arguments
-      scanner.setRange(getRange(cl, interpeter));
+      scanner.setRange(getRange(cl, interpreter));
 
       // handle columns
-      fetchColumns(cl, scanner, interpeter);
-      fetchColumsWithCFAndCQ(cl, scanner, interpeter);
+      fetchColumns(cl, scanner, interpreter);
 
       // set timeout
       scanner.setTimeout(getTimeout(cl), TimeUnit.MILLISECONDS);
@@ -244,11 +243,11 @@ public class ScanCommand extends Command {
 
         clazz = 
ClassLoaderUtil.loadClass(cl.getOptionValue(interpreterOpt.getOpt()),
             org.apache.accumulo.core.util.interpret.ScanInterpreter.class);
-      } else if (cl.hasOption(formatterInterpeterOpt.getOpt())) {
+      } else if (cl.hasOption(formatterInterpreterOpt.getOpt())) {
         Shell.log
             .warn("Scan Interpreter option is deprecated and will be removed 
in a future version.");
 
-        clazz = 
ClassLoaderUtil.loadClass(cl.getOptionValue(formatterInterpeterOpt.getOpt()),
+        clazz = 
ClassLoaderUtil.loadClass(cl.getOptionValue(formatterInterpreterOpt.getOpt()),
             org.apache.accumulo.core.util.interpret.ScanInterpreter.class);
       }
     } catch (ClassNotFoundException e) {
@@ -275,11 +274,11 @@ public class ScanCommand extends Command {
 
         return shellState.getClassLoader(cl, shellState)
             
.loadClass(cl.getOptionValue(formatterOpt.getOpt())).asSubclass(Formatter.class);
-      } else if (cl.hasOption(formatterInterpeterOpt.getOpt())) {
+      } else if (cl.hasOption(formatterInterpreterOpt.getOpt())) {
         Shell.log.warn("Formatter option is deprecated and will be removed in 
a future version.");
 
         return shellState.getClassLoader(cl, shellState)
-            .loadClass(cl.getOptionValue(formatterInterpeterOpt.getOpt()))
+            .loadClass(cl.getOptionValue(formatterInterpreterOpt.getOpt()))
             .asSubclass(Formatter.class);
       }
     } catch (Exception e) {
@@ -290,69 +289,54 @@ public class ScanCommand extends Command {
   }
 
   protected void fetchColumns(final CommandLine cl, final ScannerBase scanner,
-      @SuppressWarnings("deprecation") final 
org.apache.accumulo.core.util.interpret.ScanInterpreter formatter)
+      @SuppressWarnings("deprecation") final 
org.apache.accumulo.core.util.interpret.ScanInterpreter interpreter)
       throws UnsupportedEncodingException {
 
-    if ((cl.hasOption(scanOptCf.getOpt()) || cl.hasOption(scanOptCq.getOpt()))
-        && cl.hasOption(scanOptColumns.getOpt())) {
-
-      String formattedString =
-          String.format("Option -%s is mutually exclusive with options -%s and 
-%s.",
-              scanOptColumns.getOpt(), scanOptCf.getOpt(), scanOptCq.getOpt());
-      throw new IllegalArgumentException(formattedString);
-    }
-
-    if (cl.hasOption(scanOptColumns.getOpt())) {
+    if (cl.hasOption(scanOptCf.getOpt()) || cl.hasOption(scanOptCq.getOpt())) {
+      if (cl.hasOption(scanOptColumns.getOpt())) {
+        String formattedString =
+            String.format("Option -%s is mutually exclusive with options -%s 
and -%s.",
+                scanOptColumns.getOpt(), scanOptCf.getOpt(), 
scanOptCq.getOpt());
+        throw new IllegalArgumentException(formattedString);
+      }
+      String cf = cl.getOptionValue(scanOptCf.getOpt(), "");
+      String cq = cl.getOptionValue(scanOptCq.getOpt(), "");
+
+      if (!cq.isEmpty()) {
+        if (cf.isEmpty()) {
+          String formattedString = String.format("Option -%s is required when 
using -%s.",
+              scanOptCf.getOpt(), scanOptCq.getOpt());
+          throw new IllegalArgumentException(formattedString);
+        } else {
+          var interprettedCF =
+              interpreter.interpretColumnFamily(new 
Text(cf.getBytes(Shell.CHARSET)));
+          var interprettedCQ =
+              interpreter.interpretColumnQualifier(new 
Text(cq.getBytes(Shell.CHARSET)));
+          scanner.fetchColumn(interprettedCF, interprettedCQ);
+        }
+      } else if (!cf.isEmpty()) {
+        var interprettedCF =
+            interpreter.interpretColumnFamily(new 
Text(cf.getBytes(Shell.CHARSET)));
+        scanner.fetchColumnFamily(interprettedCF);
+      }
+    } else if (cl.hasOption(scanOptColumns.getOpt())) {
       for (String a : cl.getOptionValue(scanOptColumns.getOpt()).split(",")) {
         final String[] sa = a.split(":", 2);
         if (sa.length == 1) {
-          @SuppressWarnings("deprecation")
-          var interprettedCF = formatter.interpretColumnFamily(new 
Text(a.getBytes(Shell.CHARSET)));
+          var interprettedCF =
+              interpreter.interpretColumnFamily(new 
Text(a.getBytes(Shell.CHARSET)));
           scanner.fetchColumnFamily(interprettedCF);
         } else {
-          @SuppressWarnings("deprecation")
           var interprettedCF =
-              formatter.interpretColumnFamily(new 
Text(sa[0].getBytes(Shell.CHARSET)));
-          @SuppressWarnings("deprecation")
+              interpreter.interpretColumnFamily(new 
Text(sa[0].getBytes(Shell.CHARSET)));
           var interprettedCQ =
-              formatter.interpretColumnQualifier(new 
Text(sa[1].getBytes(Shell.CHARSET)));
+              interpreter.interpretColumnQualifier(new 
Text(sa[1].getBytes(Shell.CHARSET)));
           scanner.fetchColumn(interprettedCF, interprettedCQ);
         }
       }
     }
   }
 
-  private void fetchColumsWithCFAndCQ(CommandLine cl, Scanner scanner,
-      @SuppressWarnings("deprecation") 
org.apache.accumulo.core.util.interpret.ScanInterpreter interpeter) {
-    String cf = "";
-    String cq = "";
-    if (cl.hasOption(scanOptCf.getOpt())) {
-      cf = cl.getOptionValue(scanOptCf.getOpt());
-    }
-    if (cl.hasOption(scanOptCq.getOpt())) {
-      cq = cl.getOptionValue(scanOptCq.getOpt());
-    }
-
-    if (cf.isEmpty() && !cq.isEmpty()) {
-      String formattedString = String.format("Option -%s is required when 
using -%s.",
-          scanOptCf.getOpt(), scanOptCq.getOpt());
-      throw new IllegalArgumentException(formattedString);
-    } else if (!cf.isEmpty() && cq.isEmpty()) {
-      @SuppressWarnings("deprecation")
-      var interprettedCF = interpeter.interpretColumnFamily(new 
Text(cf.getBytes(Shell.CHARSET)));
-      scanner.fetchColumnFamily(interprettedCF);
-    } else if (!cf.isEmpty() && !cq.isEmpty()) {
-      @SuppressWarnings("deprecation")
-      var interprettedCF = interpeter.interpretColumnFamily(new 
Text(cf.getBytes(Shell.CHARSET)));
-      @SuppressWarnings("deprecation")
-      var interprettedCQ =
-          interpeter.interpretColumnQualifier(new 
Text(cq.getBytes(Shell.CHARSET)));
-      scanner.fetchColumn(interprettedCF, interprettedCQ);
-
-    }
-
-  }
-
   protected Range getRange(final CommandLine cl,
       @SuppressWarnings("deprecation") final 
org.apache.accumulo.core.util.interpret.ScanInterpreter formatter)
       throws UnsupportedEncodingException {
@@ -436,7 +420,7 @@ public class ScanCommand extends Command {
         new Option("fm", "formatter", true, "fully qualified name of the 
formatter class to use");
     interpreterOpt = new Option("i", "interpreter", true,
         "fully qualified name of the interpreter class to use");
-    formatterInterpeterOpt = new Option("fi", "fmt-interpreter", true,
+    formatterInterpreterOpt = new Option("fi", "fmt-interpreter", true,
         "fully qualified name of a class that is a formatter and interpreter");
     timeoutOption = new Option(null, "timeout", true,
         "time before scan should fail if no data is returned. If no unit is"
@@ -483,7 +467,7 @@ public class ScanCommand extends Command {
     o.addOption(OptUtil.tableOpt("table to be scanned"));
     o.addOption(formatterOpt);
     o.addOption(interpreterOpt);
-    o.addOption(formatterInterpeterOpt);
+    o.addOption(formatterInterpreterOpt);
     o.addOption(timeoutOption);
     if (Arrays.asList(ScanCommand.class.getName(), GrepCommand.class.getName(),
         EGrepCommand.class.getName()).contains(this.getClass().getName())) {

Reply via email to