org.apache.poi.poifs.storage
Class SmallDocumentBlock

java.lang.Object
  extended by org.apache.poi.poifs.storage.SmallDocumentBlock
All Implemented Interfaces:
BlockWritable, ListManagedBlock

public class SmallDocumentBlock
extends java.lang.Object
implements BlockWritable, ListManagedBlock

Storage for documents that are too small to use regular DocumentBlocks for their data

Author:
Marc Johnson (mjohnson at apache dot org)

Method Summary
static int calcSize(int size)
          Calculate the storage size of a set of SmallDocumentBlocks
static SmallDocumentBlock[] convert(BlockWritable[] store, int size)
          Factory for creating SmallDocumentBlocks from DocumentBlocks
static SmallDocumentBlock[] convert(byte[] array, int size)
          convert a single long array into an array of SmallDocumentBlock instances
static java.util.List extract(ListManagedBlock[] blocks)
          create a list of SmallDocumentBlock's from raw data
static int fill(java.util.List blocks)
          fill out a List of SmallDocumentBlocks so that it fully occupies a set of big blocks
 byte[] getData()
          Get the data from the block
static void read(BlockWritable[] blocks, byte[] buffer, int offset)
          read data from an array of SmallDocumentBlocks
 void writeBlocks(java.io.OutputStream stream)
          Write the storage to an OutputStream
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

convert

public static SmallDocumentBlock[] convert(byte[] array,
                                           int size)
convert a single long array into an array of SmallDocumentBlock instances

Parameters:
array - the byte array to be converted
size - the intended size of the array (which may be smaller)
Returns:
an array of SmallDocumentBlock instances, filled from the array

fill

public static int fill(java.util.List blocks)
fill out a List of SmallDocumentBlocks so that it fully occupies a set of big blocks

Parameters:
blocks - the List to be filled out
Returns:
number of big blocks the list encompasses

convert

public static SmallDocumentBlock[] convert(BlockWritable[] store,
                                           int size)
                                    throws java.io.IOException,
                                           java.lang.ArrayIndexOutOfBoundsException
Factory for creating SmallDocumentBlocks from DocumentBlocks

Parameters:
store - the original DocumentBlocks
size - the total document size
Returns:
an array of new SmallDocumentBlocks instances
Throws:
java.io.IOException - on errors reading from the DocumentBlocks
java.lang.ArrayIndexOutOfBoundsException - if, somehow, the store contains less data than size indicates

extract

public static java.util.List extract(ListManagedBlock[] blocks)
                              throws java.io.IOException
create a list of SmallDocumentBlock's from raw data

Parameters:
blocks - the raw data containing the SmallDocumentBlock data
Returns:
a List of SmallDocumentBlock's extracted from the input
Throws:
java.io.IOException

read

public static void read(BlockWritable[] blocks,
                        byte[] buffer,
                        int offset)
read data from an array of SmallDocumentBlocks

Parameters:
blocks - the blocks to read from
buffer - the buffer to write the data into
offset - the offset into the array of blocks to read from

calcSize

public static int calcSize(int size)
Calculate the storage size of a set of SmallDocumentBlocks

Parameters:
size - number of SmallDocumentBlocks
Returns:
total size

writeBlocks

public void writeBlocks(java.io.OutputStream stream)
                 throws java.io.IOException
Write the storage to an OutputStream

Specified by:
writeBlocks in interface BlockWritable
Parameters:
stream - the OutputStream to which the stored data should be written
Throws:
java.io.IOException - on problems writing to the specified stream

getData

public byte[] getData()
               throws java.io.IOException
Get the data from the block

Specified by:
getData in interface ListManagedBlock
Returns:
the block's data as a byte array
Throws:
java.io.IOException - if there is no data


Copyright 2008 The Apache Software Foundation or its licensors, as applicable.