You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by ct...@apache.org on 2013/12/05 00:58:09 UTC

[17/50] [abbrv] git commit: ACCUMULO-802 added -l option to namespaces command

ACCUMULO-802 added -l option to namespaces command


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/d10feb7c
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/d10feb7c
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/d10feb7c

Branch: refs/heads/1.6.0-SNAPSHOT
Commit: d10feb7c7f7ae9eb5affe69ab18959e8bd7c16d7
Parents: 51f07eb
Author: Sean Hickey <ta...@gmail.com>
Authored: Mon Aug 12 08:11:31 2013 -0400
Committer: Christopher Tubbs <ct...@apache.org>
Committed: Wed Dec 4 18:46:10 2013 -0500

----------------------------------------------------------------------
 .../util/shell/commands/NamespacesCommand.java  | 34 ++++++++++++++++++--
 1 file changed, 32 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/d10feb7c/core/src/main/java/org/apache/accumulo/core/util/shell/commands/NamespacesCommand.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/util/shell/commands/NamespacesCommand.java b/core/src/main/java/org/apache/accumulo/core/util/shell/commands/NamespacesCommand.java
index dcb4bd7..ad30699 100644
--- a/core/src/main/java/org/apache/accumulo/core/util/shell/commands/NamespacesCommand.java
+++ b/core/src/main/java/org/apache/accumulo/core/util/shell/commands/NamespacesCommand.java
@@ -17,6 +17,9 @@
 package org.apache.accumulo.core.util.shell.commands;
 
 import java.io.IOException;
+import java.util.Iterator;
+import java.util.TreeMap;
+import java.util.Map.Entry;
 
 import org.apache.accumulo.core.client.AccumuloException;
 import org.apache.accumulo.core.client.AccumuloSecurityException;
@@ -25,16 +28,41 @@ import org.apache.accumulo.core.util.shell.Shell.Command;
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.Option;
 import org.apache.commons.cli.Options;
+import org.apache.commons.collections.iterators.AbstractIteratorDecorator;
 
 public class NamespacesCommand extends Command {
-  private Option disablePaginationOpt;
+  private Option disablePaginationOpt, namespaceIdOption;
   
+  @SuppressWarnings("unchecked")
   @Override
   public int execute(final String fullCommand, final CommandLine cl, final Shell shellState) throws AccumuloException, AccumuloSecurityException, IOException {
-    shellState.printLines(shellState.getConnector().tableNamespaceOperations().list().iterator(), !cl.hasOption(disablePaginationOpt.getOpt()));
+      Iterator<String> names = shellState.getConnector().tableNamespaceOperations().list().iterator();
+      Iterator<String> ids = new NamespaceIdIterator(new TreeMap<String,String>(shellState.getConnector().tableNamespaceOperations().namespaceIdMap()).entrySet().iterator());
+    
+    if (cl.hasOption(namespaceIdOption.getOpt())) {
+      shellState.printLines(ids, !cl.hasOption(disablePaginationOpt.getOpt()));
+    } else {
+      shellState.printLines(names, !cl.hasOption(disablePaginationOpt.getOpt()));
+    }
     return 0;
   }
   
+  /**
+   * Decorator that formats the id and name for display.
+   */
+  private static final class NamespaceIdIterator extends AbstractIteratorDecorator {
+    public NamespaceIdIterator(Iterator<Entry<String,String>> iterator) {
+      super(iterator);
+    }
+    
+    @SuppressWarnings("rawtypes")
+    @Override
+    public Object next() {
+      Entry entry = (Entry) super.next();
+      return String.format("%-15s => %10s%n", entry.getKey(), entry.getValue());
+    }
+  }
+  
   @Override
   public String description() {
     return "displays a list of all existing table namespaces";
@@ -43,6 +71,8 @@ public class NamespacesCommand extends Command {
   @Override
   public Options getOptions() {
     final Options o = new Options();
+    namespaceIdOption = new Option("l", "list-ids", false, "display internal table namespace ids along with the name");
+    o.addOption(namespaceIdOption);
     disablePaginationOpt = new Option("np", "no-pagination", false, "disable pagination of output");
     o.addOption(disablePaginationOpt);
     return o;