add encode(String), uncompressString(byte[])

This commit is contained in:
Taro L. Saito 2011-04-06 22:15:44 +09:00
parent 508b24805a
commit fd5cec5441
2 changed files with 50 additions and 12 deletions

View File

@ -24,6 +24,7 @@
//--------------------------------------
package org.xerial.snappy;
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
/**
@ -87,6 +88,20 @@ public class Snappy
return rawCompress(input, input.length * 8); // double use 8 bytes
}
public static byte[] compress(String s, String encoding) throws UnsupportedEncodingException, SnappyException {
byte[] data = s.getBytes(encoding);
return compress(data);
}
public static byte[] compress(String s) throws SnappyException {
try {
return compress(s, "UTF-8");
}
catch (UnsupportedEncodingException e) {
throw new IllegalStateException("UTF-8 encoder is not found");
}
}
/**
* Compress the input data and produce an output array
*
@ -120,7 +135,7 @@ public class Snappy
return result;
}
public static short[] uncompressShort(byte[] input) throws SnappyException {
public static short[] uncompressShortArray(byte[] input) throws SnappyException {
int uncompressedLength = Snappy.uncompressedLength(input, 0, input.length);
short[] result = new short[uncompressedLength / 2];
int byteSize = SnappyNative.rawUncompress(input, 0, input.length, result, 0);
@ -129,7 +144,7 @@ public class Snappy
return result;
}
public static char[] uncompressChar(byte[] input) throws SnappyException {
public static char[] uncompressCharArray(byte[] input) throws SnappyException {
int uncompressedLength = Snappy.uncompressedLength(input, 0, input.length);
char[] result = new char[uncompressedLength / 2];
int byteSize = SnappyNative.rawUncompress(input, 0, input.length, result, 0);
@ -138,7 +153,7 @@ public class Snappy
return result;
}
public static int[] uncompressInt(byte[] input) throws SnappyException {
public static int[] uncompressIntArray(byte[] input) throws SnappyException {
int uncompressedLength = Snappy.uncompressedLength(input, 0, input.length);
int[] result = new int[uncompressedLength / 4];
int byteSize = SnappyNative.rawUncompress(input, 0, input.length, result, 0);
@ -147,7 +162,7 @@ public class Snappy
return result;
}
public static float[] uncompressFloat(byte[] input) throws SnappyException {
public static float[] uncompressFloatArray(byte[] input) throws SnappyException {
int uncompressedLength = Snappy.uncompressedLength(input, 0, input.length);
float[] result = new float[uncompressedLength / 4];
int byteSize = SnappyNative.rawUncompress(input, 0, input.length, result, 0);
@ -156,7 +171,7 @@ public class Snappy
return result;
}
public static long[] uncompressLong(byte[] input) throws SnappyException {
public static long[] uncompressLongArray(byte[] input) throws SnappyException {
int uncompressedLength = Snappy.uncompressedLength(input, 0, input.length);
long[] result = new long[uncompressedLength / 8];
int byteSize = SnappyNative.rawUncompress(input, 0, input.length, result, 0);
@ -165,7 +180,7 @@ public class Snappy
return result;
}
public static double[] uncompressDouble(byte[] input) throws SnappyException {
public static double[] uncompressDoubleArray(byte[] input) throws SnappyException {
int uncompressedLength = Snappy.uncompressedLength(input, 0, input.length);
double[] result = new double[uncompressedLength / 8];
int byteSize = SnappyNative.rawUncompress(input, 0, input.length, result, 0);
@ -174,6 +189,21 @@ public class Snappy
return result;
}
public static String uncompressString(byte[] input, String encoding) throws SnappyException,
UnsupportedEncodingException {
byte[] uncompressed = uncompress(input);
return new String(uncompressed, encoding);
}
public static String uncompressString(byte[] input) throws SnappyException {
try {
return uncompressString(input, "UTF-8");
}
catch (UnsupportedEncodingException e) {
throw new IllegalStateException("UTF-8 decoder is not found");
}
}
/**
* Compress the content in the given input buffer. After the compression,
* you can retrieve the compressed data from the output buffer [pos() ...

View File

@ -230,7 +230,7 @@ public class SnappyTest
public void floatArray() throws Exception {
float[] data = new float[] { 1.0f, -0.3f, 1.3f, 234.4f, 34 };
byte[] compressed = Snappy.compress(data);
float[] result = Snappy.uncompressFloat(compressed);
float[] result = Snappy.uncompressFloatArray(compressed);
assertArrayEquals(data, result, 0.0f);
}
@ -238,7 +238,7 @@ public class SnappyTest
public void doubleArray() throws Exception {
double[] data = new double[] { 1.0, -0.3, 1.3, 234.4, 34 };
byte[] compressed = Snappy.compress(data);
double[] result = Snappy.uncompressDouble(compressed);
double[] result = Snappy.uncompressDoubleArray(compressed);
assertArrayEquals(data, result, 0.0f);
}
@ -246,7 +246,7 @@ public class SnappyTest
public void longArray() throws Exception {
long[] data = new long[] { 2, 3, 15, 4234, 43251531412342342L, 23423422342L };
byte[] compressed = Snappy.compress(data);
long[] result = Snappy.uncompressLong(compressed);
long[] result = Snappy.uncompressLongArray(compressed);
assertArrayEquals(data, result);
}
@ -254,7 +254,7 @@ public class SnappyTest
public void shortArray() throws Exception {
short[] data = new short[] { 432, -32267, 1, 3, 34, 43, 34, Short.MAX_VALUE, -1 };
byte[] compressed = Snappy.compress(data);
short[] result = Snappy.uncompressShort(compressed);
short[] result = Snappy.uncompressShortArray(compressed);
assertArrayEquals(data, result);
}
@ -262,7 +262,7 @@ public class SnappyTest
public void intArray() throws Exception {
int[] data = new int[] { 432, -32267, 1, 3, 34, 43, 34, Short.MAX_VALUE, -1, Integer.MAX_VALUE, 3424, 43 };
byte[] compressed = Snappy.compress(data);
int[] result = Snappy.uncompressInt(compressed);
int[] result = Snappy.uncompressIntArray(compressed);
assertArrayEquals(data, result);
}
@ -270,8 +270,16 @@ public class SnappyTest
public void charArray() throws Exception {
char[] data = new char[] { 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!' };
byte[] compressed = Snappy.compress(data);
char[] result = Snappy.uncompressChar(compressed);
char[] result = Snappy.uncompressCharArray(compressed);
assertArrayEquals(data, result);
}
@Test
public void string() throws Exception {
String s = "Hello Snappy! Snappy! Snappy!";
byte[] compressed = Snappy.compress(s);
String uncompressedString = Snappy.uncompressString(compressed);
assertEquals(s, uncompressedString);
}
}