debugged VamsasArchive and rationalised debugging messages.
[vamsas.git] / src / org / vamsas / test / simpleclient / VamsasArchive.java
index 91dc35e..c023a24 100644 (file)
@@ -1,15 +1,11 @@
 package org.vamsas.test.simpleclient;
 
-import java.io.BufferedInputStream;
 import java.io.File;
-import java.io.InputStream;
-import java.io.InputStreamReader;
 import java.io.ObjectOutputStream;
-import java.io.PrintWriter;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.vamsas.client.simpleclient.*;
+import org.vamsas.client.simpleclient.VamsasArchiveReader;
 import org.vamsas.objects.core.ApplicationData;
 import org.vamsas.objects.core.User;
 import org.vamsas.objects.core.VAMSAS;
@@ -50,7 +46,9 @@ public class VamsasArchive {
       else 
         log.info(av+" has been backed up as "+backup);
       if (backup!=null) {
-        log.info("Backup "+backup+" is being written to.");
+        File newf=new File(av.getAbsolutePath()+"_new.zip");
+        log.info("Now writing new Archive "+newf.getAbsolutePath());
+        org.vamsas.client.simpleclient.VamsasArchive va = new org.vamsas.client.simpleclient.VamsasArchive(newf, true);
         // open another and...
         ApplicationData appdata = new ApplicationData();
         appdata.setName("org.vamsas.test.simpleclient.VamsasArchive");
@@ -61,15 +59,10 @@ public class VamsasArchive {
         String appdata_ref = "vamsas:org.vamsas.test.simpleclient.VamsasArchive/"+apuser.getOrganization()+"/"+apuser.getFullname();
 
         
-        File newf=new File(av.getAbsolutePath()+"_new.zip");
-        org.vamsas.client.simpleclient.VamsasArchive va = new org.vamsas.client.simpleclient.VamsasArchive(newf, true);
-        log.info("Getting the document from the backup-original.");
-        VamsasDocument vadoc;
         VamsasArchiveReader vread = va.getOriginalArchiveReader();
         
-        vadoc = doc; // putting original data into new archive.
-        log.info("Got document. Adding stuff.");
         if (vread!=null) {
+          log.info("Reading (and avoiding references to) original data in "+newf);
           if (vread.getAppdataStream(appdata_ref)!=null) {
             int i=0;
             while (vread.getAppdataStream(appdata_ref+"/"+Integer.toString(++i))!=null)
@@ -77,12 +70,13 @@ public class VamsasArchive {
             appdata_ref+="/"+Integer.toString(i);
           }
         }
+        
+        log.info("Adding new data stuff.");
         log.info("Writing an apdata reference using AppDataStream interface.");
         apuser.setDataReference(appdata_ref);
         appdata.addUser(apuser);
         appdata.setVersion("noggin");
         appdata.setUrn("program:/the.nog/");
-        // TODO: FIX schema - User.addUser is unsatisfiable!
         ObjectOutputStream apdos = new ObjectOutputStream(va.getAppDataStream(appdata_ref));
         apdos.writeObject(appdata_ref);
         apdos.writeObject(apuser); // some random content
@@ -91,7 +85,7 @@ public class VamsasArchive {
         log.info("Preparing to write new document.");
         doc.addApplicationData(appdata);
         doc.addVAMSAS(Core.getDemoVamsas());
-        
+        // TODO: ensure all jar entries are transferred over (at least those that are referenced - make a flag for 'tidy zip manifest'.
         va.putVamsasDocument(doc); // gets stream and puts it.
         // TODO: verify that the vxml stream close method overridden ?
         va.closeArchive();
@@ -99,6 +93,8 @@ public class VamsasArchive {
         log.info("Dump of new vamsas document :");
         va = new org.vamsas.client.simpleclient.VamsasArchive(newf, true); // TODO - refactor Reader class to have deserializing helpers
         ArchiveReports.reportDocument(va.getVamsasDocument(), va.getOriginalArchiveReader(), true);
+        log.info("Cancelling write (which was necessary to dump new vamsas document!)");
+        va.cancelArchive();
         // backup.delete(); // tidy up
       }
       log.info("Now Cancelling write to original archive "+av);