introduced hashCode based object change detection that works (see vamsas.test.example...
[vamsas.git] / src / uk / ac / vamsas / test / simpleclient / ArchiveReports.java
index 94d06bf..766d6a2 100644 (file)
@@ -41,8 +41,10 @@ public class ArchiveReports {
       return false;
     }
     Entry[] pe = p.getEntry();
-    for (int i=0; i<pe.length; i++)
-      outstr.println(pe[i].getDate()+"\t'"+pe[i].getUser()+"'\t"+pe[i].getApp()+"\t'"+pe[i].getAction()+"'");
+    for (int i=0; i<pe.length; i++) {
+      outstr.print(pe[i].getDate()+"\t'"+pe[i].getUser()+"'\t"+pe[i].getApp()+"\t'"+pe[i].getAction()+"' ");
+      outputVobjectState(pe[i], outstr);
+    }
     return true;
   }
   public static boolean appDataEntryReport(AppData appD, VamsasArchiveReader archive, boolean cascade, PrintStream outstr) {
@@ -138,6 +140,7 @@ public class ArchiveReports {
             +((r.getId()!=null) ? r.getId():"<none>")
             +") contains "+(ds=r.getDataSetCount())+" DataSets, "
             + (tr=r.getTreeCount())+" Global trees\n");
+        outputVobjectState(r, outstr);
         if (cascade) {
           for (int j=0; j<ds; j++) {
             outstr.println("Dataset "+j);
@@ -153,9 +156,31 @@ public class ArchiveReports {
     }
     return false;
   }
+  public static void outputVobjectState(Vobject v, PrintStream outstr) {
+    outstr.print(" (Object is: ");
+    boolean comma=false;
+    if (v.is__stored_in_document()) {
+      outstr.print(" stored");
+      comma=true;
+    }
+    if (v.isNewInDocument()) {
+      if (comma)
+        outstr.print(",");
+      comma=true;
+      outstr.print(" new in document");
+    }
+    if (v.isUpdated()) {
+      if (comma)
+        outstr.print(",");
+      comma=true;
+      outstr.print(" updated since last read");
+    }
+    outstr.println(")");
+  }
   public static boolean datasetReport(DataSet ds, boolean cascade, PrintStream outstr) {
     if (cascade)
       reportProvenance(ds.getProvenance(), outstr);
+    outputVobjectState(ds, outstr);
     outstr.println("Dataset contains : "+ds.getSequenceCount()
         +" sequences, "+ds.getAlignmentCount()+" alignments and "+ds.getTreeCount()+" trees.");
     if (cascade)
@@ -167,6 +192,7 @@ public class ArchiveReports {
     if (al!=null && al.length>0) {
       for (int i=0; i<al.length; i++) {
         outstr.println("Alignment "+i+(al[i].isRegistered() ? " ("+al[i].getVorbaId()+")" : " (unregistered)"));
+        outputVobjectState(al[i], outstr);
         if (cascade)
           reportProvenance(al[i].getProvenance(), outstr);
         outstr.println("Involves "+al[i].getAlignmentSequenceCount()+" sequences, has "
@@ -180,7 +206,8 @@ public class ArchiveReports {
     return val;
   }
   public static boolean treeReport(Tree t, boolean cascade, PrintStream outstr) {
-    outstr.println("Tree: '"+t.getTitle()+"'");
+    outstr.print("Tree: '"+t.getTitle()+"' ");
+    outputVobjectState(t, outstr);
     return !cascade || reportProvenance(t.getProvenance(), outstr);
   }