applied LGPLv3 and source code formatting.
[vamsas.git] / src / uk / ac / vamsas / test / simpleclient / VamsasArchive.java
index 175c2bc..fe83f66 100644 (file)
-package uk.ac.vamsas.test.simpleclient;
-
-import java.io.File;
-import java.io.ObjectOutputStream;
-import java.io.RandomAccessFile;
-import java.util.jar.JarFile;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import uk.ac.vamsas.client.simpleclient.Lock;
-import uk.ac.vamsas.client.simpleclient.SessionFile;
-import uk.ac.vamsas.client.simpleclient.SimpleDocument;
-import uk.ac.vamsas.client.simpleclient.VamsasArchiveReader;
-import uk.ac.vamsas.client.simpleclient.VamsasFile;
-import uk.ac.vamsas.objects.core.ApplicationData;
-import uk.ac.vamsas.objects.core.User;
-import uk.ac.vamsas.objects.core.VAMSAS;
-import uk.ac.vamsas.objects.core.VamsasDocument;
-import uk.ac.vamsas.test.objects.Core;
-
-public class VamsasArchive {
-  /**
-   * test the org.vamsas.simpleclient.vamsasArchive class
-   */
-  static Log log = LogFactory.getLog(VamsasArchive.class);
-  public static ApplicationData makeDemoAppdata(uk.ac.vamsas.client.simpleclient.VamsasArchive va, String apname, String userName, String userOrg) {
-    if (va==null)
-      return null;
-    VamsasArchiveReader vread=null;
-    try {
-      vread = va.getOriginalArchiveReader();
-    }
-    catch (Exception e) {
-      log.error("Failed to get original archive reader!",e);
-      return null;
-    }
-    ApplicationData appdata = new ApplicationData();
-    appdata.setName("uk.ac.vamsas.test.simpleclient.VamsasArchive");
-    appdata.setData(new String("this is some test data.").getBytes());
-    User apuser = new User();
-    apuser.setFullname(userName);
-    apuser.setOrganization(userOrg);
-    String appdata_ref = "vamsas:"+apname+"/"+apuser.getOrganization()+"/"+apuser.getFullname();
-    SimpleDocument sdoc = new SimpleDocument("test.simpleclient.VamsasArchive");
-    if (vread!=null) {
-      VamsasDocument orignalnew;
-      try {
-        orignalnew = sdoc.getVamsasDocument(vread);
-        log.info("*** Dump follows ***");
-        
-        ArchiveReports.reportDocument(orignalnew, vread, false, System.out);
-        log.info("*** Dump precedes ***");
-      } catch (Exception e) {
-        log.info("makeDemoAppdata: Problems accessing original document");
-      }
-      
-      log.info("Reading (and avoiding references to) original data");
-      if (vread.getAppdataStream(appdata_ref)!=null) {
-        // transfer over
-        try {
-          va.transferAppDataEntry(appdata_ref);
-        } catch (Exception e) {
-          log.warn("Exception when transferring appdata reference : "+appdata_ref, e);
-        }
-        int i=0;
-        while (vread.getAppdataStream(appdata_ref+"/"+Integer.toString(++i))!=null) {
-          try {
-            // copy over another duplicate.
-            va.transferAppDataEntry(appdata_ref+"/"+Integer.toString(i));
-          } catch (Exception e) {
-            log.warn("Exception when transferring appdata reference : "+appdata_ref, e);
-          }
-        }
-        // this one must be unique!
-        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");
-    //TODO: write instance appdata  appdata.setUrn("program:/the.nog/");
-    try {
-      ObjectOutputStream ost = new ObjectOutputStream(va.getAppDataStream(appdata_ref));
-      ost.writeObject(appdata);
-      ost.close();
-    } catch (Exception e) {
-      log.warn("Couldn't write appdata reference "+appdata_ref);
-    }
-    return appdata;
-  }
-  public static void main(String args[]) {
-    
-    try {
-      File av;
-      if (args.length>0)
-        av = new File(args[0]);
-      else
-        av = new File("test/vamsas.zip");
-      try {
-        RandomAccessFile raf = new RandomAccessFile(av, "r");
-        raf.readByte();
-        raf.close();
-      } catch (Exception f)
-      {
-        log.info("Couldn't random access file archive "+av, f);
-      }
-      try {
-       JarFile jf = new JarFile(av, true, JarFile.OPEN_READ);
-        if (jf.getEntry("vamsasDocument.xml")!=null)
-        {
-          log.info("Valid archive (sun) "+av);
-        }
-        jf.close();
-      } catch (Exception f)
-      {
-        log.warn("Couldn't access jar archive with sun jartools: "+av, f);
-      }
-      try {
-        org.apache.tools.zip.ZipFile jf = new org.apache.tools.zip.ZipFile(av);
-        if (jf.getEntry("vamsasDocument.xml")!=null)
-        {
-          log.info("Valid archive (apache) "+av);
-        }
-        jf.close();
-      } catch (Exception f)
-      {
-        log.warn("Couldn't access jar archive with apache ziptool: "+av,f);
-      }
-
-      log.info("Opening archive "+av);
-      uk.ac.vamsas.client.simpleclient.VamsasArchive varchive = new uk.ac.vamsas.client.simpleclient.VamsasArchive(av, true);
-      
-      VAMSAS[] roots = (VAMSAS[]) varchive.getOriginalRoots();
-      
-      if (roots!=null) {
-        log.info("Report on Original roots in archive:");
-        ArchiveReports.rootReport(roots, true, System.out);
-      }
-      log.info("Getting current vamsas document.");
-      VamsasDocument doc = varchive.getVamsasDocument();
-      ArchiveReports.reportDocument(doc, varchive.getOriginalArchiveReader(), true, System.out); // not modified document so references will still be valid
-      // do some stuff
-      log.info("Retrieving backup");
-      File backup = varchive.backupFile();
-      if (backup==null)
-        log.info(av+" is a New Archive.");
-      else 
-        log.info(av+" has been backed up as "+backup);
-      File newf=new File(av.getAbsolutePath()+"_new.zip");
-      VamsasFile sfile = new VamsasFile(newf);
-      /* if (newf.exists()) {
-        int q=1;
-        do {
-          newf=new File(av.getAbsolutePath()+"_"+q+++"_new.zip");
-        }
-        while (newf.exists()); 
-      } */
-      if (newf.exists()) {
-        log.info("Removing existing "+newf);
-        newf.delete();
-      }
-        
-      log.info("Now writing new Archive into "+newf.getAbsolutePath());
-      uk.ac.vamsas.client.simpleclient.VamsasArchive va=null;
-      { // hold lock over deletion and write of new archive.
-        //Lock wlock = sfile.getLock();
-        //newf.delete(); // clear out old file.
-        sfile.getLock();
-        va = new uk.ac.vamsas.client.simpleclient.VamsasArchive(newf, true, true, sfile);
-        // open another and...
-        ApplicationData appdata = makeDemoAppdata(va, 
-            "uk.ac.vamsas.test.simpleclient.VamsasArchive", "arnold Bugger esq", "disOrganised");
-        log.info("Preparing to write new document.");
-        doc.addApplicationData(appdata);
-        doc.addVAMSAS(Core.getDemoVamsas());
-        va.putVamsasDocument(doc); // gets stream and puts it.
-        va.closeArchive();
-        sfile.unLock();
-      }
-      log.info("Dump of new vamsas document :");
-      log.info("Testing update: ");
-      {
-        Lock lock=sfile.getLock();
-        if (lock==null)
-          while ((lock=sfile.getLock())==null) {
-            log.info("Waiting for lock.");
-            Thread.sleep(100);
-          }
-        VamsasArchiveReader vreader = new VamsasArchiveReader(sfile.getVamsasFile());// lock); // cannot do new JarFile on a locked file. // newf);
-        SimpleDocument sdoc = new SimpleDocument("testing new vamsas write");
-        ArchiveReports.reportDocument(sdoc.getVamsasDocument(vreader), vreader, true, System.out);
-        sfile.unLock();
-      }
-      // backup.delete(); // tidy up
-      
-      log.info("Now Cancelling write to original archive "+av);
-      if (varchive.cancelArchive())
-        log.info("Successfully cancelled.");
-      else
-        log.info("Didn't cancel.");
-      long t=System.currentTimeMillis()+200; while (t>System.currentTimeMillis());
-      log.info("Now testing archive update.");
-      va = new uk.ac.vamsas.client.simpleclient.VamsasArchive(newf, false, true, sfile);
-      doc = va.getVamsasDocument();
-      doc.addVAMSAS(Core.getDemoVamsas());
-      doc.addApplicationData(makeDemoAppdata(va, 
-          "uk.ac.vamsas.test.simpleclient.VamsasArchive", "another old Bugger esq", "rescinded"));
-      if (va.transferRemainingAppDatas())
-        log.info("Remain appdatas were transferred.");
-      else
-        log.warn("No appdatas were transferred. This is wrong.");
-      va.putVamsasDocument(doc);
-      va.closeArchive();
-      sfile.unLock();
-      log.info("Testing update: ");
-      {
-        Lock lock=sfile.getLock();
-        if (lock==null)
-          while ((lock=sfile.getLock())==null)
-            log.info("Waiting for lock.");
-        // VamsasArchiveReader vreader = new VamsasArchiveReader(lock);
-        VamsasArchiveReader vreader = new VamsasArchiveReader(newf);
-        
-        SimpleDocument sdoc = new SimpleDocument("testing vamsas update");
-        VamsasDocument finaldoc = sdoc.getVamsasDocument(vreader);
-        if (finaldoc!=null)
-          ArchiveReports.reportDocument(finaldoc, vreader, true, System.out);
-        else 
-          log.error("Null Document Read from "+newf);
-      }
-    } catch (Exception e) {
-      e.printStackTrace(System.err);
-    }
-  }
-}
+/*\r
+ * This file is part of the Vamsas Client version 0.1. \r
+ * Copyright 2009 by Jim Procter, Iain Milne, Pierre Marguerite, \r
+ *  Andrew Waterhouse and Dominik Lindner.\r
+ * \r
+ * Earlier versions have also been incorporated into Jalview version 2.4 \r
+ * since 2008, and TOPALi version 2 since 2007.\r
+ * \r
+ * The Vamsas Client is free software: you can redistribute it and/or modify\r
+ * it under the terms of the GNU Lesser General Public License as published by\r
+ * the Free Software Foundation, either version 3 of the License, or\r
+ * (at your option) any later version.\r
+ *  \r
+ * The Vamsas Client is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU Lesser General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU Lesser General Public License\r
+ * along with the Vamsas Client.  If not, see <http://www.gnu.org/licenses/>.\r
+ */\r
+package uk.ac.vamsas.test.simpleclient;\r
+\r
+import java.io.File;\r
+import java.io.ObjectOutputStream;\r
+import java.io.RandomAccessFile;\r
+import java.util.jar.JarFile;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+\r
+import uk.ac.vamsas.client.simpleclient.Lock;\r
+import uk.ac.vamsas.client.simpleclient.SessionFile;\r
+import uk.ac.vamsas.client.simpleclient.SimpleDocument;\r
+import uk.ac.vamsas.client.simpleclient.VamsasArchiveReader;\r
+import uk.ac.vamsas.client.simpleclient.VamsasFile;\r
+import uk.ac.vamsas.objects.core.ApplicationData;\r
+import uk.ac.vamsas.objects.core.User;\r
+import uk.ac.vamsas.objects.core.VAMSAS;\r
+import uk.ac.vamsas.objects.core.VamsasDocument;\r
+import uk.ac.vamsas.test.objects.Core;\r
+\r
+public class VamsasArchive {\r
+  /**\r
+   * test the org.vamsas.simpleclient.vamsasArchive class\r
+   */\r
+  static Log log = LogFactory.getLog(VamsasArchive.class);\r
+\r
+  public static ApplicationData makeDemoAppdata(\r
+      uk.ac.vamsas.client.simpleclient.VamsasArchive va, String apname,\r
+      String userName, String userOrg) {\r
+    if (va == null)\r
+      return null;\r
+    VamsasArchiveReader vread = null;\r
+    try {\r
+      vread = va.getOriginalArchiveReader();\r
+    } catch (Exception e) {\r
+      log.error("Failed to get original archive reader!", e);\r
+      return null;\r
+    }\r
+    ApplicationData appdata = new ApplicationData();\r
+    appdata.setName("uk.ac.vamsas.test.simpleclient.VamsasArchive");\r
+    appdata.setData(new String("this is some test data.").getBytes());\r
+    User apuser = new User();\r
+    apuser.setFullname(userName);\r
+    apuser.setOrganization(userOrg);\r
+    String appdata_ref = "vamsas:" + apname + "/" + apuser.getOrganization()\r
+        + "/" + apuser.getFullname();\r
+    SimpleDocument sdoc = new SimpleDocument("test.simpleclient.VamsasArchive");\r
+    if (vread != null) {\r
+      VamsasDocument orignalnew;\r
+      try {\r
+        orignalnew = sdoc.getVamsasDocument(vread);\r
+        log.info("*** Dump follows ***");\r
+\r
+        ArchiveReports.reportDocument(orignalnew, vread, false, System.out);\r
+        log.info("*** Dump precedes ***");\r
+      } catch (Exception e) {\r
+        log.info("makeDemoAppdata: Problems accessing original document");\r
+      }\r
+\r
+      log.info("Reading (and avoiding references to) original data");\r
+      if (vread.getAppdataStream(appdata_ref) != null) {\r
+        // transfer over\r
+        try {\r
+          va.transferAppDataEntry(appdata_ref);\r
+        } catch (Exception e) {\r
+          log.warn("Exception when transferring appdata reference : "\r
+              + appdata_ref, e);\r
+        }\r
+        int i = 0;\r
+        while (vread\r
+            .getAppdataStream(appdata_ref + "/" + Integer.toString(++i)) != null) {\r
+          try {\r
+            // copy over another duplicate.\r
+            va.transferAppDataEntry(appdata_ref + "/" + Integer.toString(i));\r
+          } catch (Exception e) {\r
+            log.warn("Exception when transferring appdata reference : "\r
+                + appdata_ref, e);\r
+          }\r
+        }\r
+        // this one must be unique!\r
+        appdata_ref += "/" + Integer.toString(i);\r
+      }\r
+    }\r
+\r
+    log.info("Adding new data stuff.");\r
+    log.info("Writing an apdata reference using AppDataStream interface.");\r
+    apuser.setDataReference(appdata_ref);\r
+    appdata.addUser(apuser);\r
+    appdata.setVersion("noggin");\r
+    // TODO: write instance appdata appdata.setUrn("program:/the.nog/");\r
+    try {\r
+      ObjectOutputStream ost = new ObjectOutputStream(va\r
+          .getAppDataStream(appdata_ref));\r
+      ost.writeObject(appdata);\r
+      ost.close();\r
+    } catch (Exception e) {\r
+      log.warn("Couldn't write appdata reference " + appdata_ref);\r
+    }\r
+    return appdata;\r
+  }\r
+\r
+  public static void main(String args[]) {\r
+\r
+    try {\r
+      File av;\r
+      if (args.length > 0)\r
+        av = new File(args[0]);\r
+      else\r
+        av = new File("test/vamsas.zip");\r
+      try {\r
+        RandomAccessFile raf = new RandomAccessFile(av, "r");\r
+        raf.readByte();\r
+        raf.close();\r
+      } catch (Exception f) {\r
+        log.info("Couldn't random access file archive " + av, f);\r
+      }\r
+      try {\r
+        JarFile jf = new JarFile(av, true, JarFile.OPEN_READ);\r
+        if (jf.getEntry("vamsasDocument.xml") != null) {\r
+          log.info("Valid archive (sun) " + av);\r
+        }\r
+        jf.close();\r
+      } catch (Exception f) {\r
+        log.warn("Couldn't access jar archive with sun jartools: " + av, f);\r
+      }\r
+      try {\r
+        org.apache.tools.zip.ZipFile jf = new org.apache.tools.zip.ZipFile(av);\r
+        if (jf.getEntry("vamsasDocument.xml") != null) {\r
+          log.info("Valid archive (apache) " + av);\r
+        }\r
+        jf.close();\r
+      } catch (Exception f) {\r
+        log.warn("Couldn't access jar archive with apache ziptool: " + av, f);\r
+      }\r
+\r
+      log.info("Opening archive " + av);\r
+      uk.ac.vamsas.client.simpleclient.VamsasArchive varchive = new uk.ac.vamsas.client.simpleclient.VamsasArchive(\r
+          av, true);\r
+\r
+      VAMSAS[] roots = (VAMSAS[]) varchive.getOriginalRoots();\r
+\r
+      if (roots != null) {\r
+        log.info("Report on Original roots in archive:");\r
+        ArchiveReports.rootReport(roots, true, System.out);\r
+      }\r
+      log.info("Getting current vamsas document.");\r
+      VamsasDocument doc = varchive.getVamsasDocument();\r
+      ArchiveReports.reportDocument(doc, varchive.getOriginalArchiveReader(),\r
+          true, System.out); // not modified document so references will still\r
+                             // be valid\r
+      // do some stuff\r
+      log.info("Retrieving backup");\r
+      File backup = varchive.backupFile();\r
+      if (backup == null)\r
+        log.info(av + " is a New Archive.");\r
+      else\r
+        log.info(av + " has been backed up as " + backup);\r
+      File newf = new File(av.getAbsolutePath() + "_new.zip");\r
+      VamsasFile sfile = new VamsasFile(newf);\r
+      /*\r
+       * if (newf.exists()) { int q=1; do { newf=new\r
+       * File(av.getAbsolutePath()+"_"+q+++"_new.zip"); } while (newf.exists());\r
+       * }\r
+       */\r
+      if (newf.exists()) {\r
+        log.info("Removing existing " + newf);\r
+        newf.delete();\r
+      }\r
+\r
+      log.info("Now writing new Archive into " + newf.getAbsolutePath());\r
+      uk.ac.vamsas.client.simpleclient.VamsasArchive va = null;\r
+      { // hold lock over deletion and write of new archive.\r
+        // Lock wlock = sfile.getLock();\r
+        // newf.delete(); // clear out old file.\r
+        sfile.getLock();\r
+        va = new uk.ac.vamsas.client.simpleclient.VamsasArchive(newf, true,\r
+            true, sfile);\r
+        // open another and...\r
+        ApplicationData appdata = makeDemoAppdata(va,\r
+            "uk.ac.vamsas.test.simpleclient.VamsasArchive",\r
+            "arnold Bugger esq", "disOrganised");\r
+        log.info("Preparing to write new document.");\r
+        doc.addApplicationData(appdata);\r
+        doc.addVAMSAS(Core.getDemoVamsas());\r
+        va.putVamsasDocument(doc); // gets stream and puts it.\r
+        va.closeArchive();\r
+        sfile.unLock();\r
+      }\r
+      log.info("Dump of new vamsas document :");\r
+      log.info("Testing update: ");\r
+      {\r
+        Lock lock = sfile.getLock();\r
+        if (lock == null)\r
+          while ((lock = sfile.getLock()) == null) {\r
+            log.info("Waiting for lock.");\r
+            Thread.sleep(100);\r
+          }\r
+        VamsasArchiveReader vreader = new VamsasArchiveReader(sfile\r
+            .getVamsasFile());// lock); // cannot do new JarFile on a locked\r
+                              // file. // newf);\r
+        SimpleDocument sdoc = new SimpleDocument("testing new vamsas write");\r
+        ArchiveReports.reportDocument(sdoc.getVamsasDocument(vreader), vreader,\r
+            true, System.out);\r
+        sfile.unLock();\r
+      }\r
+      // backup.delete(); // tidy up\r
+\r
+      log.info("Now Cancelling write to original archive " + av);\r
+      if (varchive.cancelArchive())\r
+        log.info("Successfully cancelled.");\r
+      else\r
+        log.info("Didn't cancel.");\r
+      long t = System.currentTimeMillis() + 200;\r
+      while (t > System.currentTimeMillis())\r
+        ;\r
+      log.info("Now testing archive update.");\r
+      va = new uk.ac.vamsas.client.simpleclient.VamsasArchive(newf, false,\r
+          true, sfile);\r
+      doc = va.getVamsasDocument();\r
+      doc.addVAMSAS(Core.getDemoVamsas());\r
+      doc.addApplicationData(makeDemoAppdata(va,\r
+          "uk.ac.vamsas.test.simpleclient.VamsasArchive",\r
+          "another old Bugger esq", "rescinded"));\r
+      if (va.transferRemainingAppDatas())\r
+        log.info("Remain appdatas were transferred.");\r
+      else\r
+        log.warn("No appdatas were transferred. This is wrong.");\r
+      va.putVamsasDocument(doc);\r
+      va.closeArchive();\r
+      sfile.unLock();\r
+      log.info("Testing update: ");\r
+      {\r
+        Lock lock = sfile.getLock();\r
+        if (lock == null)\r
+          while ((lock = sfile.getLock()) == null)\r
+            log.info("Waiting for lock.");\r
+        // VamsasArchiveReader vreader = new VamsasArchiveReader(lock);\r
+        VamsasArchiveReader vreader = new VamsasArchiveReader(newf);\r
+\r
+        SimpleDocument sdoc = new SimpleDocument("testing vamsas update");\r
+        VamsasDocument finaldoc = sdoc.getVamsasDocument(vreader);\r
+        if (finaldoc != null)\r
+          ArchiveReports.reportDocument(finaldoc, vreader, true, System.out);\r
+        else\r
+          log.error("Null Document Read from " + newf);\r
+      }\r
+    } catch (Exception e) {\r
+      e.printStackTrace(System.err);\r
+    }\r
+  }\r
+}\r