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 Details

  • Method Details

    • convert

      public static SmallDocumentBlock[] convert​(POIFSBigBlockSize bigBlockSize, 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​(POIFSBigBlockSize bigBlockSize, java.util.List<SmallDocumentBlock> 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​(POIFSBigBlockSize bigBlockSize, 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<SmallDocumentBlock> extract​(POIFSBigBlockSize bigBlockSize, 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
    • getDataInputBlock

      public static DataInputBlock getDataInputBlock​(SmallDocumentBlock[] blocks, int offset)
    • 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.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()
      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
    • getBigBlockSize

      public POIFSBigBlockSize getBigBlockSize()