introducing Lock File based locking (for portability) - part implemented.
[vamsas.git] / src / org / vamsas / test / simpleclient / ArchiveWriter.java
index 1a9bae9..d6f8ee9 100644 (file)
@@ -13,8 +13,10 @@ 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.Alignment;
 import org.vamsas.objects.core.ApplicationData;
 import org.vamsas.objects.core.Entry;
+import org.vamsas.objects.core.Instance;
 import org.vamsas.objects.core.Provenance;
 import org.vamsas.objects.core.VAMSAS;
 import org.vamsas.objects.core.VamsasDocument;
@@ -38,8 +40,9 @@ 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++) {
@@ -64,8 +67,8 @@ public class ArchiveWriter {
    * @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
@@ -73,11 +76,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)
@@ -142,7 +145,7 @@ public class ArchiveWriter {
       VamsasArchive varc = new VamsasArchive(newarch, true);
       VamsasDocument docroot;
       docroot = new VamsasDocument();
-      docroot.setProvenance(ProvenanceStuff.newProvenance("ArchiveWriter", "Created new Vamsas Document"));
+      docroot.setProvenance(ProvenanceStuff.newProvenance("ArchiveWriter", "user", "Created new Vamsas Document"));
       while (++argpos<argv.length) {
         File archive = new File(argv[argpos]);
         InputStream istream;
@@ -161,7 +164,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(ProvenanceStuff.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);
               }
           }