/* $RCSfile$ * $Author$ * $Date$ * $Revision$ * * Copyright (C) 2006 The Jmol Development Team * * Contact: jmol-developers@lists.sf.net * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. */ package javajs.util; import java.io.BufferedInputStream; import javajs.api.GenericZipTools; public class ZipData { boolean isEnabled = true; byte[] buf; int pt; int nBytes; public ZipData(int nBytes) { this.nBytes = nBytes; } public int addBytes(byte[] byteBuf, int nSectorBytes, int nBytesRemaining) { if (pt == 0) { if (!Rdr.isGzipB(byteBuf)) { isEnabled = false; return -1; } buf = new byte[nBytesRemaining]; } int nToAdd = Math.min(nSectorBytes, nBytesRemaining); System.arraycopy(byteBuf, 0, buf, pt, nToAdd); pt += nToAdd; return nBytesRemaining - nToAdd; } public void addTo(GenericZipTools jzt, SB data) { data.append(getGzippedBytesAsString(jzt, buf)); } static String getGzippedBytesAsString(GenericZipTools jzt, byte[] bytes) { try { BufferedInputStream bis = jzt.getUnGzippedInputStream(bytes); String s = ZipTools.getStreamAsString(bis); bis.close(); return s; } catch (Exception e) { return ""; } } }