| Class | Line # | Actions | |||
|---|---|---|---|---|---|
| LocalDocSyncObject | 33 | 10 | 4 |
| 1 | /* | |
| 2 | * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) | |
| 3 | * Copyright (C) $$Year-Rel$$ The Jalview Authors | |
| 4 | * | |
| 5 | * This file is part of Jalview. | |
| 6 | * | |
| 7 | * Jalview is free software: you can redistribute it and/or | |
| 8 | * modify it under the terms of the GNU General Public License | |
| 9 | * as published by the Free Software Foundation, either version 3 | |
| 10 | * of the License, or (at your option) any later version. | |
| 11 | * | |
| 12 | * Jalview is distributed in the hope that it will be useful, but | |
| 13 | * WITHOUT ANY WARRANTY; without even the implied warranty | |
| 14 | * of MERCHANTABILITY or FITNESS FOR A PARTICULAR | |
| 15 | * PURPOSE. See the GNU General Public License for more details. | |
| 16 | * | |
| 17 | * You should have received a copy of the GNU General Public License | |
| 18 | * along with Jalview. If not, see <http://www.gnu.org/licenses/>. | |
| 19 | * The Jalview Authors are detailed in the 'AUTHORS' file. | |
| 20 | */ | |
| 21 | package jalview.io.vamsas; | |
| 22 | ||
| 23 | import uk.ac.vamsas.client.Vobject; | |
| 24 | ||
| 25 | /** | |
| 26 | * Implement the basic logic for synchronising changes to or from the Vamsas | |
| 27 | * Document. This is a more generic and normalised framework than the one | |
| 28 | * implemented in DatastoreItem, but probably more tedious to implement. .. | |
| 29 | * abandoned. Nov 2008 | |
| 30 | * | |
| 31 | * @author JimP | |
| 32 | */ | |
| 33 | public abstract class LocalDocSyncObject extends DatastoreItem | |
| 34 | { | |
| 35 | /** | |
| 36 | * | |
| 37 | * @return null or the local object that is being worked on. | |
| 38 | */ | |
| 39 | public abstract Object getLObject(); | |
| 40 | ||
| 41 | /** | |
| 42 | * | |
| 43 | * @return null or the document object that is being worked on | |
| 44 | */ | |
| 45 | public abstract Vobject getVObject(); | |
| 46 | ||
| 47 | /** | |
| 48 | * endpoint for synchronize when all opreations are finished. | |
| 49 | */ | |
| 50 | public abstract void nextObject(); | |
| 51 | ||
| 52 | /** | |
| 53 | * called if the local object can be safely updated from the bound document | |
| 54 | * object. public abstract void updateToDoc(); | |
| 55 | */ | |
| 56 | ||
| 57 | /** | |
| 58 | * called if the associated document object can be safely updated with the | |
| 59 | * local changes public abstract void updateToDoc(); | |
| 60 | */ | |
| 61 | ||
| 62 | /** | |
| 63 | * @return true if the local object is modified | |
| 64 | */ | |
| 65 | public abstract boolean locallyModified(); | |
| 66 | ||
| 67 | /** | |
| 68 | * | |
| 69 | * @return true if the bound document object is modified | |
| 70 | */ | |
| 71 | public abstract boolean documentModified(); | |
| 72 | ||
| 73 | /** | |
| 74 | * | |
| 75 | * @return true if the document object is locked w.r.t. this object's update. | |
| 76 | */ | |
| 77 | public abstract boolean documentObjectLocked(); | |
| 78 | ||
| 79 | /** | |
| 80 | * | |
| 81 | * @return a new datastore item instance which binds the local object to a new | |
| 82 | * document object | |
| 83 | */ | |
| 84 | public abstract LocalDocSyncObject newDocumentObject(); // could make this | |
| 85 | ||
| 86 | // constructor(Lobject) | |
| 87 | ||
| 88 | /** | |
| 89 | * | |
| 90 | * @return a new datastore item instance which binds the document object to a | |
| 91 | * new local object. | |
| 92 | */ | |
| 93 | public abstract LocalDocSyncObject newLocalObject(); // make this | |
| 94 | ||
| 95 | // constructor(Vobject) | |
| 96 | ||
| 97 | /** | |
| 98 | * apply the update/commit logic as defined in the vamsas paper | |
| 99 | * | |
| 100 | * @param documentIsUpdated | |
| 101 | * true if a document update event is being handled | |
| 102 | */ | |
| 103 | 0 | public void synchronize(boolean documentIsUpdated) |
| 104 | { | |
| 105 | 0 | Object Lobject = getLObject(); |
| 106 | 0 | Vobject Vobject = getVObject(); |
| 107 | 0 | if (Lobject == null) |
| 108 | { | |
| 109 | // no local binding for document object | |
| 110 | 0 | newLocalObject().synchronize(documentIsUpdated); |
| 111 | 0 | return; |
| 112 | } | |
| 113 | 0 | if (Vobject == null) |
| 114 | { | |
| 115 | // no document binding for local object | |
| 116 | 0 | newDocumentObject().synchronize(documentIsUpdated); |
| 117 | } | |
| 118 | // Check binding is valid | |
| 119 | 0 | if (getjv2vObj(Lobject) != Vobject) |
| 120 | { | |
| 121 | // no local binding for document object | |
| 122 | 0 | newLocalObject().synchronize(documentIsUpdated); |
| 123 | // no document binding for local object | |
| 124 | 0 | newDocumentObject().synchronize(documentIsUpdated); |
| 125 | } | |
| 126 | } | |
| 127 | } |