poi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From n...@apache.org
Subject svn commit: r1051025 - in /poi/trunk/src: java/org/apache/poi/poifs/dev/ java/org/apache/poi/poifs/eventfilesystem/ java/org/apache/poi/poifs/filesystem/ java/org/apache/poi/poifs/property/ testcases/org/apache/poi/poifs/property/ testcases/org/apache/...
Date Mon, 20 Dec 2010 09:06:48 GMT
Author: nick
Date: Mon Dec 20 09:06:47 2010
New Revision: 1051025

URL: http://svn.apache.org/viewvc?rev=1051025&view=rev
Log:
POIFS Property refactoring ready for NIO support

Modified:
    poi/trunk/src/java/org/apache/poi/poifs/dev/POIFSHeaderDumper.java
    poi/trunk/src/java/org/apache/poi/poifs/eventfilesystem/POIFSReader.java
    poi/trunk/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java
    poi/trunk/src/java/org/apache/poi/poifs/property/PropertyFactory.java
    poi/trunk/src/java/org/apache/poi/poifs/property/PropertyTable.java
    poi/trunk/src/testcases/org/apache/poi/poifs/property/TestPropertyTable.java
    poi/trunk/src/testcases/org/apache/poi/poifs/storage/TestSmallBlockTableReader.java

