Author: ecn
Date: Mon Apr 29 18:44:29 2013
New Revision: 1477263

URL: http://svn.apache.org/r1477263
Log:
ACCUMULO-1356 applying patch from Tim Reardon to paginate tables output

Modified:
    
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/util/shell/commands/TablesCommand.java

Modified: 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/util/shell/commands/TablesCommand.java
URL: 
http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/util/shell/commands/TablesCommand.java?rev=1477263&r1=1477262&r2=1477263&view=diff
==============================================================================
--- 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/util/shell/commands/TablesCommand.java
 (original)
+++ 
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/util/shell/commands/TablesCommand.java
 Mon Apr 29 18:44:29 2013
@@ -17,7 +17,10 @@
 package org.apache.accumulo.core.util.shell.commands;
 
 import java.io.IOException;
+import java.util.Iterator;
 import java.util.Map;
+import java.util.Map.Entry;
+import java.util.TreeMap;
 
 import org.apache.accumulo.core.client.AccumuloException;
 import org.apache.accumulo.core.client.AccumuloSecurityException;
@@ -26,25 +29,40 @@ import org.apache.accumulo.core.util.she
 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 TablesCommand extends Command {
   private Option tableIdOption;
+  private Option disablePaginationOpt;
   
+  @SuppressWarnings("unchecked")
   @Override
   public int execute(final String fullCommand, final CommandLine cl, final 
Shell shellState) throws AccumuloException, AccumuloSecurityException, 
IOException {
     if (cl.hasOption(tableIdOption.getOpt())) {
-      final Map<String,String> tableIds = 
shellState.getConnector().tableOperations().tableIdMap();
-      for (String tableName : 
shellState.getConnector().tableOperations().list()) {
-        shellState.getReader().printString(String.format("%-15s => %10s%n", 
tableName, tableIds.get(tableName)));
-      }
+      final Map<String,String> tableIds = new 
TreeMap<String,String>(shellState.getConnector().tableOperations().tableIdMap());
+      shellState.printLines(new 
TableIdIterator(tableIds.entrySet().iterator()), 
!cl.hasOption(disablePaginationOpt.getOpt()));
     } else {
-      for (String table : shellState.getConnector().tableOperations().list()) {
-        shellState.getReader().printString(table + "\n");
-      }
+      
shellState.printLines(shellState.getConnector().tableOperations().list().iterator(),
 !cl.hasOption(disablePaginationOpt.getOpt()));
     }
     return 0;
   }
   
+  /**
+   * Decorator that formats table id and name for display.
+   */
+  private static final class TableIdIterator extends AbstractIteratorDecorator 
{
+    public TableIdIterator(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 tables";
@@ -55,6 +73,8 @@ public class TablesCommand extends Comma
     final Options o = new Options();
     tableIdOption = new Option("l", "list-ids", false, "display internal table 
ids along with the table name");
     o.addOption(tableIdOption);
+    disablePaginationOpt = new Option("np", "no-pagination", false, "disable 
pagination of output");
+    o.addOption(disablePaginationOpt);
     return o;
   }
   


Reply via email to