org.apache.poi.poifs.storage
Class RawDataBlockList

java.lang.Object
  extended by org.apache.poi.poifs.storage.RawDataBlockList
All Implemented Interfaces:
BlockList

public class RawDataBlockList
extends java.lang.Object

A list of RawDataBlocks instances, and methods to manage the list


Constructor Summary
RawDataBlockList(java.io.InputStream stream, POIFSBigBlockSize bigBlockSize)
          Constructor RawDataBlockList
 
Method Summary
 int blockCount()
          Returns the count of the number of blocks
 ListManagedBlock[] fetchBlocks(int startBlock, int headerPropertiesStartBlock)
          get the blocks making up a particular stream in the list.
 ListManagedBlock get(int index)
          Internal method.
protected  int remainingBlocks()
          Returns the number of remaining blocks
 ListManagedBlock remove(int index)
          remove and return the specified block from the list
 void setBAT(BlockAllocationTableReader bat)
          set the associated BlockAllocationTable
protected  void setBlocks(ListManagedBlock[] blocks)
          provide blocks to manage
 void zap(int index)
          remove the specified block from the list
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RawDataBlockList

public RawDataBlockList(java.io.InputStream stream,
                        POIFSBigBlockSize bigBlockSize)
                 throws java.io.IOException
Constructor RawDataBlockList

Parameters:
stream - the InputStream from which the data will be read
bigBlockSize - The big block size, either 512 bytes or 4096 bytes
Throws:
java.io.IOException - on I/O errors, and if an incomplete block is read
Method Detail

setBlocks

protected void setBlocks(ListManagedBlock[] blocks)
provide blocks to manage

Parameters:
blocks - blocks to be managed

zap

public void zap(int index)
remove the specified block from the list

Specified by:
zap in interface BlockList
Parameters:
index - the index of the specified block; if the index is out of range, that's ok

get

@Internal
public ListManagedBlock get(int index)
Internal method. Gets, without sanity checks or removing.


remove

public ListManagedBlock remove(int index)
                        throws java.io.IOException
remove and return the specified block from the list

Specified by:
remove in interface BlockList
Parameters:
index - the index of the specified block
Returns:
the specified block
Throws:
java.io.IOException - if the index is out of range or has already been removed

fetchBlocks

public ListManagedBlock[] fetchBlocks(int startBlock,
                                      int headerPropertiesStartBlock)
                               throws java.io.IOException
get the blocks making up a particular stream in the list. The blocks are removed from the list.

Specified by:
fetchBlocks in interface BlockList
Parameters:
startBlock - the index of the first block in the stream
headerPropertiesStartBlock - the index of the first header block in the stream
Returns:
the stream as an array of correctly ordered blocks
Throws:
java.io.IOException - if blocks are missing

setBAT

public void setBAT(BlockAllocationTableReader bat)
            throws java.io.IOException
set the associated BlockAllocationTable

Specified by:
setBAT in interface BlockList
Parameters:
bat - the associated BlockAllocationTable
Throws:
java.io.IOException

blockCount

public int blockCount()
Returns the count of the number of blocks

Specified by:
blockCount in interface BlockList

remainingBlocks

protected int remainingBlocks()
Returns the number of remaining blocks