refactoring org to uk
[vamsas.git] / src / org / vamsas / test / simpleclient / ArchiveWriter.java
index cfba99b..f99f400 100644 (file)
@@ -11,13 +11,18 @@ import java.util.Vector;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.vamsas.client.simpleclient.VamsasArchive;
-import org.vamsas.client.simpleclient.VamsasArchiveReader;
-import org.vamsas.objects.core.ApplicationData;
-import org.vamsas.objects.core.Entry;
-import org.vamsas.objects.core.Provenance;
-import org.vamsas.objects.core.VAMSAS;
-import org.vamsas.objects.core.VamsasDocument;
+der;
+import uk.ac.vamsas.objects.core.Alignment;
+import uk.ac.vamsas.objects.core.ApplicationData;
+import uk.ac.vamsas.objects.core.Entry;
+import uk.ac.vamsas.objects.core.Instance;
+import uk.ac.vamsas.objects.core.Provenance;
+import uk.ac.vamsas.objects.core.VAMSAS;
+import uk.ac.vamsas.objects.core.VamsasDocument;
+import uk.ac.vamsas.objects.ut
+import uk.ac.vamsas.client.simpleclient.VamsasArchive;
+import uk.ac.vamsas.client.simpleclient.VamsasArchiveReader;
+ils.ProvenanceStuff;
 
 public class ArchiveWriter {
   
@@ -26,29 +31,8 @@ public class ArchiveWriter {
    * form is ArchiveWriter new/modified argive command list
    */
   
-  static Log log = LogFactory.getLog("org.vamsas.test.simpleclient.ArchiveWriter");
-  
-  /**
-   * @param action
-   *          text for action entry
-   * @return new Provenance entry for ArchiveWriter created docs.
-   * TODO: Verify and move to SimpleClient class for provenance handling
-   */
-  public static Entry newProvenanceEntry(String user, String action) { 
-    log.debug("Adding ProvenanceEntry("+user+","+action+")");
-    Entry e = new Entry();
-    e.setAction(action);
-    e.setUser(user);
-    e.setDate(new org.exolab.castor.types.Date(new Date()));
-    return e;
-  }
-  
-  public static Provenance newProvenance() {
-    Provenance list = new Provenance();
-    list.addEntry(newProvenanceEntry("ArchiveWriter", "Created new Vamsas Document"));
-    return list;
-  }
-  
+  static Log log = LogFactory.getLog(ArchiveWriter.class);
+    
   private static void mergeVecs(Object[] destvec, Object[] svec1, Object[] svec2) {
     int i;
     for (i=0; i<svec1.length; i++)
@@ -58,15 +42,16 @@ public class ArchiveWriter {
   }
   // Merge appDataReferences require transfer of jar entries, perhaps with a renaming of the entry.
   // Merge appDatas require eventually unique URNS
+  // TODO: merging global appdata from different documents where same app has written them causes conflict
   
-  public static Hashtable hashOfAppDatas(Hashtable ht, ApplicationData[] appdatas) {
+  public static Hashtable hashOfAppDatas(Hashtable ht, Instance[] appdatas) {
     if (ht==null)
       ht = new Hashtable();
     for (int i=0, j=appdatas.length; i<j; i++) {
       if (!ht.containsKey(appdatas[i].getUrn())) {
         Hashtable aphash = new Hashtable();
         ht.put(appdatas[i].getUrn(), aphash);
-        aphash.put(appdatas[i], appdatas[i].getAppDataChoice().getDataReference());
+        aphash.put(appdatas[i], appdatas[i].getDataReference());
       } else {
         // ensure urns and references are unique
         
@@ -79,13 +64,13 @@ public class ArchiveWriter {
   /**
    * safely copies an appData from one archive to another.
    * @param darc destination archive
-   * @param dest destination document object
+   * @param dest destination document Vobject
    * @param sarc source archive reader
    * @param entry application data to be copied from source archive
    */
   public static void addAppDataEntry(VamsasArchive darc, VamsasDocument dest,  VamsasArchiveReader sarc, ApplicationData entry) {
-    
-    // check uniqueness of entry.urn amongst dest.ApplicationData[].urn
+    // TODO: fix instances
+    // check uniqueness of instance's[] entry.urn amongst dest.ApplicationData[].getInstances[].urn 
     //  check uniqueness of entry.user[].urn amongst dest.ApplicationData[].user[].urn
     // check uniqueness of entry.user
     // entry.getAppDataChoice().getData() or getDataReference is unique
@@ -93,11 +78,11 @@ public class ArchiveWriter {
     for (int i=0, j=dest.getApplicationDataCount(); i<j; i++) {
       ApplicationData o = dest.getApplicationData()[i];
       // ensure new urn is really unique
-      String urn = entry.getUrn();
+      //String urn = entry.getUrn();
       int v = 1;
-      while (o.getUrn().equals(urn)) {
-        urn = entry.getUrn()+v++;      
-      }
+      //while (o.getUrn().equals(urn)) {
+      //  urn = entry.getUrn()+v++;      
+     // }
       // uniqueness of urn
       // check each user ApplicationData
       // uniqueness (again)
@@ -122,7 +107,7 @@ public class ArchiveWriter {
     /** TODO: LATER: should verify that all ids really are unique in newly merged document. If not then what ?
      *  investigate possibility of having an id translation between appDatas and the core document - 
      *  the mapping is stored when an external application performs a merge, but when the owning 
-     *  Application accesses the object, the vorba_id is updated to the new one when it writes its 
+     *  Application accesses the Vobject, the vorba_id is updated to the new one when it writes its 
      *  references in to its appdata again
      */
     if (source.getApplicationDataCount()>0) {
@@ -162,7 +147,7 @@ public class ArchiveWriter {
       VamsasArchive varc = new VamsasArchive(newarch, true);
       VamsasDocument docroot;
       docroot = new VamsasDocument();
-      docroot.setProvenance(newProvenance());
+      docroot.setProvenance(ProvenanceStuff.newProvenance("ArchiveWriter", "user", "Created new Vamsas Document"));
       while (++argpos<argv.length) {
         File archive = new File(argv[argpos]);
         InputStream istream;
@@ -181,7 +166,7 @@ public class ArchiveWriter {
               if ((istream = vdoc.getVamsasXmlStream())!=null) {
                 // make a new vamsas document from the vamsas.xml entry
                 VAMSAS root = VAMSAS.unmarshal(new InputStreamReader(istream)); // TODO: verify only one VAMSAS element per vamsas.xml entry.
-                docroot.getProvenance().addEntry(newProvenanceEntry("user", "added vamsas.xml from "+argv[argpos-1]));
+                docroot.getProvenance().addEntry(ProvenanceStuff.newProvenanceEntry("ArchiveWriter", "user", "added vamsas.xml from "+argv[argpos-1]));
                 docroot.addVAMSAS(root);
               }
           }