Class BlockStore

java.lang.Object
org.docx4j.org.apache.poi.poifs.filesystem.BlockStore
Direct Known Subclasses:
NPOIFSFileSystem, NPOIFSMiniStore

public abstract class BlockStore
extends java.lang.Object
This abstract class describes a way to read, store, chain and free a series of blocks (be they Big or Small ones)
  • Nested Class Summary

    Nested Classes 
    Modifier and Type Class Description
    protected class  BlockStore.ChainLoopDetector
    Used to detect if a chain has a loop in it, so we can bail out with an error rather than spinning away for ever...
  • Constructor Summary

    Constructors 
    Constructor Description
    BlockStore()  
  • Method Summary

    Modifier and Type Method Description
    protected abstract java.nio.ByteBuffer createBlockIfNeeded​(int offset)
    Extends the file if required to hold blocks up to the specified offset, and return the block from there.
    protected abstract BATBlock.BATBlockAndIndex getBATBlockAndIndex​(int offset)
    Returns the BATBlock that handles the specified offset, and the relative index within it
    protected abstract java.nio.ByteBuffer getBlockAt​(int offset)
    Load the block at the given offset.
    protected abstract int getBlockStoreBlockSize()
    Returns the size of the blocks managed through the block store.
    protected abstract BlockStore.ChainLoopDetector getChainLoopDetector()
    Creates a Detector for loops in the chain
    protected abstract int getFreeBlock()
    Finds a free block, and returns its offset.
    protected abstract int getNextBlock​(int offset)
    Works out what block follows the specified one.
    protected abstract void setNextBlock​(int offset, int nextBlock)
    Changes the record of what block follows the specified one.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

  • Method Details

    • getBlockStoreBlockSize

      protected abstract int getBlockStoreBlockSize()
      Returns the size of the blocks managed through the block store.
    • getBlockAt

      protected abstract java.nio.ByteBuffer getBlockAt​(int offset) throws java.io.IOException
      Load the block at the given offset.
      Throws:
      java.io.IOException
    • createBlockIfNeeded

      protected abstract java.nio.ByteBuffer createBlockIfNeeded​(int offset) throws java.io.IOException
      Extends the file if required to hold blocks up to the specified offset, and return the block from there.
      Throws:
      java.io.IOException
    • getBATBlockAndIndex

      protected abstract BATBlock.BATBlockAndIndex getBATBlockAndIndex​(int offset)
      Returns the BATBlock that handles the specified offset, and the relative index within it
    • getNextBlock

      protected abstract int getNextBlock​(int offset)
      Works out what block follows the specified one.
    • setNextBlock

      protected abstract void setNextBlock​(int offset, int nextBlock)
      Changes the record of what block follows the specified one.
    • getFreeBlock

      protected abstract int getFreeBlock() throws java.io.IOException
      Finds a free block, and returns its offset. This method will extend the file/stream if needed, and if doing so, allocate new FAT blocks to address the extra space.
      Throws:
      java.io.IOException
    • getChainLoopDetector

      protected abstract BlockStore.ChainLoopDetector getChainLoopDetector() throws java.io.IOException
      Creates a Detector for loops in the chain
      Throws:
      java.io.IOException