CompressorType.java |
1 /** 2 * Distribution License: 3 * JSword is free software; you can redistribute it and/or modify it under 4 * the terms of the GNU Lesser General Public License, version 2.1 or later 5 * as published by the Free Software Foundation. This program is distributed 6 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even 7 * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 8 * See the GNU Lesser General Public License for more details. 9 * 10 * The License is available on the internet at: 11 * http://www.gnu.org/copyleft/lgpl.html 12 * or by writing to: 13 * Free Software Foundation, Inc. 14 * 59 Temple Place - Suite 330 15 * Boston, MA 02111-1307, USA 16 * 17 * © CrossWire Bible Society, 2007 - 2016 18 * 19 */ 20 package org.crosswire.common.compress; 21 22 import java.io.ByteArrayInputStream; 23 24 /** 25 * An Enumeration of the possible Compressions. 26 * 27 * @see gnu.lgpl.License The GNU Lesser General Public License for details. 28 * @author DM Smith 29 */ 30 public enum CompressorType { 31 ZIP { 32 @Override 33 public Compressor getCompressor(byte[] input) { 34 return new Zip(new ByteArrayInputStream(input)); 35 } 36 }, 37 38 LZSS { 39 @Override 40 public Compressor getCompressor(byte[] input) { 41 return new LZSS(new ByteArrayInputStream(input)); 42 } 43 }, 44 45 BZIP2 { 46 @Override 47 public Compressor getCompressor(byte[] input) { 48 return new BZip2(new ByteArrayInputStream(input)); 49 } 50 }, 51 52 GZIP { 53 @Override 54 public Compressor getCompressor(byte[] input) { 55 return new Gzip(new ByteArrayInputStream(input)); 56 } 57 }, 58 59 XZ { 60 @Override 61 public Compressor getCompressor(byte[] input) { 62 return new XZ(new ByteArrayInputStream(input)); 63 } 64 }; 65 66 /** 67 * Get a compressor. 68 * 69 * @param input the stream to compress or to uncompress. 70 * @return the compressor for the stream 71 */ 72 public abstract Compressor getCompressor(byte[] input); 73 74 /** 75 * Get a CompressorType from a String 76 * 77 * @param name the case insensitive representation of the desired CompressorType 78 * @return the desired compressor or null if not found. 79 */ 80 public static CompressorType fromString(String name) { 81 for (CompressorType v : values()) { 82 if (v.name().equalsIgnoreCase(name)) { 83 return v; 84 } 85 } 86 87 // cannot get here 88 assert false; 89 return null; 90 } 91 } 92