From 588f173254f33a03834eb475f9b91a2135afe57c Mon Sep 17 00:00:00 2001 From: magenoxx Date: Wed, 8 Jun 2011 20:15:40 +0400 Subject: [PATCH] Utility class for configurable compressing objects. --- Mage.Common/src/mage/utils/CompressUtil.java | 58 ++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 Mage.Common/src/mage/utils/CompressUtil.java diff --git a/Mage.Common/src/mage/utils/CompressUtil.java b/Mage.Common/src/mage/utils/CompressUtil.java new file mode 100644 index 0000000000..a9f4e4fbfa --- /dev/null +++ b/Mage.Common/src/mage/utils/CompressUtil.java @@ -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(data); + } + return null; + } +}