JAL-3026 moves javajs to srcjars
[jalview.git] / srcjar / javajs / util / ZipData.java
diff --git a/srcjar/javajs/util/ZipData.java b/srcjar/javajs/util/ZipData.java
new file mode 100644 (file)
index 0000000..f20715f
--- /dev/null
@@ -0,0 +1,76 @@
+/* $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 "";
+    }
+  }
+
+}
+