From 51188df7765948dea25de74760e62069f0e87b18 Mon Sep 17 00:00:00 2001 From: Katja Luther Date: Mon, 25 Jul 2016 09:02:20 +0200 Subject: [PATCH] add session to bulk editor --- .../AnnotatedLineDocumentProvider.java | 24 +++++++++++++ .../AnnotatedLineEditor.java | 4 ++- .../taxeditor/bulkeditor/BulkEditor.java | 2 +- .../handler/OpenBulkEditorHandler.java | 1 + .../input/AbstractBulkEditorInput.java | 7 ++++ .../bulkeditor/input/NameEditorInput.java | 35 +++++++++++++++---- 6 files changed, 64 insertions(+), 9 deletions(-) diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/AnnotatedLineDocumentProvider.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/AnnotatedLineDocumentProvider.java index 3243ffbe4..1ad5dc7d6 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/AnnotatedLineDocumentProvider.java +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/AnnotatedLineDocumentProvider.java @@ -25,6 +25,7 @@ import org.eclipse.jface.text.source.IAnnotationModel; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.texteditor.AbstractDocumentProvider; +import eu.etaxonomy.cdm.api.conversation.ConversationHolder; import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput; import eu.etaxonomy.taxeditor.model.MessagingUtils; @@ -58,6 +59,21 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider { private ILineDisplayStrategy lineDisplayStrategy; private final IEditorInput input; + private ConversationHolder conversation; + + /** + * @return the conversation + */ + public ConversationHolder getConversation() { + return conversation; + } + + /** + * @param conversation the conversation to set + */ + public void setConversation(ConversationHolder conversation) { + this.conversation = conversation; + } /** *

Constructor for AnnotatedLineDocumentProvider.

@@ -66,6 +82,7 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider { */ public AnnotatedLineDocumentProvider(IEditorInput input){ this.input = input; + this.conversation = ((AbstractBulkEditorInput)input).getConversation(); } /** {@inheritDoc} */ @@ -232,11 +249,17 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider { // Get new containers from annotation model LineAnnotationModel model = (LineAnnotationModel) getAnnotationModel(element); Iterator iterator = model.getAnnotationIterator(); + if (!this.conversation.isBound()){ + this.conversation.bind(); + } + while (iterator.hasNext()) { Annotation annotation = (Annotation) iterator.next(); if (annotation instanceof IEntityContainer) { IEntityContainer container = (IEntityContainer) annotation; + if (container.isMarkedAsNew() || container.isDirty()) { + Object entity = persistenceService.save(container.getEntity()); // save container.setEntity(entity); container.setDirty(false); @@ -244,6 +267,7 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider { } } } + this.conversation.commit(true); for (LineAnnotation annotation : model.getDeletedAnnotations()) { if (annotation.isMarkedAsNew()) { continue; diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/AnnotatedLineEditor.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/AnnotatedLineEditor.java index e7640f011..03ee6e9fe 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/AnnotatedLineEditor.java +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/AnnotatedLineEditor.java @@ -71,7 +71,7 @@ public class AnnotatedLineEditor extends TextEditor implements IConversationEnab protected void doSetInput(IEditorInput input) throws CoreException { AnnotatedLineDocumentProvider provider = new AnnotatedLineDocumentProvider(input); - + provider.setLineDisplayStrategy(lineDisplayStrategy, input); setDocumentProvider(provider); @@ -197,6 +197,8 @@ public class AnnotatedLineEditor extends TextEditor implements IConversationEnab public LineAnnotation createAnnotatedLine(Object entity) { IEditorInput input = getEditorInput(); + this.conversation.close(); + this.conversation = ((AbstractBulkEditorInput)input).getConversation(); AnnotatedLineDocumentProvider provider = (AnnotatedLineDocumentProvider) getDocumentProvider(); LineAnnotation annotation = null; diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditor.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditor.java index fa41c940b..93c471ee3 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditor.java +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditor.java @@ -282,7 +282,7 @@ public class BulkEditor extends AnnotatedLineEditor implements IPartContentHasDe conversation.commit(true); getEditorInput().dispose(); - initializeEditor(); + getEditorInput().bind(); getEditorInput().performSearch(query); refresh(); diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/OpenBulkEditorHandler.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/OpenBulkEditorHandler.java index dc4d133e2..9f733f33e 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/OpenBulkEditorHandler.java +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/OpenBulkEditorHandler.java @@ -19,6 +19,7 @@ import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor; import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorConstants; import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput; import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInputType; +import eu.etaxonomy.taxeditor.store.CdmStore; /** *

OpenBulkEditorHandler class.

diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AbstractBulkEditorInput.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AbstractBulkEditorInput.java index 00f746d97..cb0b8710d 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AbstractBulkEditorInput.java +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AbstractBulkEditorInput.java @@ -21,6 +21,7 @@ import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IPersistableElement; +import eu.etaxonomy.cdm.api.conversation.ConversationHolder; import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator; import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper; import eu.etaxonomy.cdm.model.common.CdmBase; @@ -56,11 +57,13 @@ public abstract class AbstractBulkEditorInput extends CdmEnt private List model; private IEntityCreator entityCreator; + private final ConversationHolder conversation; private static Class serviceClass; public AbstractBulkEditorInput() { super(true); + this.conversation = CdmStore.createConversation(); } /** @@ -343,4 +346,8 @@ public abstract class AbstractBulkEditorInput extends CdmEnt // TODO Auto-generated method stub return null; } + + public ConversationHolder getConversation() { + return conversation; + } } diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/NameEditorInput.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/NameEditorInput.java index 6116162d2..51568f5cb 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/NameEditorInput.java +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/NameEditorInput.java @@ -10,7 +10,10 @@ package eu.etaxonomy.taxeditor.bulkeditor.input; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import java.util.UUID; import eu.etaxonomy.cdm.api.service.INameService; import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator; @@ -98,7 +101,9 @@ public class NameEditorInput extends AbstractBulkEditorInput { /** {@inheritDoc} */ @Override public List listEntities(IIdentifiableEntityServiceConfigurator configurator) { - return CdmStore.getSearchManager().findNames(configurator); + + configurator.setPropertyPaths(getPropertyPaths()); + return CdmStore.getSearchManager().findNames(configurator, this.getConversation()); } /** {@inheritDoc} @@ -118,12 +123,14 @@ public class NameEditorInput extends AbstractBulkEditorInput { /** {@inheritDoc} */ @Override public TaxonNameBase save(TaxonNameBase entity) { - if(CdmStore.getCurrentSessionManager().isRemoting()) { - return CdmStore.getService(INameService.class).merge(entity, true).getMergedEntity(); - } else { - CdmStore.getService(INameService.class).saveOrUpdate(entity); - return entity; - } + TaxonNameBase mergedName = null; + + if(CdmStore.getCurrentSessionManager().isRemoting()) { + mergedName = CdmStore.getService(INameService.class).merge(entity, true).getMergedEntity(); + } + + return mergedName; + } /* (non-Javadoc) @@ -173,5 +180,19 @@ public class NameEditorInput extends AbstractBulkEditorInput { } + private List getPropertyPaths(){ + List nameBasePropertyPaths = Arrays.asList(new String[] { + "name.descriptions", + "name.typeDesignations", + "name.status", + "name.nomenclaturalReference.inReference", + "name.taxonBases.taxonNodes", + "name.relationsFromThisName", + "name.relationsToThisName", + "name.homotypicalGroup.typifiedNames.taxonBases.synonymRelations.synonym.name.status", + "name.homotypicalGroup.typifiedNames.relationsToThisName.fromName"}); + + return nameBasePropertyPaths; + } } -- 2.34.1