Modified: poi/trunk/src/java/org/apache/poi/poifs/dev/POIFSHeaderDumper.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/poifs/dev/POIFSHeaderDumper.java?rev=1051025&r1=1051024&r2=1051025&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/poifs/dev/POIFSHeaderDumper.java (original)
+++ poi/trunk/src/java/org/apache/poi/poifs/dev/POIFSHeaderDumper.java Mon Dec 20 09:06:47
2010
@@ -83,10 +83,7 @@ public class POIFSHeaderDumper {
 
       // Properties Table
       PropertyTable properties =
-         new PropertyTable(
-               header_block.getBigBlockSize(),
-               header_block.getPropertyStart(),
-               data_blocks);
+         new PropertyTable(header_block, data_blocks);
       
       // Mini Fat
       BlockList sbat = 

Modified: poi/trunk/src/java/org/apache/poi/poifs/eventfilesystem/POIFSReader.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/poifs/eventfilesystem/POIFSReader.java?rev=1051025&r1=1051024&r2=1051025&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/poifs/eventfilesystem/POIFSReader.java (original)
+++ poi/trunk/src/java/org/apache/poi/poifs/eventfilesystem/POIFSReader.java Mon Dec 20 09:06:47
2010
@@ -78,7 +78,7 @@ public class POIFSReader
         HeaderBlock header_block = new HeaderBlock(stream);
 
         // read the rest of the stream into blocks
-        RawDataBlockList  data_blocks         = new RawDataBlockList(stream, header_block.getBigBlockSize());
+        RawDataBlockList data_blocks = new RawDataBlockList(stream, header_block.getBigBlockSize());
 
         // set up the block allocation table (necessary for the
         // data_blocks to be manageable
@@ -91,9 +91,7 @@ public class POIFSReader
 
         // get property table from the document
         PropertyTable properties =
-            new PropertyTable(header_block.getBigBlockSize(),
-                              header_block.getPropertyStart(),
-                              data_blocks);
+            new PropertyTable(header_block, data_blocks);
 
         // process documents
         processProperties(SmallBlockTableReader

Modified: poi/trunk/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java?rev=1051025&r1=1051024&r2=1051025&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java (original)
+++ poi/trunk/src/java/org/apache/poi/poifs/filesystem/POIFSFileSystem.java Mon Dec 20 09:06:47
2010
@@ -156,9 +156,7 @@ public class POIFSFileSystem
 
         // get property table from the document
         PropertyTable properties =
-            new PropertyTable(bigBlockSize,
-                              header_block.getPropertyStart(),
-                              data_blocks);
+            new PropertyTable(header_block, data_blocks);
 
         // init documents
         processProperties(

Modified: poi/trunk/src/java/org/apache/poi/poifs/property/PropertyFactory.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/poifs/property/PropertyFactory.java?rev=1051025&r1=1051024&r2=1051025&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/poifs/property/PropertyFactory.java (original)
+++ poi/trunk/src/java/org/apache/poi/poifs/property/PropertyFactory.java Mon Dec 20 09:06:47
2010
@@ -40,7 +40,6 @@ import org.apache.poi.poifs.storage.List
 
 class PropertyFactory
 {
-
     // no need for an accessible constructor
     private PropertyFactory()
     {
@@ -56,48 +55,52 @@ class PropertyFactory
      *
      * @exception IOException if any of the blocks are empty
      */
-
-    static List convertToProperties(ListManagedBlock [] blocks)
+    static List<Property> convertToProperties(ListManagedBlock [] blocks)
         throws IOException
     {
-        List properties = new ArrayList();
+        List<Property> properties = new ArrayList<Property>();
 
-        for (int j = 0; j < blocks.length; j++)
-        {
-            byte[] data           = blocks[ j ].getData();
-            int    property_count = data.length
-                                    / POIFSConstants.PROPERTY_SIZE;
-            int    offset         = 0;
-
-            for (int k = 0; k < property_count; k++)
-            {
-                switch (data[ offset + PropertyConstants.PROPERTY_TYPE_OFFSET ])
-                {
-
-                    case PropertyConstants.DIRECTORY_TYPE :
-                        properties
-                            .add(new DirectoryProperty(properties.size(),
-                                                       data, offset));
-                        break;
-
-                    case PropertyConstants.DOCUMENT_TYPE :
-                        properties.add(new DocumentProperty(properties.size(),
-                                                            data, offset));
-                        break;
-
-                    case PropertyConstants.ROOT_TYPE :
-                        properties.add(new RootProperty(properties.size(),
-                                                        data, offset));
-                        break;
-
-                    default :
-                        properties.add(null);
-                        break;
-                }
-                offset += POIFSConstants.PROPERTY_SIZE;
-            }
+        for (int j = 0; j < blocks.length; j++) {
+            byte[] data = blocks[ j ].getData();
+            convertToProperties(data, properties);
         }
         return properties;
     }
+    
+    static void convertToProperties(byte[] data, List<Property> properties)
+        throws IOException
+    {
+       int property_count = data.length / POIFSConstants.PROPERTY_SIZE;
+       int offset         = 0;
+
+       for (int k = 0; k < property_count; k++) {
+          switch (data[ offset + PropertyConstants.PROPERTY_TYPE_OFFSET ]) {
+          case PropertyConstants.DIRECTORY_TYPE :
+             properties.add(
+                   new DirectoryProperty(properties.size(), data, offset)
+             );
+             break;
+
+          case PropertyConstants.DOCUMENT_TYPE :
+             properties.add(
+                   new DocumentProperty(properties.size(), data, offset)
+             );
+             break;
+
+          case PropertyConstants.ROOT_TYPE :
+             properties.add(
+                   new RootProperty(properties.size(), data, offset)
+             );
+             break;
+
+          default :
+             properties.add(null);
+             break;
+          }
+          
+          offset += POIFSConstants.PROPERTY_SIZE;
+       }
+    }
+    
 }   // end package scope class PropertyFactory
 

Modified: poi/trunk/src/java/org/apache/poi/poifs/property/PropertyTable.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/poifs/property/PropertyTable.java?rev=1051025&r1=1051024&r2=1051025&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/poifs/property/PropertyTable.java (original)
+++ poi/trunk/src/java/org/apache/poi/poifs/property/PropertyTable.java Mon Dec 20 09:06:47
2010
@@ -27,6 +27,7 @@ import org.apache.poi.poifs.common.POIFS
 import org.apache.poi.poifs.common.POIFSConstants;
 import org.apache.poi.poifs.filesystem.BATManaged;
 import org.apache.poi.poifs.storage.BlockWritable;
+import org.apache.poi.poifs.storage.HeaderBlock;
 import org.apache.poi.poifs.storage.PropertyBlock;
 import org.apache.poi.poifs.storage.RawDataBlockList;
 
@@ -63,17 +64,16 @@ public final class PropertyTable impleme
      * @exception IOException if anything goes wrong (which should be
      *            a result of the input being NFG)
      */
-    public PropertyTable(final POIFSBigBlockSize bigBlockSize,
-                         final int startBlock,
+    public PropertyTable(final HeaderBlock headerBlock,
                          final RawDataBlockList blockList)
         throws IOException
     {
-        _bigBigBlockSize = bigBlockSize;
+        _bigBigBlockSize = headerBlock.getBigBlockSize();
         _start_block = POIFSConstants.END_OF_CHAIN;
         _blocks      = null;
-        _properties  =
-            PropertyFactory
-                .convertToProperties(blockList.fetchBlocks(startBlock, -1));
+        _properties  = PropertyFactory.convertToProperties(
+              blockList.fetchBlocks(headerBlock.getPropertyStart(), -1)
+        );
         populatePropertyTree(( DirectoryProperty ) _properties.get(0));
     }
 
@@ -114,7 +114,7 @@ public final class PropertyTable impleme
      */
     public void preWrite()
     {
-        Property[] properties = _properties.toArray(new Property[ 0 ]);
+        Property[] properties = _properties.toArray(new Property[_properties.size()]);
 
         // give each property its index
         for (int k = 0; k < properties.length; k++)

Modified: poi/trunk/src/testcases/org/apache/poi/poifs/property/TestPropertyTable.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/poifs/property/TestPropertyTable.java?rev=1051025&r1=1051024&r2=1051025&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/poifs/property/TestPropertyTable.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/poifs/property/TestPropertyTable.java Mon Dec 20
09:06:47 2010
@@ -27,6 +27,7 @@ import junit.framework.TestCase;
 
 import org.apache.poi.poifs.common.POIFSConstants;
 import org.apache.poi.poifs.storage.BlockAllocationTableReader;
+import org.apache.poi.poifs.storage.HeaderBlock;
 import org.apache.poi.poifs.storage.RawDataBlockList;
 import org.apache.poi.poifs.storage.RawDataUtil;
 
@@ -438,9 +439,12 @@ public final class TestPropertyTable ext
 		new BlockAllocationTableReader(
 		      POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS, 1, bat_array, 0, -2, data_blocks);
 
+      // Fake up a header
+      HeaderBlock header_block = new HeaderBlock(POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS);
+      header_block.setPropertyStart(0);
+      
 		// get property table from the document
-		PropertyTable table = new PropertyTable(
-		      POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS, 0, data_blocks);
+		PropertyTable table = new PropertyTable(header_block, data_blocks);
 
 		assertEquals(30 * 64, table.getRoot().getSize());
 		int count = 0;

Modified: poi/trunk/src/testcases/org/apache/poi/poifs/storage/TestSmallBlockTableReader.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/poifs/storage/TestSmallBlockTableReader.java?rev=1051025&r1=1051024&r2=1051025&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/poifs/storage/TestSmallBlockTableReader.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/poifs/storage/TestSmallBlockTableReader.java Mon
Dec 20 09:06:47 2010
@@ -302,9 +302,13 @@ public final class TestSmallBlockTableRe
 		// need to initialize the block list with a block allocation
 		// table
 		new BlockAllocationTableReader(POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS, 1, bat_array,
0, -2, data_blocks);
+		
+		// Fake up a header
+		HeaderBlock header_block = new HeaderBlock(POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS);
+		header_block.setPropertyStart(0);
 
 		// get property table from the document
-		PropertyTable properties = new PropertyTable(POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS,
0, data_blocks);
+		PropertyTable properties = new PropertyTable(header_block, data_blocks);
 		RootProperty root = properties.getRoot();
 		BlockList bl = SmallBlockTableReader.getSmallDocumentBlocks(
 		      POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS, data_blocks, root, 14);



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


Mime
View raw message