Switched to using pure java Apache Zip implementation
[vamsas.git] / src / uk / ac / vamsas / client / simpleclient / VamsasArchive.java
index d8c64c3..c01ac26 100644 (file)
@@ -20,6 +20,7 @@ import java.util.jar.Manifest;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
+import uk.ac.vamsas.client.AppDataOutputStream;
 import uk.ac.vamsas.client.ClientHandle;
 import uk.ac.vamsas.client.IVorbaIdFactory;
 import uk.ac.vamsas.client.SessionHandle;
@@ -138,7 +139,7 @@ public class VamsasArchive {
   /**
    * Output stream for archived data
    */
-  JarOutputStream newarchive=null;
+  org.apache.tools.zip.ZipOutputStream newarchive=null;
   /**
    * JarEntries written to archive
    */
@@ -277,8 +278,12 @@ public class VamsasArchive {
    * @return true if entry was unique and was added.
    */
   private boolean addEntry(String entry) {
-    if (entries!=null)
+    if (entries==null)
       entries=new Hashtable();
+    if (log.isDebugEnabled())
+    {   
+      log.debug("validating '"+entry+"' in hash for "+this);
+    }
     if (entries.containsKey(entry))
       return false;
     entries.put(entry, new Integer(entries.size()));
@@ -291,7 +296,8 @@ public class VamsasArchive {
    * @throws IOException if entry name was invalid or a new entry could not be made on newarchive
    */
   private boolean addValidEntry(String entry) throws IOException {
-    JarEntry je = new JarEntry(entry);
+    org.apache.tools.zip.ZipEntry je = new org.apache.tools.zip.ZipEntry(entry);
+    // je.setExsetExtra(null);
     if (!addEntry(entry))
       return false;
     newarchive.flush();
@@ -307,7 +313,7 @@ public class VamsasArchive {
     
     if (!virginArchive) {
       makeBackup();
-      donotdeletebackup=false; // external reference has been made.
+      donotdeletebackup=true; // external reference has been made.
       return ((original!=null) ? originalBackup : null);
     }
     return null;
@@ -321,7 +327,7 @@ public class VamsasArchive {
     if (newarchive!=null) {
       try { 
         newarchive.closeEntry();
-        newarchive.putNextEntry(new JarEntry("deleted"));
+        newarchive.putNextEntry(new org.apache.tools.zip.ZipEntry("deleted"));
         newarchive.closeEntry();
         newarchive.close();
         
@@ -566,8 +572,8 @@ public class VamsasArchive {
     if (!rchive.lockFile()) 
       throw new IOException("Failed to get lock on file "+archive);
     // LATER: locked IO stream based access.
-    Manifest newmanifest = new Manifest();
-    newarchive = new JarOutputStream(rchive.fileLock.getBufferedOutputStream(true), newmanifest);  
+    // Manifest newmanifest = new Manifest();
+    newarchive = new org.apache.tools.zip.ZipOutputStream(rchive.fileLock.getBufferedOutputStream(true));// , newmanifest);  
     //newarchive = new JarOutputStream(new BufferedOutputStream(new java.io.FileOutputStream(archive)));  
     entries = new Hashtable();
   }