X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=inline;f=src%2Fuk%2Fac%2Fvamsas%2Fclient%2Fsimpleclient%2FClientDocument.java;h=db3d51a7099a0f316a4c2f7061d82870b740ebee;hb=33e0f11ea3dec08c78b0f10a192bad779565c704;hp=dde96321791690ab0ba2dc49df86f344ec31765f;hpb=5156a824b13ecd091af9f84870f41d83eb59bd71;p=vamsas.git diff --git a/src/uk/ac/vamsas/client/simpleclient/ClientDocument.java b/src/uk/ac/vamsas/client/simpleclient/ClientDocument.java index dde9632..db3d51a 100644 --- a/src/uk/ac/vamsas/client/simpleclient/ClientDocument.java +++ b/src/uk/ac/vamsas/client/simpleclient/ClientDocument.java @@ -8,28 +8,31 @@ import java.util.Vector; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.vamsas.client.ClientHandle; -import org.vamsas.client.IClientAppdata; -import org.vamsas.client.IClientDocument; -import org.vamsas.client.UserHandle; -import org.vamsas.client.Vobject; -import org.vamsas.client.VorbaId; -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.objects.utils.AppDataReference; -import org.vamsas.test.objects.Core; + +import uk.ac.vamsas.client.ClientHandle; +import uk.ac.vamsas.client.IClientAppdata; +import uk.ac.vamsas.client.IClientDocument; +import uk.ac.vamsas.client.UserHandle; +import uk.ac.vamsas.client.Vobject; +import uk.ac.vamsas.client.VorbaId; +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; +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 org.vamsas.client.ClientDocument implements IClientDocument { +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 */ @@ -41,10 +44,9 @@ public class ClientDocument extends org.vamsas.client.ClientDocument implements 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 @@ -55,18 +57,18 @@ public class ClientDocument extends org.vamsas.client.ClientDocument implements /** - * 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(); } /* * (non-Javadoc) * - * @see org.vamsas.client.IClientDocument#getObject(org.vamsas.client.VorbaId) + * @see uk.ac.vamsas.client.IClientDocument#getObject(uk.ac.vamsas.client.VorbaId) */ public Vobject getObject(VorbaId id) { if (vamsasObjects==null) { @@ -82,7 +84,7 @@ public class ClientDocument extends org.vamsas.client.ClientDocument implements /* * (non-Javadoc) * - * @see org.vamsas.client.IClientDocument#getObjects(org.vamsas.client.VorbaId[]) + * @see uk.ac.vamsas.client.IClientDocument#getObjects(uk.ac.vamsas.client.VorbaId[]) */ public Vobject[] getObjects(VorbaId[] ids) { if (vamsasObjects==null) { @@ -101,17 +103,30 @@ public class ClientDocument extends org.vamsas.client.ClientDocument implements * 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 org.vamsas.client.IClientDocument#getVamsasRoots() + * @see uk.ac.vamsas.client.IClientDocument#getVamsasRoots() */ public VAMSAS[] getVamsasRoots() { if (doc==null) { 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."); } @@ -121,6 +136,7 @@ public class ClientDocument extends org.vamsas.client.ClientDocument implements 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]); @@ -137,9 +153,9 @@ public class ClientDocument extends org.vamsas.client.ClientDocument implements 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