From a1a8b58192692e9ff36e52b92d9b96dd878ff2cd Mon Sep 17 00:00:00 2001 From: Cherian Mathew Date: Thu, 1 Oct 2015 17:25:15 +0200 Subject: [PATCH] #5300 Implement remoting in Alignment Editor --- .../molecular/editor/AlignmentEditor.java | 7 ++++ .../editor/AlignmentEditorInput.java | 38 +++++++++++++++++-- 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/editor/AlignmentEditor.java b/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/editor/AlignmentEditor.java index 35b0a2df6..4934d9a37 100644 --- a/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/editor/AlignmentEditor.java +++ b/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/editor/AlignmentEditor.java @@ -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(); diff --git a/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/editor/AlignmentEditorInput.java b/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/editor/AlignmentEditorInput.java index b82362551..4bc956e3c 100644 --- a/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/editor/AlignmentEditorInput.java +++ b/eu.etaxonomy.taxeditor.molecular/src/main/java/eu/etaxonomy/taxeditor/molecular/editor/AlignmentEditorInput.java @@ -10,12 +10,19 @@ 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 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); + } + } } -- 2.34.1