Class SmallDocumentBlock

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

public final class SmallDocumentBlock extends 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, 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 IOException, 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:
      IOException - on errors reading from the DocumentBlocks
      ArrayIndexOutOfBoundsException - if, somehow, the store contains less data than size indicates
    • extract

      public static List<SmallDocumentBlock> extract(POIFSBigBlockSize bigBlockSize, ListManagedBlock[] blocks) throws 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:
      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(OutputStream stream) throws 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:
      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:
      IOException - if there is no data
    • getBigBlockSize

      public POIFSBigBlockSize getBigBlockSize()