mirror of
https://github.com/correl/mage.git
synced 2024-12-26 03:00:11 +00:00
Utility class for configurable compressing objects.
This commit is contained in:
parent
7ca04d4cf7
commit
588f173254
1 changed files with 58 additions and 0 deletions
58
Mage.Common/src/mage/utils/CompressUtil.java
Normal file
58
Mage.Common/src/mage/utils/CompressUtil.java
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
package mage.utils;
|
||||||
|
|
||||||
|
import mage.remote.traffic.ZippedObject;
|
||||||
|
import mage.remote.traffic.ZippedObjectImpl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helps to compress and decompress data if needed.
|
||||||
|
*
|
||||||
|
* @author ayrat
|
||||||
|
*/
|
||||||
|
public class CompressUtil {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defines should data be compressed or not. True by default.
|
||||||
|
* Read from system property:
|
||||||
|
*/
|
||||||
|
private static boolean compressData = true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defines the system property name to disable any compressing.
|
||||||
|
*/
|
||||||
|
private static final String NO_COMPRESS_DATA_PROPERTY = "nocompress";
|
||||||
|
|
||||||
|
static {
|
||||||
|
compressData = System.getProperty(NO_COMPRESS_DATA_PROPERTY) == null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hidden constructor
|
||||||
|
*/
|
||||||
|
private CompressUtil() {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decompress data, but only if it was compressed previously return original object otherwise.
|
||||||
|
*
|
||||||
|
* @param data Data to decompress
|
||||||
|
* @return Decompressed object
|
||||||
|
*/
|
||||||
|
public static Object decompress(Object data) {
|
||||||
|
if (data == null || !(data instanceof ZippedObject)) {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
return ((ZippedObject)data).unzip();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compress data.
|
||||||
|
*
|
||||||
|
* @param data Data to compress
|
||||||
|
* @return Compressed object
|
||||||
|
*/
|
||||||
|
public static Object compress(Object data) {
|
||||||
|
if (data != null && compressData) {
|
||||||
|
return new ZippedObjectImpl<Object>(data);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue