package mage.utils; import mage.remote.traffic.ZippedObject; import mage.remote.traffic.ZippedObjectImpl; /** * Helps to compress and decompress data if needed. * * @author ayrat */ public final 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; } }