+++ /dev/null
-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.client.simpleclient.Lock;
-import org.vamsas.client.simpleclient.SessionFile;
-import org.vamsas.client.simpleclient.SimpleDocument;
-import org.vamsas.client.simpleclient.VamsasArchiveReader;
-import org.vamsas.client.simpleclient.VamsasFile;
-import org.vamsas.objects.core.ApplicationData;
-import org.vamsas.objects.core.User;
-import org.vamsas.objects.core.VAMSAS;
-import org.vamsas.objects.core.VamsasDocument;
-import org.vamsas.test.objects.Core;
-
-public class VamsasArchive {
- /**
- * test the org.vamsas.simpleclient.vamsasArchive class
- */
- static Log log = LogFactory.getLog(VamsasArchive.class);
- public static ApplicationData makeDemoAppdata(org.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);
- org.vamsas.client.simpleclient.VamsasArchive varchive = new org.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());
- org.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 org.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 org.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);
- }
- }
-}