package it.albertus.cycles.data; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.io.StreamCorruptedException; import java.util.Arrays; import java.util.zip.CRC32; import java.util.zip.Checksum; import java.util.zip.DataFormatException; import java.util.zip.Inflater; import javax.xml.bind.DatatypeConverter; import it.albertus.cycles.model.BikesInf; import it.albertus.cycles.resources.Messages; public class DefaultBikes { public static final int CRC = 0x28A33682; private static final byte[] DEFAULT = new byte[BikesInf.FILE_SIZE]; static { final Inflater inflater = new Inflater(); inflater.setInput(DatatypeConverter.parseBase64Binary("eNpjY1ihv8GsiPEdEwQmAaGMKgMDwwaGmQytDMUMqQyRkpQAGTCQhwBFZWUVZKAIA5L8rAxwgO6mMiAEu2kBQwfQRYkMYQx+qpQALSjQ1QcBIxNzBDCCAn1dDWUZEX4uVribLAxBbuJh5mEGuakLCJVUgBKTGGoYMhkiGfwYXPRJBI7IwBsLCIAAJBE3R3NdZRGoqwArb09n")); try { inflater.inflate(DEFAULT); } catch (final DataFormatException e) { throw new IllegalStateException(e); } finally { inflater.end(); } } public DefaultBikes() throws StreamCorruptedException { final Checksum crc = new CRC32(); crc.update(DEFAULT, 0, DEFAULT.length); if (crc.getValue() != CRC) { throw new StreamCorruptedException(Messages.get("err.original.file.corrupted.crc", BikesInf.FILE_NAME, String.format("%08X", CRC), String.format("%08X", crc.getValue()))); } if (DEFAULT.length != BikesInf.FILE_SIZE) { throw new StreamCorruptedException(Messages.get("err.original.file.corrupted.size", BikesInf.FILE_NAME, BikesInf.FILE_SIZE, DEFAULT.length)); } } public InputStream getInputStream() { return new ByteArrayInputStream(DEFAULT); } public byte[] getByteArray() { return Arrays.copyOf(DEFAULT, DEFAULT.length); } }