From 156b868f868ba0d3cbf61da2f327047508b3ea4d Mon Sep 17 00:00:00 2001 From: jprocter Date: Thu, 14 Dec 2006 18:42:43 +0000 Subject: [PATCH] refactoring org to uk git-svn-id: https://svn.lifesci.dundee.ac.uk/svn/repository/trunk@287 be28352e-c001-0410-b1a7-c7978e42abec --- .../vamsas/test/simpleclient/ArchiveClient.java | 293 ---------------- .../vamsas/test/simpleclient/ArchiveReader.java | 51 --- .../vamsas/test/simpleclient/ArchiveReports.java | 187 ---------- .../test/simpleclient/ArchiveStreamReader.java | 53 --- .../vamsas/test/simpleclient/ArchiveWatcher.java | 106 ------ .../vamsas/test/simpleclient/ArchiveWriter.java | 182 ---------- src/org/vamsas/test/simpleclient/ClientDoc.java | 356 -------------------- .../vamsas/test/simpleclient/ClientsFileTest.java | 311 ----------------- .../vamsas/test/simpleclient/CommandProcessor.java | 65 ---- .../vamsas/test/simpleclient/VamsasArchive.java | 206 ----------- 10 files changed, 1810 deletions(-) delete mode 100644 src/org/vamsas/test/simpleclient/ArchiveClient.java delete mode 100644 src/org/vamsas/test/simpleclient/ArchiveReader.java delete mode 100644 src/org/vamsas/test/simpleclient/ArchiveReports.java delete mode 100644 src/org/vamsas/test/simpleclient/ArchiveStreamReader.java delete mode 100644 src/org/vamsas/test/simpleclient/ArchiveWatcher.java delete mode 100644 src/org/vamsas/test/simpleclient/ArchiveWriter.java delete mode 100644 src/org/vamsas/test/simpleclient/ClientDoc.java delete mode 100644 src/org/vamsas/test/simpleclient/ClientsFileTest.java delete mode 100644 src/org/vamsas/test/simpleclient/CommandProcessor.java delete mode 100644 src/org/vamsas/test/simpleclient/VamsasArchive.java diff --git a/src/org/vamsas/test/simpleclient/ArchiveClient.java b/src/org/vamsas/test/simpleclient/ArchiveClient.java deleted file mode 100644 index dec872a..0000000 --- a/src/org/vamsas/test/simpleclient/ArchiveClient.java +++ /dev/null @@ -1,293 +0,0 @@ -/** - * - */ -package org.vamsas.test.simpleclient; - -import java.io.File; -import java.io.IOException; -import java.util.Date; -import java.util.Hashtable; -import java.util.Vector; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.exolab.castor.xml.MarshalException; -import org.exolab.castor.xml.ValidationException; -import org.vamsas.test.objects.Core; - -import uk.ac.vamsas.client.ClientHandle; -import uk.ac.vamsas.client.IVorbaIdFactory; -import uk.ac.vamsas.client.SessionHandle; -import uk.ac.vamsas.client.UserHandle; -import uk.ac.vamsas.client.Vobject; -import uk.ac.vamsas.client.VorbaId; -import uk.ac.vamsas.client.simpleclient.AppDataOutputStream; -import uk.ac.vamsas.client.simpleclient.FileWatcher; -import uk.ac.vamsas.client.simpleclient.IdFactory; -import uk.ac.vamsas.client.simpleclient.SessionFile; -import uk.ac.vamsas.client.simpleclient.SimpleDocBinding; -import uk.ac.vamsas.client.simpleclient.SimpleDocument; -import uk.ac.vamsas.client.simpleclient.VamsasArchive; -import uk.ac.vamsas.client.simpleclient.VamsasArchiveReader; -import uk.ac.vamsas.client.simpleclient.VamsasFile; -import uk.ac.vamsas.objects.core.AppData; -import uk.ac.vamsas.objects.core.ApplicationData; -import uk.ac.vamsas.objects.core.User; -import uk.ac.vamsas.objects.core.VamsasDocument; -import uk.ac.vamsas.objects.utils.AppDataReference; -import uk.ac.vamsas.objects.utils.DocumentStuff; -import uk.ac.vamsas.objects.utils.ProvenanceStuff; -import uk.ac.vamsas.objects.utils.SeqSet; -import uk.ac.vamsas.objects.utils.document.VersionEntries; - -/** - * @author jimp - * test the VamsasFile routines for watching, reading and updating a vamsas document jar file. - * simple document access base class. - */ -public class ArchiveClient extends IdFactory { - - private Log log = LogFactory.getLog(ArchiveClient.class); - // protected UserHandle user=null; - // protected ClientHandle me = new ClientHandle("ArchiveClient","0.01"); - VamsasFile vsess; - - /** - * @param user - * @param vsess - */ - public ArchiveClient(UserHandle user, VamsasFile vsess) { - super(new SessionHandle("vamsasfile://"+vsess.getVamsasFile()), new ClientHandle("ArchiveClient","0.01"), user); - this.vsess = vsess; - valid(); - } - private void _openVsess(File vsess) { - try { - this.vsess = new VamsasFile(vsess); - } - catch (Exception e) { - log.error("Couldn't open session for file "+vsess,e); - this.vsess = null; - } - } - public ArchiveClient(String username, String organization, File vsess) { - super(new SessionHandle("vamsasfile://"+vsess), new ClientHandle("ArchiveClient","0.01"), new UserHandle(username, organization)); - _openVsess(vsess); - valid(); - } - public ArchiveClient(String username, String organization, String clientName, String clientVersion, File vsess) { - super(new SessionHandle("vamsasfile://"+vsess), new ClientHandle(clientName, clientVersion), new UserHandle(username, organization)); - _openVsess(vsess); - valid(); - } - public void valid() { - if (vsess==null) - throw new Error("ArchiveClient instance is invalid!."); - } - /** - * set this to false if watch loop should end immediately - */ - protected boolean watchForChange=true; - public static int WATCH_SLEEP=300; - /** - * watch the document file for updates. - * @param time - length of time to watch for. - * @return read only IO interface for session document. - */ - public ClientDoc watch(long time) { - valid(); - vsess.unLock(); // doh. - FileWatcher watcher = new FileWatcher(vsess.getVamsasFile()); - // watcher.setState(); - watchForChange=true; - long endtime=System.currentTimeMillis()+time; - try { - uk.ac.vamsas.client.simpleclient.Lock doclock; - do { - doclock=watcher.getChangedState(); - if (doclock==null) - Thread.sleep(WATCH_SLEEP); - } while (watchForChange && doclock==null && (time==0 || endtime>System.currentTimeMillis())); // tuning. - if (doclock==null) - return null; - else { - return getUpdateable(vsess.getLock(doclock)); - /*VamsasArchiveReader varc = new VamsasArchiveReader(vsess.getVamsasFile()); - return _getReadonly(varc);*/ - } - } catch (Exception e) { - log.error("Whilst watching file "+vsess.getVamsasFile(), e); - } - return null; - } - - // from ClientDocument.getClientAppdata - private AppData[] getAppData(VamsasDocument doc) { - if (doc==null) { - log.debug("extractAppData called for null document object"); - return null; - } - AppData appsGlobal=null, usersData=null; - Vector apldataset = AppDataReference.getUserandApplicationsData( - doc, this.getUserHandle(), this.getClientHandle()); - if (apldataset!=null) { - if (apldataset.size()>0) { - AppData clientdat = (AppData) apldataset.get(0); - if (clientdat instanceof ApplicationData) { - appsGlobal = (ApplicationData) clientdat; - if (apldataset.size()>1) { - clientdat = (AppData) apldataset.get(1); - if (clientdat instanceof User) { - usersData = (User) clientdat; - } - if (apldataset.size()>2) - log.info("Ignoring additional ("+(apldataset.size()-2)+") AppDatas returned by document appdata query."); - } - } else { - log.warn("Unexpected entry in AppDataReference query: id="+clientdat.getVorbaId()+" type="+clientdat.getClass().getName()); - } - apldataset.removeAllElements(); // destroy references. - } - } - return new AppData[] { appsGlobal, usersData}; - } - - protected ClientDoc _getReadonly(VamsasArchiveReader vreader) throws IOException, ValidationException, MarshalException { - valid(); - if (vreader!=null) { - SimpleDocBinding docb = new SimpleDocBinding(); - docb.setVorba(this); - VamsasDocument d; - d = docb.getVamsasDocument(vreader); - - if (d!=null) { - ClientDoc creader = new ClientDoc(d, null, vreader, getClientHandle().getClientUrn(), getProvenanceUser(), getVorbaIdHash()); - return creader; - } - } - return null; - } - /** - * from SimpleClient - * @return user field for a provenance entry - */ - protected String getProvenanceUser() { - return new String(getUserHandle().getFullName()+" ["+getClientHandle().getClientUrn()+"]"); - } - - public ClientDoc getUpdateable() { - return getUpdateable(null); - } - public ClientDoc getUpdateable(uk.ac.vamsas.client.simpleclient.Lock lock) { - getVorbaIdHash().clear(); - valid(); - try { - // patiently wait for a lock on the document. - long tries=5000; - while (lock==null && ((lock=vsess.getLock())==null || !lock.isLocked()) && --tries>0) { -// Thread.sleep(1); - log.debug("Trying to get a document lock for the "+tries+"'th time."); - } - VamsasArchive varc = new VamsasArchive(vsess, true, false); // read archive, write as vamsasDocument, don't erase original contents. - varc.setVorba(this); - VamsasDocument d = varc.getVamsasDocument(getProvenanceUser(), "Created new document.", VersionEntries.latestVersion()); // VAMSAS: provenance user and client combined - - if (d==null) { - log.warn("Backing out from opening a VamsasArchive writable IO session"); - varc.cancelArchive(); - return null; - } - ClientDoc cdoc = new ClientDoc(d, varc, varc.getOriginalArchiveReader(), getClientHandle().getClientUrn(), getProvenanceUser(), getVorbaIdHash()); - return cdoc; - // do appHandle? - } catch (Exception e) { - log.error("Failed to get Updateable version of "+vsess.getVamsasFile(), e); - } - return null; - } - /** - * trust client to not do anything stupid to the document roots which will now be written to the archive. - * @param cdoc - * @return true if write was a success. - */ - public boolean doUpdate(ClientDoc cdoc) { - valid(); - if (cdoc==null) { - log.warn("Invalid ClientDoc passed to org.vamsas.test.simpleclient.doUpdate()"); - return false; - } - if (cdoc.iohandler==null) { - log.warn("Read only ClientDoc object passed to org.vamsas.test.simpleclient.doUpdate()"); - return false; - } - if (cdoc.iohandler.getVorba()!=this) { - log.error("Mismatch between ClientDoc instances and ArchiveClient instances!"); - return false; - } - try { - // do any appDatas first. - if (cdoc.iohandler.transferRemainingAppDatas()) - log.debug("Remaining appdatas were transfered."); - cdoc.updateDocumentRoots(); - cdoc.iohandler.putVamsasDocument(cdoc.doc); - cdoc.iohandler.closeArchive(); - this.extantids.clear();// we forget our ids after we close the document. - cdoc.iohandler=null; - cdoc = null; - vsess.unLock(); - } catch (Exception e) { - log.warn("While updating archive in "+vsess.getVamsasFile(),e); - return false; - } - return true; - } - /** - * @param args - */ - public static void usage() { - throw new Error("Usage: Username Organization VamsasFile [command,args]*"); - } - public static void main(String[] args) { - // really simple. - if (args.length<3) - usage(); - - ArchiveClient client = new ArchiveClient(args[0],args[1], new File(args[2])); - ClientDoc cdoc=null; - // sanity test. - try { - cdoc = client.getUpdateable(); - // ArchiveReports.reportDocument(cdoc.doc, cdoc.getReader(), true, System.out); - System.out.println("Report Roots :"); - ArchiveReports.rootReport(cdoc.getVamsasRoots(), true, System.out); - cdoc.addVamsasRoot(Core.getDemoVamsas()); - System.out.println("Doing update."); - client.doUpdate(cdoc); - cdoc.closeDoc(); - cdoc = null; - int u=5; - while (--u>0) { - System.out.println("Watch for more... ("+u+" left)"); - ClientDoc ucdoc = client.watch(0000); - if (ucdoc!=null) { - System.out.println("****\nUpdate detected at "+new Date()); - ArchiveReports.reportDocument(ucdoc.doc, ucdoc.getReader(), true, System.out); - ucdoc.closeDoc(); - ucdoc=null; - } else { - System.out.println("!!!! Null document update detected at "+new Date()); - } - } - } - catch (Exception e) { - client.log.error("Broken!", e); - } - System.out.println("Finished at "+new Date()); - } - public uk.ac.vamsas.client.Vobject getObject(VorbaId id) { - Hashtable idhash = this.getVorbaIdHash(); - if (idhash!=null && idhash.containsKey(id)) - return (Vobject) idhash.get(id); - return null; - } -} diff --git a/src/org/vamsas/test/simpleclient/ArchiveReader.java b/src/org/vamsas/test/simpleclient/ArchiveReader.java deleted file mode 100644 index 971bfa0..0000000 --- a/src/org/vamsas/test/simpleclient/ArchiveReader.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.vamsas.test.simpleclient; - -import java.io.BufferedInputStream; -import java.io.File; -import java.io.InputStream; -import java.io.InputStreamReader; - - -import uk.ac.vamsas.client.simpleclient.VamsasArchiveReader; -import uk.ac.vamsas.objects.core.VAMSAS; -import uk.ac.vamsas.objects.core.VamsasDocument; - -public class ArchiveReader { - /** - * tests VamsasArchiveReader archive reader on a vamsas jar file - * @param args - */ - public static void main(String args[]) { - - try { - File av = new File(args[0]); - VamsasArchiveReader var = new VamsasArchiveReader(av); - VAMSAS roots[]=null; - if (var.isValid()) { - InputStreamReader vdoc = new InputStreamReader(var.getVamsasDocumentStream()); - VamsasDocument doc = VamsasDocument.unmarshal(vdoc); - if (ArchiveReports.reportDocument(doc, var, true, System.out)) { - roots = doc.getVAMSAS(); - } - } else { - InputStream vxmlis = var.getVamsasXmlStream(); - - if (vxmlis!=null) { // Might be an old vamsas file. - BufferedInputStream ixml = new BufferedInputStream(var.getVamsasXmlStream()); - InputStreamReader vxml = new InputStreamReader(ixml); - VAMSAS root; - // unmarshal seems to always close the stream (should check this) - if ((root = VAMSAS.unmarshal(vxml))!=null) { - System.out.println("Read a root."); - roots = new VAMSAS[1]; - roots[0] = root; - } - } - } - if (!ArchiveReports.rootReport(roots, true, System.out)) - System.err.print(args[0]+" is not a valid vamsas archive."); - } catch (Exception e) { - e.printStackTrace(System.err); - } - } -} diff --git a/src/org/vamsas/test/simpleclient/ArchiveReports.java b/src/org/vamsas/test/simpleclient/ArchiveReports.java deleted file mode 100644 index a2a2dfe..0000000 --- a/src/org/vamsas/test/simpleclient/ArchiveReports.java +++ /dev/null @@ -1,187 +0,0 @@ -package org.vamsas.test.simpleclient; - -import java.io.InputStream; -import java.io.PrintStream; -import java.io.PrintWriter; - - -import uk.ac.vamsas.client.ClientDocument; -import uk.ac.vamsas.client.Vobject; -import uk.ac.vamsas.client.simpleclient.VamsasArchiveReader; -import uk.ac.vamsas.objects.core.Alignment; -import uk.ac.vamsas.objects.core.AppData; -import uk.ac.vamsas.objects.core.ApplicationData; -import uk.ac.vamsas.objects.core.DataSet; -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.Tree; -import uk.ac.vamsas.objects.core.User; -import uk.ac.vamsas.objects.core.VAMSAS; -import uk.ac.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 Vobject was valid or not - * TODO: LATER: propagate true/false return so that an invalid vamsas Vobject invalidates the whole document - * @author jimp - * - */ -public class ArchiveReports { - /** - * print an informative summary on a VamsasDocument - * @param outstr TODO - * @param document - the document itself - * @param archive - document source archive for resolving any appData refs - * @return - */ - public static boolean reportProvenance(Provenance p, PrintStream outstr) { - if (p==null) { - outstr.println("No Provenance"); - return false; - } - Entry[] pe = p.getEntry(); - for (int i=0; i1) { - outstr.print("a reference ("+appData+")"); - InputStream jstrm; - if ((jstrm=archive.getAppdataStream(appData))!=null) - outstr.println(" which resolves to a JarEntry."); - else { - outstr.println(" which does not resolve to a JarEntry."); - outstr.println("Unresolved appdata reference '"+appData+"'"); - } - } else { - nulldata=true; - } - } else { - if (appD.getData()==null) - nulldata &= true; - else - outstr.println("an embedded chunk of "+appD.getData().length+" bytes."); - } - if (nulldata) - outstr.println("Null AppData reference/data chunk."); - } - return true; - } - - public static boolean appDataReport(ApplicationData appD, VamsasArchiveReader archive, boolean cascade, PrintStream outstr) { - if (appD!=null) { - // Report on root appData - appDataEntryReport(appD, archive, cascade, outstr); - if (appD.getInstanceCount()>0) { - Instance inst[] = appD.getInstance(); - for (int i=0,j=inst.hashCode(); i0) { - User users[] = appD.getUser(); - for (int i=0,j=users.length; i0 && cascade) - rootReport(document.getVAMSAS(), true, outstr); - if (document.getApplicationDataCount()>0) { - outstr.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; i0) { - File archive = new File(args[0]); - log.info("Watching file "+args[0]); - int argc=1; - while (argc < args.length) { - // vars needed for operations - ClientHandle ch; - int com = cproc.getCommand(args, argc); - argc++; - switch (com) { - case 0: - // new - log.info("Doing locked deletion and new-file creation."); - { - if (!archive.exists()) - archive.createNewFile(); - VamsasFile sf = new VamsasFile(archive); - Lock l = sf.getLock(); - archive.delete(); - archive.createNewFile(); - sf.unLock(); - } - break; - case 1: - // delete - log.info("Deleting "+archive+" without locking it first."); - archive.delete(); - break; - case 2: - // watch - log.info("Endlessly Watching file "+archive); - /* if (!archive.exists()) - archive.createNewFile(); - */ // watch the new file... - taken straight from ClientsFileTest - FileWatcher w = new FileWatcher(archive); - while (true) { - // get watcher's lock to ensure state change is fixed for retrieval - Lock chlock = w.getChangedState(); - if (chlock != null) { - log.info("Got lock on "+archive+(archive.exists() ? " exists l="+archive.length() : "(non existant)")); - if (archive.length()>0) { - VamsasArchiveReader vreader = new VamsasArchiveReader(archive); - SimpleDocument sdoc = new SimpleDocument("testing vamsas watcher"); - try { - VamsasDocument d = sdoc.getVamsasDocument(vreader); - if (d!=null) { - ArchiveReports.reportDocument(d, vreader, false, System.out); - } - System.out.println("Update at "+System.currentTimeMillis()+"\n\n********************************************************\n"); - } catch (Exception e) { - log.error("Unmarshalling failed.",e); - } - vreader.close(); - w.setState(); - } - } - } - // break; - case 3: // set file - archive = new File(args[argc++]); - break; - case 4: - break; - default: - log.warn("Unknown command + "+args[argc++]); - } - } - } - } catch (Exception e) { - log.error(e); - } - - } -} diff --git a/src/org/vamsas/test/simpleclient/ArchiveWriter.java b/src/org/vamsas/test/simpleclient/ArchiveWriter.java deleted file mode 100644 index f99f400..0000000 --- a/src/org/vamsas/test/simpleclient/ArchiveWriter.java +++ /dev/null @@ -1,182 +0,0 @@ -package org.vamsas.test.simpleclient; - -import java.io.File; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.PrintWriter; -import java.text.DateFormat; -import java.util.Date; -import java.util.Hashtable; -import java.util.Vector; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -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 { - - /** - * Test program for writing archive files. - * form is ArchiveWriter new/modified argive command list - */ - - static Log log = LogFactory.getLog(ArchiveWriter.class); - - private static void mergeVecs(Object[] destvec, Object[] svec1, Object[] svec2) { - int i; - for (i=0; i0) { - ApplicationData[] newdat = new ApplicationData[source.getApplicationDataCount()+dest.getApplicationDataCount()]; - ApplicationData[] sappd = source.getApplicationData(); - // check refs and update/modify if necessary - for (int i=0; i [(commands)]"); - return; - } - File newarch = new File(argv[0]); - int argpos = 0; - try { - // test fully fledged doc construction - VamsasArchive varc = new VamsasArchive(newarch, true); - VamsasDocument docroot; - docroot = new VamsasDocument(); - docroot.setProvenance(ProvenanceStuff.newProvenance("ArchiveWriter", "user", "Created new Vamsas Document")); - while (++argpos-1) { - if (isValidUpdate(newr[k], original[i])) { - modified=true; - rts.add(newr[k]); - newr[k]=null; - } else { - // LATER: try harder to merge ducument roots. - log.warn("Couldn't merge new VAMSAS root "+newr[k].getId()); - newr[k] = null; // LATER: this means we ignore mangled roots. NOT GOOD - } - } else { - // add in order. - rts.add(original[i]); - } - } - // add remaining (new) roots - for (int i=0,j=newr.length; i2) - complainArgs(args.length, argc+1, comnext); - return com; - } - } - return -1; - - } -} diff --git a/src/org/vamsas/test/simpleclient/VamsasArchive.java b/src/org/vamsas/test/simpleclient/VamsasArchive.java deleted file mode 100644 index c98b4b7..0000000 --- a/src/org/vamsas/test/simpleclient/VamsasArchive.java +++ /dev/null @@ -1,206 +0,0 @@ -package org.vamsas.test.simpleclient; - -import java.io.File; -import java.io.ObjectOutputStream; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.vamsas.test.objects.Core; - -import uk.ac.vamsas.client.simpleclient.Lock; -import uk.ac.vamsas.client.simpleclient.SessionFile; -import uk.ac.vamsas.client.simpleclient.SimpleDocument; -import uk.ac.vamsas.client.simpleclient.VamsasArchiveReader; -import uk.ac.vamsas.client.simpleclient.VamsasFile; -import uk.ac.vamsas.objects.core.ApplicationData; -import uk.ac.vamsas.objects.core.User; -import uk.ac.vamsas.objects.core.VAMSAS; -import uk.ac.vamsas.objects.core.VamsasDocument; - -public class VamsasArchive { - /** - * test the org.vamsas.simpleclient.vamsasArchive class - */ - static Log log = LogFactory.getLog(VamsasArchive.class); - public static ApplicationData makeDemoAppdata(uk.ac.vamsas.client.simpleclient.VamsasArchive va, String apname, String userName, String userOrg) { - if (va==null) - return null; - VamsasArchiveReader vread=null; - try { - vread = va.getOriginalArchiveReader(); - } - catch (Exception e) { - log.error("Failed to get original archive reader!",e); - return null; - } - ApplicationData appdata = new ApplicationData(); - appdata.setName("org.vamsas.test.simpleclient.VamsasArchive"); - appdata.setData(new String("this is some test data.").getBytes()); - User apuser = new User(); - apuser.setFullname(userName); - apuser.setOrganization(userOrg); - String appdata_ref = "vamsas:"+apname+"/"+apuser.getOrganization()+"/"+apuser.getFullname(); - SimpleDocument sdoc = new SimpleDocument("test.simpleclient.VamsasArchive"); - if (vread!=null) { - VamsasDocument orignalnew; - try { - orignalnew = sdoc.getVamsasDocument(vread); - log.info("*** Dump follows ***"); - - ArchiveReports.reportDocument(orignalnew, vread, false, System.out); - log.info("*** Dump precedes ***"); - } catch (Exception e) { - log.info("makeDemoAppdata: Problems accessing original document"); - } - - log.info("Reading (and avoiding references to) original data"); - if (vread.getAppdataStream(appdata_ref)!=null) { - // transfer over - try { - va.transferAppDataEntry(appdata_ref); - } catch (Exception e) { - log.warn("Exception when transferring appdata reference : "+appdata_ref, e); - } - int i=0; - while (vread.getAppdataStream(appdata_ref+"/"+Integer.toString(++i))!=null) { - try { - // copy over another duplicate. - va.transferAppDataEntry(appdata_ref+"/"+Integer.toString(i)); - } catch (Exception e) { - log.warn("Exception when transferring appdata reference : "+appdata_ref, e); - } - } - // this one must be unique! - appdata_ref+="/"+Integer.toString(i); - } - } - - log.info("Adding new data stuff."); - log.info("Writing an apdata reference using AppDataStream interface."); - apuser.setDataReference(appdata_ref); - appdata.addUser(apuser); - appdata.setVersion("noggin"); - //TODO: write instance appdata appdata.setUrn("program:/the.nog/"); - try { - ObjectOutputStream ost = new ObjectOutputStream(va.getAppDataStream(appdata_ref)); - ost.writeObject(appdata); - ost.close(); - } catch (Exception e) { - log.warn("Couldn't write appdata reference "+appdata_ref); - } - return appdata; - } - public static void main(String args[]) { - - try { - File av; - if (args.length>0) - av = new File(args[0]); - else - av = new File("test/vamsas.zip"); - log.info("Opening archive "+av); - uk.ac.vamsas.client.simpleclient.VamsasArchive varchive = new uk.ac.vamsas.client.simpleclient.VamsasArchive(av, true); - - VAMSAS[] roots = (VAMSAS[]) varchive.getOriginalRoots(); - - if (roots!=null) { - log.info("Report on Original roots in archive:"); - ArchiveReports.rootReport(roots, true, System.out); - } - log.info("Getting current vamsas document."); - VamsasDocument doc = varchive.getVamsasDocument(); - ArchiveReports.reportDocument(doc, varchive.getOriginalArchiveReader(), true, System.out); // not modified document so references will still be valid - // do some stuff - log.info("Retrieving backup"); - File backup = varchive.backupFile(); - if (backup==null) - log.info(av+" is a New Archive."); - else - log.info(av+" has been backed up as "+backup); - File newf=new File(av.getAbsolutePath()+"_new.zip"); - VamsasFile sfile = new VamsasFile(newf); - /* if (newf.exists()) { - int q=1; - do { - newf=new File(av.getAbsolutePath()+"_"+q+++"_new.zip"); - } - while (newf.exists()); - } */ - if (newf.exists()) { - log.info("Removing existing "+newf); - newf.delete(); - } - - log.info("Now writing new Archive into "+newf.getAbsolutePath()); - uk.ac.vamsas.client.simpleclient.VamsasArchive va=null; - { // hold lock over deletion and write of new archive. - //Lock wlock = sfile.getLock(); - //newf.delete(); // clear out old file. - sfile.getLock(); - va = new uk.ac.vamsas.client.simpleclient.VamsasArchive(newf, true, true, sfile); - // open another and... - ApplicationData appdata = makeDemoAppdata(va, - "org.vamsas.test.simpleclient.VamsasArchive", "arnold Bugger esq", "disOrganised"); - log.info("Preparing to write new document."); - doc.addApplicationData(appdata); - doc.addVAMSAS(Core.getDemoVamsas()); - va.putVamsasDocument(doc); // gets stream and puts it. - va.closeArchive(); - sfile.unLock(); - } - log.info("Dump of new vamsas document :"); - log.info("Testing update: "); - { - Lock lock=sfile.getLock(); - if (lock==null) - while ((lock=sfile.getLock())==null) { - log.info("Waiting for lock."); - Thread.sleep(100); - } - VamsasArchiveReader vreader = new VamsasArchiveReader(sfile.getVamsasFile());// lock); // cannot do new JarFile on a locked file. // newf); - SimpleDocument sdoc = new SimpleDocument("testing new vamsas write"); - ArchiveReports.reportDocument(sdoc.getVamsasDocument(vreader), vreader, true, System.out); - sfile.unLock(); - } - // backup.delete(); // tidy up - - log.info("Now Cancelling write to original archive "+av); - if (varchive.cancelArchive()) - log.info("Successfully cancelled."); - else - log.info("Didn't cancel."); - long t=System.currentTimeMillis()+200; while (t>System.currentTimeMillis()); - log.info("Now testing archive update."); - va = new uk.ac.vamsas.client.simpleclient.VamsasArchive(newf, false, true, sfile); - doc = va.getVamsasDocument(); - doc.addVAMSAS(Core.getDemoVamsas()); - doc.addApplicationData(makeDemoAppdata(va, - "org.vamsas.test.simpleclient.VamsasArchive", "another old Bugger esq", "rescinded")); - if (va.transferRemainingAppDatas()) - log.info("Remain appdatas were transferred."); - else - log.warn("No appdatas were transferred. This is wrong."); - va.putVamsasDocument(doc); - va.closeArchive(); - sfile.unLock(); - log.info("Testing update: "); - { - Lock lock=sfile.getLock(); - if (lock==null) - while ((lock=sfile.getLock())==null) - log.info("Waiting for lock."); - // VamsasArchiveReader vreader = new VamsasArchiveReader(lock); - VamsasArchiveReader vreader = new VamsasArchiveReader(newf); - - SimpleDocument sdoc = new SimpleDocument("testing vamsas update"); - VamsasDocument finaldoc = sdoc.getVamsasDocument(vreader); - if (finaldoc!=null) - ArchiveReports.reportDocument(finaldoc, vreader, true, System.out); - else - log.error("Null Document Read from "+newf); - } - } catch (Exception e) { - e.printStackTrace(System.err); - } - } -} -- 1.7.10.2