fixed the User element and the form of the ApplicationData dataType.xsd definition.
[vamsas.git] / src / org / vamsas / test / simpleclient / ArchiveReports.java
index 20c433b..998191f 100644 (file)
@@ -2,13 +2,16 @@ package org.vamsas.test.simpleclient;
 
 import java.io.InputStream;
 
+import org.vamsas.client.object;
 import org.vamsas.client.simpleclient.VamsasArchiveReader;
 import org.vamsas.objects.core.Alignment;
+import org.vamsas.objects.core.AppData;
 import org.vamsas.objects.core.ApplicationData;
 import org.vamsas.objects.core.DataSet;
 import org.vamsas.objects.core.Entry;
 import org.vamsas.objects.core.Provenance;
 import org.vamsas.objects.core.Tree;
+import org.vamsas.objects.core.User;
 import org.vamsas.objects.core.VAMSAS;
 import org.vamsas.objects.core.VamsasDocument;
 /**
@@ -36,11 +39,57 @@ public class ArchiveReports {
       System.out.println(pe[i].getDate()+"\t'"+pe[i].getUser()+"'\t"+pe[i].getAction());
     return true;
   }
+  public static boolean appDataEntryReport(AppData appD, VamsasArchiveReader archive, boolean cascade) {
+    if (appD!=null) {
+      boolean nulldata=false;
+      if (appD.getDataReference()!=null) {
+        String appData=appD.getDataReference();
+        if (appData==null) { System.out.println("Empty DataReference - not valid ?"); } 
+        else 
+          if (appData.length()>1) {
+          System.out.print("a reference ("+appData+")");
+          InputStream jstrm;
+          if ((jstrm=archive.getAppdataStream(appData))!=null)
+            System.out.println(" which resolves to a JarEntry.");
+          else {
+            System.out.println(" which does not resolve to a JarEntry.");
+            System.err.println("Unresolved appdata reference '"+appData+"'");
+          }
+        } else {
+          nulldata=true;
+        }
+      } else {
+        if (appD.getData()==null)
+          nulldata &= true;
+          else
+          System.out.println("an embedded chunk of "+appD.getData().length+" bytes.");
+      }
+      if (nulldata)
+        System.out.println("Null AppData reference/data chunk.");
+    }
+    return true;
+  }
+  
+  public static boolean appDataReport(ApplicationData appD, VamsasArchiveReader archive, boolean cascade) {
+    if (appD!=null) {
+      // Report on root appData
+      appDataEntryReport(appD, archive, cascade);
+      if (appD.getUserCount()>0) {
+        User users[] = appD.getUser();
+        for (int i=0,j=users.length; i<j; i++) {
+          System.out.println("Data for User '"+users[i].getFullname()+"' of '"+users[i].getOrganization()+"'");
+          appDataEntryReport(users[i], archive, cascade);
+        }
+      }
+    }
+
+    return true;
+  }
   public static boolean reportDocument(VamsasDocument document, VamsasArchiveReader archive, boolean cascade) {
     if (document!=null) {
       System.out.println("Vamsas Document version '"+document.getVersion()+"'");
       reportProvenance(document.getProvenance());
-      System.out.print("Document contains "+document.getVAMSASCount()+" VAMSAS Elements and "+document.getApplicationDataCount()+" elements.\n");
+      System.out.print("Document contains "+document.getVAMSASCount()+" VAMSAS Elements and "+document.getApplicationDataCount()+" Application data elements.\n");
       if (document.getVAMSASCount()>0 && cascade)
         rootReport(document.getVAMSAS(), true);
       if (document.getApplicationDataCount()>0) {
@@ -48,24 +97,8 @@ public class ArchiveReports {
         ApplicationData appd[] = document.getApplicationData();
         for (int i=0,j=appd.length; i<j; i++) {
           System.out.print("Application "+i+": '"+appd[i].getName()+"'\nVersion '"+appd[i].getVersion()+"'\nURN: '"+appd[i].getUrn()+"'\n");
-          System.out.print("AppData is ");
-          if (appd[i].getAppDataChoice().getDataReference()!=null) {
-            String appData=appd[i].getAppDataChoice().getDataReference();
-            if (appData.length()>1) {
-              System.out.print("a reference ("+appData+")");
-              InputStream jstrm;
-              if ((jstrm=archive.getAppdataStream(appData))!=null)
-                System.out.println(" which resolves to a JarEntry.");
-              else {
-                System.out.println(" which does not resolve to a JarEntry.");
-                System.err.println("Unresolved appdata reference '"+appData+"'");
-              }
-            } else {
-              System.out.println("an empty reference.");
-            }
-          } else {
-            System.out.println("an embedded chunk of "+appd[i].getAppDataChoice().getData().length+" bytes.");
-          }
+          System.out.print("AppData is :");
+          appDataReport(appd[i], archive, cascade);
         }
           
       }