-package jalview.io.vamsas;\r
-\r
-import uk.ac.vamsas.client.Vobject;\r
-\r
-/**\r
- * Implement the basic logic for synchronising changes to or from the Vamsas Document\r
- * @author JimP\r
- */\r
-public abstract class LocalDocSyncObject extends DatastoreItem\r
-{\r
- /**\r
- * \r
- * @return null or the local object that is being worked on. \r
- */\r
- public abstract Object getLObject();\r
- /**\r
- * \r
- * @return null or the document object that is being worked on\r
- */\r
- public abstract Vobject getVObject();\r
- \r
- /**\r
- * endpoint for synchronize when all opreations are finished.\r
- */\r
- public abstract void nextObject();\r
- /**\r
- * called if the local object can be safely updated from the bound document object.\r
- */\r
- public abstract void updateFromDoc();\r
- /**\r
- * called if the associated document object can be safely updated with the local changes\r
- */\r
- public abstract void updateToDoc();\r
- /**\r
- * @return true if the local object is modified\r
- */\r
- public abstract boolean locallyModified();\r
- /**\r
- * \r
- * @return true if the bound document object is modified\r
- */\r
- public abstract boolean documentModified();\r
- /**\r
- * \r
- * @return true if the document object is locked w.r.t. this object's update.\r
- */\r
- public abstract boolean documentObjectLocked();\r
- /**\r
- * \r
- * @return a new datastore item instance which binds the local object to a new document object \r
- */\r
- public abstract LocalDocSyncObject newDocumentObject(); // could make this constructor(Lobject)\r
- /**\r
- * \r
- * @return a new datastore item instance which binds the document object to a new local object. \r
- */\r
- public abstract LocalDocSyncObject newLocalObject(); // make this constructor(Vobject)\r
- /**\r
- * apply the update/commit logic as defined in the vamsas paper\r
- * @param documentIsUpdated true if a document update event is being handled \r
- */\r
- public void synchronize(boolean documentIsUpdated) {\r
- Object Lobject = getLObject();\r
- Vobject Vobject = getVObject();\r
- if (Lobject==null)\r
- {\r
- // no local binding for document object\r
- newLocalObject().synchronize(documentIsUpdated);\r
- return;\r
- }\r
- if (Vobject==null)\r
- {\r
- // no document binding for local object\r
- newDocumentObject().synchronize(documentIsUpdated);\r
- }\r
- // Check binding is valid\r
- if (getjv2vObj(Lobject)!=Vobject)\r
- {\r
- // no local binding for document object\r
- newLocalObject().synchronize(documentIsUpdated);\r
- // no document binding for local object\r
- newDocumentObject().synchronize(documentIsUpdated);\r
- }\r
- }\r
-}\r
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6)
+ * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ */
+package jalview.io.vamsas;
+
+import uk.ac.vamsas.client.Vobject;
+
+/**
+ * Implement the basic logic for synchronising changes to or from the Vamsas
+ * Document. This is a more generic and normalised framework than the one
+ * implemented in DatastoreItem, but probably more tedious to implement. ..
+ * abandoned. Nov 2008
+ *
+ * @author JimP
+ */
+public abstract class LocalDocSyncObject extends DatastoreItem
+{
+ /**
+ *
+ * @return null or the local object that is being worked on.
+ */
+ public abstract Object getLObject();
+
+ /**
+ *
+ * @return null or the document object that is being worked on
+ */
+ public abstract Vobject getVObject();
+
+ /**
+ * endpoint for synchronize when all opreations are finished.
+ */
+ public abstract void nextObject();
+
+ /**
+ * called if the local object can be safely updated from the bound document
+ * object. public abstract void updateToDoc();
+ */
+
+ /**
+ * called if the associated document object can be safely updated with the
+ * local changes public abstract void updateToDoc();
+ */
+
+ /**
+ * @return true if the local object is modified
+ */
+ public abstract boolean locallyModified();
+
+ /**
+ *
+ * @return true if the bound document object is modified
+ */
+ public abstract boolean documentModified();
+
+ /**
+ *
+ * @return true if the document object is locked w.r.t. this object's update.
+ */
+ public abstract boolean documentObjectLocked();
+
+ /**
+ *
+ * @return a new datastore item instance which binds the local object to a new
+ * document object
+ */
+ public abstract LocalDocSyncObject newDocumentObject(); // could make this
+
+ // constructor(Lobject)
+
+ /**
+ *
+ * @return a new datastore item instance which binds the document object to a
+ * new local object.
+ */
+ public abstract LocalDocSyncObject newLocalObject(); // make this
+
+ // constructor(Vobject)
+
+ /**
+ * apply the update/commit logic as defined in the vamsas paper
+ *
+ * @param documentIsUpdated
+ * true if a document update event is being handled
+ */
+ public void synchronize(boolean documentIsUpdated)
+ {
+ Object Lobject = getLObject();
+ Vobject Vobject = getVObject();
+ if (Lobject == null)
+ {
+ // no local binding for document object
+ newLocalObject().synchronize(documentIsUpdated);
+ return;
+ }
+ if (Vobject == null)
+ {
+ // no document binding for local object
+ newDocumentObject().synchronize(documentIsUpdated);
+ }
+ // Check binding is valid
+ if (getjv2vObj(Lobject) != Vobject)
+ {
+ // no local binding for document object
+ newLocalObject().synchronize(documentIsUpdated);
+ // no document binding for local object
+ newDocumentObject().synchronize(documentIsUpdated);
+ }
+ }
+}