You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ni...@apache.org on 2010/12/28 08:16:12 UTC

svn commit: r1053274 - /poi/trunk/src/java/org/apache/poi/poifs/dev/POIFSLister.java

Author: nick
Date: Tue Dec 28 07:16:12 2010
New Revision: 1053274

URL: http://svn.apache.org/viewvc?rev=1053274&view=rev
Log:
Allow POIFSLister to switch between the two different POIFS implementations when listing

Modified:
    poi/trunk/src/java/org/apache/poi/poifs/dev/POIFSLister.java

Modified: poi/trunk/src/java/org/apache/poi/poifs/dev/POIFSLister.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/poifs/dev/POIFSLister.java?rev=1053274&r1=1053273&r2=1053274&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/poifs/dev/POIFSLister.java (original)
+++ poi/trunk/src/java/org/apache/poi/poifs/dev/POIFSLister.java Tue Dec 28 07:16:12 2010
@@ -17,12 +17,15 @@
 
 package org.apache.poi.poifs.dev;
 
+import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.util.Iterator;
 
 import org.apache.poi.poifs.filesystem.DirectoryNode;
 import org.apache.poi.poifs.filesystem.DocumentNode;
+import org.apache.poi.poifs.filesystem.Entry;
+import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 
 /**
@@ -31,59 +34,71 @@ import org.apache.poi.poifs.filesystem.P
  * Much simpler than {@link POIFSViewer}
  */
 public class POIFSLister {
-	/**
-	 * Display the entries of multiple POIFS files
-	 *
-	 * @param args the names of the files to be displayed
-	 */
-	public static void main(final String args[]) throws IOException {
-		if (args.length == 0) {
-			System.err.println("Must specify at least one file to view");
-			System.exit(1);
-		}
-
-		boolean withSizes = false;
-		for (int j = 0; j < args.length; j++) {
-			if (args[j].equalsIgnoreCase("-size") || args[j].equalsIgnoreCase("-sizes")) {
-				withSizes = true;
-			} else {
-				viewFile(args[j], withSizes);
-			}
-		}
-	}
-
-	public static void viewFile(final String filename, boolean withSizes) throws IOException {
-		POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(filename));
-		displayDirectory(fs.getRoot(), "", withSizes);
-	}
-
-	public static void displayDirectory(DirectoryNode dir, String indent, boolean withSizes) {
-		System.out.println(indent + dir.getName() + " -");
-		String newIndent = indent + "  ";
-
-		boolean hadChildren = false;
-		for (Iterator it = dir.getEntries(); it.hasNext();) {
-			hadChildren = true;
-			Object entry = it.next();
-			if (entry instanceof DirectoryNode) {
-				displayDirectory((DirectoryNode) entry, newIndent, withSizes);
-			} else {
-				DocumentNode doc = (DocumentNode) entry;
-				String name = doc.getName();
-				String size = "";
-				if (name.charAt(0) < 10) {
-					String altname = "(0x0" + (int) name.charAt(0) + ")" + name.substring(1);
-					name = name.substring(1) + " <" + altname + ">";
-				}
-				if (withSizes) {
-					size = " [" + doc.getSize() + " / 0x" + Integer.toHexString(doc.getSize())
-							+ "]";
-				}
-				System.out.println(newIndent + name + size);
-			}
-		}
-		if (!hadChildren) {
-			System.out.println(newIndent + "(no children)");
-		}
-	}
+   /**
+    * Display the entries of multiple POIFS files
+    *
+    * @param args the names of the files to be displayed
+    */
+   public static void main(final String args[]) throws IOException {
+      if (args.length == 0) {
+         System.err.println("Must specify at least one file to view");
+         System.exit(1);
+      }
+
+      boolean withSizes = false;
+      boolean newPOIFS = true;
+      for (int j = 0; j < args.length; j++) {
+         if (args[j].equalsIgnoreCase("-size") || args[j].equalsIgnoreCase("-sizes")) {
+            withSizes = true;
+         } else if (args[j].equalsIgnoreCase("-old") || args[j].equalsIgnoreCase("-old-poifs")) {
+            newPOIFS = false;
+         } else {
+            if(newPOIFS) {
+               viewFile(args[j], withSizes);
+            } else {
+               viewFileOld(args[j], withSizes);
+            }
+         }
+      }
+   }
+
+   public static void viewFile(final String filename, boolean withSizes) throws IOException {
+      NPOIFSFileSystem fs = new NPOIFSFileSystem(new File(filename));
+      displayDirectory(fs.getRoot(), "", withSizes);
+   }
+
+   public static void viewFileOld(final String filename, boolean withSizes) throws IOException {
+      POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(filename));
+      displayDirectory(fs.getRoot(), "", withSizes);
+   }
+
+   public static void displayDirectory(DirectoryNode dir, String indent, boolean withSizes) {
+      System.out.println(indent + dir.getName() + " -");
+      String newIndent = indent + "  ";
+
+      boolean hadChildren = false;
+      for(Iterator<Entry> it = dir.getEntries(); it.hasNext();) {
+         hadChildren = true;
+         Entry entry = it.next();
+         if (entry instanceof DirectoryNode) {
+            displayDirectory((DirectoryNode) entry, newIndent, withSizes);
+         } else {
+            DocumentNode doc = (DocumentNode) entry;
+            String name = doc.getName();
+            String size = "";
+            if (name.charAt(0) < 10) {
+               String altname = "(0x0" + (int) name.charAt(0) + ")" + name.substring(1);
+               name = name.substring(1) + " <" + altname + ">";
+            }
+            if (withSizes) {
+               size = " [" + doc.getSize() + " / 0x" + 
+                      Integer.toHexString(doc.getSize()) + "]";
+            }
+            System.out.println(newIndent + name + size);
+         }
+      }
+      if (!hadChildren) {
+         System.out.println(newIndent + "(no children)");
+      }
+   }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org