1 package org.vamsas.test.simpleclient;
3 import java.io.BufferedInputStream;
5 import java.io.InputStream;
6 import java.io.InputStreamReader;
7 import java.io.ObjectOutputStream;
8 import java.io.PrintWriter;
10 import org.apache.commons.logging.Log;
11 import org.apache.commons.logging.LogFactory;
12 import org.vamsas.client.simpleclient.*;
13 import org.vamsas.objects.core.ApplicationData;
14 import org.vamsas.objects.core.User;
15 import org.vamsas.objects.core.VAMSAS;
16 import org.vamsas.objects.core.VamsasDocument;
17 import org.vamsas.test.objects.Core;
19 public class VamsasArchive {
21 * test the org.vamsas.simpleclient.vamsasArchive class
23 static Log log = LogFactory.getLog(VamsasArchive.class);
25 public static void main(String args[]) {
30 av = new File(args[0]);
32 av = new File("test/vamsas.zip");
33 log.info("Opening archive "+av);
34 org.vamsas.client.simpleclient.VamsasArchive varchive = new org.vamsas.client.simpleclient.VamsasArchive(av, true);
36 VAMSAS[] roots = (VAMSAS[]) varchive.getOriginalRoots();
39 log.info("Report on Original roots in archive:");
40 ArchiveReports.rootReport(roots, true);
42 log.info("Getting current vamsas document.");
43 VamsasDocument doc = varchive.getVamsasDocument();
44 ArchiveReports.reportDocument(doc, varchive.getOriginalArchiveReader(), true); // not modified document so references will still be valid
46 log.info("Retrieving backup");
47 File backup = varchive.backupFile();
49 log.info(av+" is a New Archive.");
51 log.info(av+" has been backed up as "+backup);
53 log.info("Backup "+backup+" is being written to.");
54 // open another and...
55 ApplicationData appdata = new ApplicationData();
56 appdata.setName("org.vamsas.test.simpleclient.VamsasArchive");
57 appdata.setData(new String("this is some test data.").getBytes());
58 User apuser = new User();
59 apuser.setFullname("arnold Bugger esq");
60 apuser.setOrganization("disOrganised");
61 String appdata_ref = "vamsas:org.vamsas.test.simpleclient.VamsasArchive/"+apuser.getOrganization()+"/"+apuser.getFullname();
64 File newf=new File(av.getAbsolutePath()+"_new.zip");
65 org.vamsas.client.simpleclient.VamsasArchive va = new org.vamsas.client.simpleclient.VamsasArchive(newf, true);
66 log.info("Getting the document from the backup-original.");
68 VamsasArchiveReader vread = va.getOriginalArchiveReader();
70 vadoc = doc; // putting original data into new archive.
71 log.info("Got document. Adding stuff.");
73 if (vread.getAppdataStream(appdata_ref)!=null) {
75 while (vread.getAppdataStream(appdata_ref+"/"+Integer.toString(++i))!=null)
77 appdata_ref+="/"+Integer.toString(i);
80 log.info("Writing an apdata reference using AppDataStream interface.");
81 apuser.setDataReference(appdata_ref);
82 appdata.addUser(apuser);
83 appdata.setVersion("noggin");
84 appdata.setUrn("program:/the.nog/");
85 // TODO: FIX schema - User.addUser is unsatisfiable!
86 ObjectOutputStream apdos = new ObjectOutputStream(va.getAppDataStream(appdata_ref));
87 apdos.writeObject(appdata_ref);
88 apdos.writeObject(apuser); // some random content
89 apdos.close(); // this should *not* close the archive!
90 log.info("Written Appdata Stream");
91 log.info("Preparing to write new document.");
92 doc.addApplicationData(appdata);
93 doc.addVAMSAS(Core.getDemoVamsas());
95 va.putVamsasDocument(doc); // gets stream and puts it.
96 // TODO: verify that the vxml stream close method overridden ?
99 log.info("Dump of new vamsas document :");
100 va = new org.vamsas.client.simpleclient.VamsasArchive(newf, true); // TODO - refactor Reader class to have deserializing helpers
101 ArchiveReports.reportDocument(va.getVamsasDocument(), va.getOriginalArchiveReader(), true);
102 // backup.delete(); // tidy up
104 log.info("Now Cancelling write to original archive "+av);
105 varchive.cancelArchive();
107 } catch (Exception e) {
108 e.printStackTrace(System.err);