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; /** * this class contains static methods for writing info to stdout about a vamsas document * Methods have a 'cascade' switch to indicate if sub-objects should have info printed on them. * Methods return true or false - indicating if the object was valid or not * TODO: LATER: propagate true/false return so that an invalid vamsas object invalidates the whole document * @author jimp * */ public class ArchiveReports { /** * print an informative summary on a VamsasDocument * @param document - the document itself * @param archive - document source archive for resolving any appData refs * @return */ public static boolean reportProvenance(Provenance p) { if (p==null) { System.out.println("No Provenance"); return false; } Entry[] pe = p.getEntry(); for (int i=0; i1) { 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; i0 && cascade) rootReport(document.getVAMSAS(), true); if (document.getApplicationDataCount()>0) { System.out.print("There are "+document.getApplicationDataCount()+" ApplicationData references.\n"); ApplicationData appd[] = document.getApplicationData(); for (int i=0,j=appd.length; i") +") contains "+(ds=r.getDataSetCount())+" DataSets, " + (tr=r.getTreeCount())+" Global trees\n"); if (cascade) { for (int j=0; j0) { for (int i=0; i