X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fuk%2Fac%2Fvamsas%2Fclient%2Fsimpleclient%2FClientDocument.java;h=ef0a7d50318965acceaaf52e2769c6a3b9c64b4f;hb=61966e1add4b7705ff7b5f1e1239156c06f9abd7;hp=bc7a7e9afdd5cb1893bd34ec11a773fe75bc96b4;hpb=ab0c4de1d4a1e8df5d796a8380370105e23698ac;p=vamsas.git diff --git a/src/uk/ac/vamsas/client/simpleclient/ClientDocument.java b/src/uk/ac/vamsas/client/simpleclient/ClientDocument.java index bc7a7e9..ef0a7d5 100644 --- a/src/uk/ac/vamsas/client/simpleclient/ClientDocument.java +++ b/src/uk/ac/vamsas/client/simpleclient/ClientDocument.java @@ -23,14 +23,16 @@ import uk.ac.vamsas.objects.utils.AppDataReference; import uk.ac.vamsas.test.objects.Core; /** - * Maintains a collection of vamsas objects, appdatas and states, and provides api for a SimpleClient's client. + * Maintains a collection of vamsas objects, appdatas and states, + * and provides api for a SimpleClient's client. + * TODO: test and migrate ArchiveClient.getAppData methods to here and retest in ExampleApplication * @author jimp */ public class ClientDocument extends uk.ac.vamsas.client.ClientDocument implements IClientDocument { private static Log log = LogFactory.getLog(ClientDocument.class); private VamsasDocument doc; protected SimpleClient sclient; - protected VamsasArchive archive = null; + protected VamsasArchive iohandler = null; /** * indicate if new data has been incorporated */ @@ -42,10 +44,9 @@ public class ClientDocument extends uk.ac.vamsas.client.ClientDocument implement public boolean isModified() { return isModified; } - private Vector updatedObjects=null; /** * - * prepare Application-side dataset from the vamsas Document archive + * prepare Application-side dataset from the vamsas Document iohandler * @param doc - the dataset * @param docHandler - the sessionFile IO handler * @param Factory - the source of current and new vorbaIds @@ -56,12 +57,12 @@ public class ClientDocument extends uk.ac.vamsas.client.ClientDocument implement /** - * prepare Application-side dataset from the vamsas Document archive + * prepare Application-side dataset from the vamsas Document iohandler */ this.sclient = sclient; - archive = docHandler; + iohandler = docHandler; this.doc = doc; - updatedObjects=null; /// TODO: correct this line + _VamsasRoots=doc.getVAMSAS(); } /* @@ -102,7 +103,20 @@ public class ClientDocument extends uk.ac.vamsas.client.ClientDocument implement * internal reference to single copy of Document Roots array */ private VAMSAS[] _VamsasRoots=null; - /* + + protected void updateDocumentRoots() { + if (doc==null) { + log.error("updateDocumentRoots called on null document. Probably an implementation error."); + return; + } + if (isModified) { + if (_VamsasRoots!=null) { + doc.setVAMSAS(_VamsasRoots); + _VamsasRoots=null; + } + } + } +/* * (non-Javadoc) * LATER: currently there is only one Vector of roots ever passed to client - decide if this is correct (means this is not thread safe and may behave unexpectedly) * @see uk.ac.vamsas.client.IClientDocument#getVamsasRoots() @@ -112,7 +126,7 @@ public class ClientDocument extends uk.ac.vamsas.client.ClientDocument implement log.debug("Null document for getVamsasRoots(), returning null"); return null; } - if (archive==null) { + if (iohandler==null) { // LATER: decide on read-only status of ClientDocument object log.warn("getVamsasRoots() called on possibly read-only document."); } @@ -122,6 +136,7 @@ public class ClientDocument extends uk.ac.vamsas.client.ClientDocument implement if (roots == null) { // Make a new one to return to client to get filled. _VamsasRoots = new VAMSAS[] { new VAMSAS() }; + registerObject(_VamsasRoots[0]); // Do provenance now. just in case. doc.getProvenance().addEntry(sclient.getProvenanceEntry("Created new document root [id="+_VamsasRoots[0].getId()+"]")); doc.addVAMSAS(_VamsasRoots[0]); @@ -138,12 +153,13 @@ public class ClientDocument extends uk.ac.vamsas.client.ClientDocument implement return -1; if (docRoots==null || docRoots.length==0) return -1; - String r_id = root.getId(); + VorbaId d_id=null,r_id = root.getVorbaId(); for (int i=0,j=docRoots.length; i