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

svn commit: r1156682 - /poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/dev/HWPFLister.java

Author: sergey
Date: Thu Aug 11 17:16:07 2011
New Revision: 1156682

URL: http://svn.apache.org/viewvc?rev=1156682&view=rev
Log:
dump OLE2 streams

Modified:
    poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/dev/HWPFLister.java

Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/dev/HWPFLister.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/dev/HWPFLister.java?rev=1156682&r1=1156681&r2=1156682&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/dev/HWPFLister.java (original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/dev/HWPFLister.java Thu Aug 11 17:16:07 2011
@@ -26,10 +26,12 @@ import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.poi.POIDocument;
 import org.apache.poi.hwpf.HWPFDocument;
 import org.apache.poi.hwpf.HWPFDocumentCore;
 import org.apache.poi.hwpf.HWPFOldDocument;
@@ -53,6 +55,9 @@ import org.apache.poi.hwpf.usermodel.Par
 import org.apache.poi.hwpf.usermodel.Picture;
 import org.apache.poi.hwpf.usermodel.Range;
 import org.apache.poi.poifs.common.POIFSConstants;
+import org.apache.poi.poifs.filesystem.DirectoryEntry;
+import org.apache.poi.poifs.filesystem.DirectoryNode;
+import org.apache.poi.poifs.filesystem.Entry;
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 import org.apache.poi.util.Beta;
 import org.apache.poi.util.IOUtils;
@@ -199,6 +204,9 @@ public final class HWPFLister
         HWPFLister listerOriginal = new HWPFLister( original );
         HWPFLister listerRebuilded = new HWPFLister( doc );
 
+        System.out.println( "== OLE streams ==" );
+        listerOriginal.dumpFileSystem();
+        
         System.out.println( "== FIB (original) ==" );
         listerOriginal.dumpFIB();
 
@@ -404,6 +412,41 @@ public final class HWPFLister
         System.out.println( ( (HWPFDocument) _doc ).getEscherRecordHolder() );
     }
 
+    public void dumpFileSystem() throws Exception
+    {
+        java.lang.reflect.Field field = POIDocument.class
+                .getDeclaredField( "directory" );
+        field.setAccessible( true );
+        DirectoryNode directoryNode = (DirectoryNode) field.get( _doc );
+
+        System.out.println( dumpFileSystem( directoryNode ) );
+    }
+
+    private String dumpFileSystem( DirectoryEntry directory )
+    {
+        StringBuilder result = new StringBuilder();
+        result.append( "+ " );
+        result.append( directory.getName() );
+        for ( Iterator<Entry> iterator = directory.getEntries(); iterator
+                .hasNext(); )
+        {
+            Entry entry = iterator.next();
+            String entryToString = "\n" + dumpFileSystem( entry );
+            entryToString = entryToString.replaceAll( "\n", "\n+---" );
+            result.append( entryToString );
+        }
+        result.append( "\n" );
+        return result.toString();
+    }
+
+    private String dumpFileSystem( Entry entry )
+    {
+        if ( entry instanceof DirectoryEntry )
+            return dumpFileSystem( (DirectoryEntry) entry );
+
+        return entry.getName();
+    }
+
     public void dumpFIB()
     {
         FileInformationBlock fib = _doc.getFileInformationBlock();



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