org.h2.tools
Class CompressTool

java.lang.Object
  extended by org.h2.tools.CompressTool

public class CompressTool
extends java.lang.Object

A tool to losslessly compress data, and expand the compressed data again.


Method Summary
 byte[] compress(byte[] in, java.lang.String algorithm)
          Compressed the data using the specified algorithm.
 byte[] expand(byte[] in)
          Expands the compressed data.
static void expand(byte[] in, byte[] out, int outPos)
          INTERNAL
static int getCompressAlgorithm(java.lang.String algorithm)
          INTERNAL
static CompressTool getInstance()
          Get a new instance.
static int getVariableIntLength(int x)
          Get a variable size integer length using Rice coding.
static int readVariableInt(byte[] buff, int pos)
          Read a variable size integer using Rice coding.
static java.io.InputStream wrapInputStream(java.io.InputStream in, java.lang.String compressionAlgorithm, java.lang.String entryName)
          INTERNAL
static java.io.OutputStream wrapOutputStream(java.io.OutputStream out, java.lang.String compressionAlgorithm, java.lang.String entryName)
          INTERNAL
static int writeVariableInt(byte[] buff, int pos, int x)
          Write a variable size integer using Rice coding.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getInstance

public static CompressTool getInstance()
Get a new instance. Each instance uses a separate buffer, so multiple instances can be used concurrently. However each instance alone is not multithreading safe.

Returns:
a new instance

compress

public byte[] compress(byte[] in,
                       java.lang.String algorithm)
Compressed the data using the specified algorithm. If no algorithm is supplied, LZF is used

Parameters:
in - the byte array with the original data
algorithm - the algorithm (LZF, DEFLATE)
Returns:
the compressed data

expand

public byte[] expand(byte[] in)
Expands the compressed data.

Parameters:
in - the byte array with the compressed data
Returns:
the uncompressed data

expand

public static void expand(byte[] in,
                          byte[] out,
                          int outPos)
INTERNAL


readVariableInt

public static int readVariableInt(byte[] buff,
                                  int pos)
Read a variable size integer using Rice coding.

Parameters:
buff - the buffer
pos - the position
Returns:
the integer

writeVariableInt

public static int writeVariableInt(byte[] buff,
                                   int pos,
                                   int x)
Write a variable size integer using Rice coding. Negative values need 5 bytes.

Parameters:
buff - the buffer
pos - the position
x - the value
Returns:
the number of bytes written (0-5)

getVariableIntLength

public static int getVariableIntLength(int x)
Get a variable size integer length using Rice coding. Negative values need 5 bytes.

Parameters:
x - the value
Returns:
the number of bytes needed (0-5)

getCompressAlgorithm

public static int getCompressAlgorithm(java.lang.String algorithm)
INTERNAL


wrapOutputStream

public static java.io.OutputStream wrapOutputStream(java.io.OutputStream out,
                                                    java.lang.String compressionAlgorithm,
                                                    java.lang.String entryName)
INTERNAL


wrapInputStream

public static java.io.InputStream wrapInputStream(java.io.InputStream in,
                                                  java.lang.String compressionAlgorithm,
                                                  java.lang.String entryName)
INTERNAL