+ 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");
+ 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;
+ }