#5300 Implement remoting in Alignment Editor
authorCherian Mathew <c.mathew@bgbm.org>
Thu, 1 Oct 2015 15:25:15 +0000 (17:25 +0200)
committerCherian Mathew <c.mathew@bgbm.org>
Thu, 1 Oct 2015 15:27:51 +0000 (17:27 +0200)
eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/editor/AlignmentEditor.java
eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/editor/AlignmentEditorInput.java

index 35b0a2df6a3f18915452ea3dcd99c7995a5e3029..4934d9a37d4394c85670d8b5f6d792e22ecfeaea 100644 (file)
@@ -371,6 +371,7 @@ public class AlignmentEditor extends EditorPart {
 
             //re-loading sequence to avoid session conflicts
                Sequence sequenceNode = CdmStore.getService(ISequenceService.class).load(((AlignmentEditorInput)getEditorInput()).getSequenceNodeUuid());
+               ((AlignmentEditorInput)getEditorInput()).setSequenceNode(sequenceNode);
                StringAdapter stringProvider = new StringAdapter(getEditableConsensusArea().getAlignmentModel(), false);  // Throws an exception if a token has more than one character.
 
                // Write consensus sequence:
@@ -415,6 +416,7 @@ public class AlignmentEditor extends EditorPart {
             }
             monitor.worked(1);
 
+            ((AlignmentEditorInput)getEditorInput()).merge();
             // Commit the conversation and start a new transaction immediately:
             conversationHolder.commit(true);
             monitor.worked(1);
@@ -490,8 +492,13 @@ public class AlignmentEditor extends EditorPart {
         if(conversationHolder!=null){
             conversationHolder.bind();
         }
+        ((AlignmentEditorInput)getEditorInput()).bind();
     }
 
+    @Override
+    public void dispose() {
+        ((AlignmentEditorInput)getEditorInput()).dispose();
+    }
 
     public boolean isInsertMode() {
         return getAlignmentsContainer().getEditSettings().isInsert();
index b82362551ddcb2e537f800eb2d0c32ed0695b12d..4bc956e3c574047187657a788b2118005a810ed3 100644 (file)
 package eu.etaxonomy.taxeditor.molecular.editor;
 
 
+import java.util.Arrays;
+import java.util.List;
 import java.util.UUID;
 
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IPersistableElement;
 
+import eu.etaxonomy.cdm.api.service.molecular.ISequenceService;
+import eu.etaxonomy.cdm.model.molecular.Sequence;
+import eu.etaxonomy.taxeditor.editor.CdmEntitySessionInput;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
 
 
 /**
@@ -23,16 +30,17 @@ import org.eclipse.ui.IPersistableElement;
  * @author Ben Stöver
  * @date 04.08.2014
  */
-public class AlignmentEditorInput implements IEditorInput {
+public class AlignmentEditorInput extends CdmEntitySessionInput implements IEditorInput {
     private static final String name = "AlignmentEditor";
 
 
     private final UUID sequenceNodeUuid;
-
+    private Sequence sequenceNode;
 
     public AlignmentEditorInput(UUID sequenceNodeUuid) {
-               super();
+        super(false);
                this.sequenceNodeUuid = sequenceNodeUuid;
+               initSession();
        }
 
 
@@ -135,4 +143,28 @@ public class AlignmentEditorInput implements IEditorInput {
         }
                return true;
        }
+
+
+       public void setSequenceNode(Sequence sequenceNode) {
+           this.sequenceNode = sequenceNode;
+       }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getRootEntities()
+     */
+    @Override
+    public List<Sequence> getRootEntities() {
+        return Arrays.asList(sequenceNode);
+    }
+
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.editor.CdmEntitySessionInput#merge()
+     */
+    @Override
+    public void merge() {
+        if(CdmStore.getCurrentSessionManager().isRemoting()) {
+            CdmStore.getService(ISequenceService.class).merge(sequenceNode, true);
+        }
+    }
 }