You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jd...@apache.org on 2008/09/29 14:32:50 UTC

svn commit: r700099 - /geronimo/gshell/trunk/gshell-commands/gshell-vfs/src/main/java/org/apache/geronimo/gshell/commands/vfs/ListDirectoryAction.java

Author: jdillon
Date: Mon Sep 29 05:32:50 2008
New Revision: 700099

URL: http://svn.apache.org/viewvc?rev=700099&view=rev
Log:
Set the default ls style to that one might expect, column view.

Modified:
    geronimo/gshell/trunk/gshell-commands/gshell-vfs/src/main/java/org/apache/geronimo/gshell/commands/vfs/ListDirectoryAction.java

Modified: geronimo/gshell/trunk/gshell-commands/gshell-vfs/src/main/java/org/apache/geronimo/gshell/commands/vfs/ListDirectoryAction.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-commands/gshell-vfs/src/main/java/org/apache/geronimo/gshell/commands/vfs/ListDirectoryAction.java?rev=700099&r1=700098&r2=700099&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-commands/gshell-vfs/src/main/java/org/apache/geronimo/gshell/commands/vfs/ListDirectoryAction.java (original)
+++ geronimo/gshell/trunk/gshell-commands/gshell-vfs/src/main/java/org/apache/geronimo/gshell/commands/vfs/ListDirectoryAction.java Mon Sep 29 05:32:50 2008
@@ -33,6 +33,12 @@
 
 import java.text.DateFormat;
 import java.util.Date;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.io.PrintWriter;
+
+import jline.ConsoleReader;
 
 /**
  * List the contents of a file or directory.
@@ -45,6 +51,10 @@
     @Argument
     private String path;
 
+    //
+    // TODO: Add -l support
+    //
+
     @Option(name="-a")
     private boolean includeHidden = false;
 
@@ -64,7 +74,7 @@
         }
 
         if (file.getType() == FileType.FOLDER) {
-            listChildren(io, file, recursive, "");
+            listChildren(io, file);
         }
         else {
             io.info("{}", file.getName());
@@ -80,10 +90,9 @@
         return Result.SUCCESS;
     }
 
-    private void listChildren(final IO io, final FileObject dir, final boolean recursive, final String prefix) throws FileSystemException {
+    private void listChildren(final IO io, final FileObject dir) throws Exception {
         assert io != null;
         assert dir != null;
-        assert prefix != null;
 
         FileObject[] files;
 
@@ -107,19 +116,41 @@
             files = dir.findFiles(new FileFilterSelector(filter));
         }
 
+        //
+        // FIXME: Need to have the framework provide a reader, which is initialized correctly... or make this accessible via IO?
+        //
+
+        ConsoleReader reader = new ConsoleReader(
+                io.inputStream,
+                new PrintWriter(io.outputStream, true),
+                null, // bindings
+                io.getTerminal());
+        
+        reader.setUsePagination(false);
+
+        List<String> names = new ArrayList<String>(files.length);
+        List<FileObject> dirs = new LinkedList<FileObject>();
+
         for (FileObject file : files) {
-            io.out.print(prefix);
-            io.out.print(file.getName().getBaseName());
+            names.add(file.getName().getBaseName());
 
             if (file.getType() == FileType.FOLDER) {
-                io.out.println("/");
+                names.add(file.getName().getBaseName() + "/");
 
                 if (recursive) {
-                    listChildren(io, file, recursive, prefix + "    ");
+                    dirs.add(file);
                 }
             }
-            else {
+        }
+
+        reader.printColumns(names);
+        
+        if (!dirs.isEmpty()) {
+            for (FileObject subdir : dirs) {
                 io.out.println();
+                io.out.print(subdir.getName().getBaseName());
+                io.out.print(":");
+                listChildren(io, subdir);
             }
         }
     }