org.h2.tools

## Class CompressTool

- java.lang.Object
- - 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

Methods
`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