Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## net.sf.jasperreports.engine.util
Class JRSwapFile

    java.lang.Object
      net.sf.jasperreports.engine.util.JRSwapFile

Direct Known Subclasses:
  JRConcurrentSwapFile

    public class JRSwapFile

extends java.lang.Object

Swap file implementation that can be used as a disk cache for arbitrary binary data.

Fixed-size blocks are allocated inside the swap file when a caller wants to write data. The caller receives a handle to the allocated area based on which it can read the data or free the area.

The implementation is thread-safe. I/O operations are performed in synchronized blocks, only one thread would do a read or write at one moment.

Version:
  $Id: JRSwapFile.java 3717 2010-04-09 10:01:33Z teodord $
Author:
  Lucian Chirita (lucianc@users.sourceforge.net)

Nested Class Summary
`protected static class` | `JRSwapFile.LongQueue`
`static class` | `JRSwapFile.SwapHandle`

Field Summary
`protected java.io.RandomAccessFile` | `file`
`static java.lang.String` | `PROPERTY_DELETE_ON_EXIT` Property that instructs whether `deleteOnExit` is to be requested for swap files.

Constructor Summary
`JRSwapFile(java.lang.String directory, int blockSize, int minGrowCount)` Creates a swap file.

Method Summary
`void` | `dispose()` Closes and deletes the swap file.
`protected void` | `finalize()`
`void` | `free(JRSwapFile.SwapHandle handle)` Frees an allocated area.
`protected void` | `freeBlocks(long[] offsets)`
`protected void` | `read(byte[] data, int dataOffset, int dataLength, long fileOffset)`
`byte[]` | `read(JRSwapFile.SwapHandle handle, boolean free)` Reads all the data from an allocated area.
`protected long[]` | `reserveFreeBlocks(int blockCount)`
`JRSwapFile.SwapHandle` | `write(byte[] data)` Allocates an area in the swap file and writes data in it.
`protected void` | `write(byte[] data, int dataSize, int dataOffset, long fileOffset)`

Methods inherited from class java.lang.Object
`clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### PROPERTY_DELETE_ON_EXIT

    public static final java.lang.String PROPERTY_DELETE_ON_EXIT

  Property that instructs whether `deleteOnExit` is to be requested for swap files. Swap files are explicitly deleted on `dispose()` and garbage collection.

  See Also:
    Constant Field Values

### file

    protected final java.io.RandomAccessFile file

Constructor Detail

### JRSwapFile

    public JRSwapFile(java.lang.String directory,
                      int blockSize,
                      int minGrowCount)

  Creates a swap file. The file name is generated automatically.

  Parameters:
    `directory` - the directory where the file should be created.
    `blockSize` - the size of the blocks allocated by the swap file
    `minGrowCount` - the minimum number of blocks by which the swap file grows when full

Method Detail

### write

    public JRSwapFile.SwapHandle write(byte[] data)
                                throws java.io.IOException

  Allocates an area in the swap file and writes data in it.

  Parameters:
    `data` - the data for which to allocate an area in the file
  Returns:
    a handle to the allocated area
  Throws:
    `java.io.IOException`

### write

    protected void write(byte[] data,
                         int dataSize,
                         int dataOffset,
                         long fileOffset)
                  throws java.io.IOException

  Throws:
    `java.io.IOException`

### read

    public byte[] read(JRSwapFile.SwapHandle handle,
                       boolean free)
                throws java.io.IOException

  Reads all the data from an allocated area.

  Parameters:
    `handle` - the allocated area handle
    `free` - whether to free the area after reading
  Returns:
    the whole data saved in an allocated area
  Throws:
    `java.io.IOException`

### read

    protected void read(byte[] data,
                        int dataOffset,
                        int dataLength,
                        long fileOffset)
                 throws java.io.IOException

  Throws:
    `java.io.IOException`

### free

    public void free(JRSwapFile.SwapHandle handle)

  Frees an allocated area.

  Parameters:
    `handle` - the allocated area handle

### dispose

    public void dispose()

  Closes and deletes the swap file.

### finalize

    protected void finalize()
                     throws java.lang.Throwable

  Overrides:
    `finalize` in class `java.lang.Object`
  Throws:
    `java.lang.Throwable`

### reserveFreeBlocks

    protected long[] reserveFreeBlocks(int blockCount)
                                throws java.io.IOException

  Throws:
    `java.io.IOException`

### freeBlocks

    protected void freeBlocks(long[] offsets)

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

© 2001-2010 Jaspersoft Corporation www.jaspersoft.com