Class SmallDocumentBlock
java.lang.Object
org.docx4j.org.apache.poi.poifs.storage.SmallDocumentBlock
- All Implemented Interfaces:
BlockWritable,ListManagedBlock
public final class SmallDocumentBlock extends java.lang.Object implements BlockWritable, ListManagedBlock
Storage for documents that are too small to use regular
DocumentBlocks for their data
-
Constructor Summary
Constructors Modifier Constructor Description protectedSmallDocumentBlock(POIFSBigBlockSize bigBlockSize) -
Method Summary
Modifier and Type Method Description static intcalcSize(int size)Calculate the storage size of a set of SmallDocumentBlocksstatic SmallDocumentBlock[]convert(POIFSBigBlockSize bigBlockSize, byte[] array, int size)convert a single long array into an array of SmallDocumentBlock instancesstatic SmallDocumentBlock[]convert(POIFSBigBlockSize bigBlockSize, BlockWritable[] store, int size)Factory for creating SmallDocumentBlocks from DocumentBlocksstatic java.util.List<SmallDocumentBlock>extract(POIFSBigBlockSize bigBlockSize, ListManagedBlock[] blocks)create a list of SmallDocumentBlock's from raw datastatic intfill(POIFSBigBlockSize bigBlockSize, java.util.List<SmallDocumentBlock> blocks)fill out a List of SmallDocumentBlocks so that it fully occupies a set of big blocksPOIFSBigBlockSizegetBigBlockSize()byte[]getData()Get the data from the blockstatic DataInputBlockgetDataInputBlock(SmallDocumentBlock[] blocks, int offset)protected intgetSmallBlocksPerBigBlock()voidwriteBlocks(java.io.OutputStream stream)Write the storage to an OutputStream
-
Constructor Details
-
Method Details
-
convert
convert a single long array into an array of SmallDocumentBlock instances- Parameters:
array- the byte array to be convertedsize- the intended size of the array (which may be smaller)- Returns:
- an array of SmallDocumentBlock instances, filled from the array
-
fill
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(POIFSBigBlockSize bigBlockSize, BlockWritable[] store, int size) throws java.io.IOException, java.lang.ArrayIndexOutOfBoundsExceptionFactory for creating SmallDocumentBlocks from DocumentBlocks- Parameters:
store- the original DocumentBlockssize- the total document size- Returns:
- an array of new SmallDocumentBlocks instances
- Throws:
java.io.IOException- on errors reading from the DocumentBlocksjava.lang.ArrayIndexOutOfBoundsException- if, somehow, the store contains less data than size indicates
-
extract
public static java.util.List<SmallDocumentBlock> extract(POIFSBigBlockSize bigBlockSize, ListManagedBlock[] blocks) throws java.io.IOExceptioncreate 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
-
getDataInputBlock
-
calcSize
public static int calcSize(int size)Calculate the storage size of a set of SmallDocumentBlocks- Parameters:
size- number of SmallDocumentBlocks- Returns:
- total size
-
getSmallBlocksPerBigBlock
protected int getSmallBlocksPerBigBlock() -
writeBlocks
public void writeBlocks(java.io.OutputStream stream) throws java.io.IOExceptionWrite the storage to an OutputStream- Specified by:
writeBlocksin interfaceBlockWritable- 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()Get the data from the block- Specified by:
getDatain interfaceListManagedBlock- Returns:
- the block's data as a byte array
- Throws:
java.io.IOException- if there is no data
-
getBigBlockSize
-