add session to bulk editor
authorKatja Luther <k.luther@bgbm.org>
Mon, 25 Jul 2016 07:02:20 +0000 (09:02 +0200)
committerKatja Luther <k.luther@bgbm.org>
Mon, 25 Jul 2016 07:02:20 +0000 (09:02 +0200)
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/AnnotatedLineDocumentProvider.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/AnnotatedLineEditor.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditor.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/OpenBulkEditorHandler.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AbstractBulkEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/NameEditorInput.java

index 3243ffbe49299cddaee36b43327ac5139893df83..1ad5dc7d6cf7dff1b70a1c2e1bd4d42a8f7e00c1 100644 (file)
@@ -25,6 +25,7 @@ import org.eclipse.jface.text.source.IAnnotationModel;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.texteditor.AbstractDocumentProvider;
 
 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;
 
 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 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;
+       }
 
        /**
         * <p>Constructor for AnnotatedLineDocumentProvider.</p>
 
        /**
         * <p>Constructor for AnnotatedLineDocumentProvider.</p>
@@ -66,6 +82,7 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
         */
        public AnnotatedLineDocumentProvider(IEditorInput input){
                this.input = input;
         */
        public AnnotatedLineDocumentProvider(IEditorInput input){
                this.input = input;
+               this.conversation = ((AbstractBulkEditorInput)input).getConversation();
        }
 
        /** {@inheritDoc} */
        }
 
        /** {@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();
                        // 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;
                        while (iterator.hasNext()) {
                                Annotation annotation = (Annotation) iterator.next();
                                if (annotation instanceof IEntityContainer<?>) {
                                        IEntityContainer<?> container = (IEntityContainer<?>) annotation;
+                                       
                                        if (container.isMarkedAsNew() || container.isDirty()) {
                                        if (container.isMarkedAsNew() || container.isDirty()) {
+                                               
                                                Object entity = persistenceService.save(container.getEntity()); // save
                                                container.setEntity(entity);
                                                container.setDirty(false);
                                                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;
                        for (LineAnnotation annotation : model.getDeletedAnnotations()) {
                                if (annotation.isMarkedAsNew()) {
                                        continue;
index e7640f011c211fac76387e65b040e4cc0c0d4575..03ee6e9fe9c5080ee7a29ee9668fa330f9ef6ed0 100644 (file)
@@ -71,7 +71,7 @@ public class AnnotatedLineEditor extends TextEditor implements IConversationEnab
     protected void doSetInput(IEditorInput input) throws CoreException {
 
         AnnotatedLineDocumentProvider provider = new AnnotatedLineDocumentProvider(input);
     protected void doSetInput(IEditorInput input) throws CoreException {
 
         AnnotatedLineDocumentProvider provider = new AnnotatedLineDocumentProvider(input);
-
+        
         provider.setLineDisplayStrategy(lineDisplayStrategy, input);
         setDocumentProvider(provider);
 
         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();
     public LineAnnotation createAnnotatedLine(Object entity) {
 
         IEditorInput input = getEditorInput();
+        this.conversation.close();
+        this.conversation = ((AbstractBulkEditorInput)input).getConversation();
         AnnotatedLineDocumentProvider provider = (AnnotatedLineDocumentProvider) getDocumentProvider();
 
         LineAnnotation annotation = null;
         AnnotatedLineDocumentProvider provider = (AnnotatedLineDocumentProvider) getDocumentProvider();
 
         LineAnnotation annotation = null;
index fa41c940b36db7336debf8c330afcd202f7489fe..93c471ee3e42f0a042b8cd19a006fc8b2c7b4753 100644 (file)
@@ -282,7 +282,7 @@ public class BulkEditor extends AnnotatedLineEditor implements IPartContentHasDe
                        conversation.commit(true);
                        
                        getEditorInput().dispose();
                        conversation.commit(true);
                        
                        getEditorInput().dispose();
-                       initializeEditor();
+                       getEditorInput().bind();
                        getEditorInput().performSearch(query);
 
                        refresh();
                        getEditorInput().performSearch(query);
 
                        refresh();
index dc4d133e2f6c0676640ea273d391c2081224ce61..9f733f33ea084fdb3a02e46ddd20a2b0603a6e32 100644 (file)
@@ -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.bulkeditor.IBulkEditorConstants;
 import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;
 import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInputType;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
  * <p>OpenBulkEditorHandler class.</p>
 
 /**
  * <p>OpenBulkEditorHandler class.</p>
index 00f746d977cb26c97514f565407ab3a4928d0453..cb0b8710d9ec92e0fdca6bc1fc39acfe97363c7c 100644 (file)
@@ -21,6 +21,7 @@ import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IPersistableElement;
 
 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;
 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<T extends ICdmBase> extends CdmEnt
        private List<T> model;
 
        private IEntityCreator<T> entityCreator;
        private List<T> model;
 
        private IEntityCreator<T> entityCreator;
+       private final ConversationHolder conversation;
 
        private static Class serviceClass;
 
        public AbstractBulkEditorInput() {
            super(true);
 
        private static Class serviceClass;
 
        public AbstractBulkEditorInput() {
            super(true);
+           this.conversation = CdmStore.createConversation();
        }
 
        /**
        }
 
        /**
@@ -343,4 +346,8 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> extends CdmEnt
         // TODO Auto-generated method stub
         return null;
     }
         // TODO Auto-generated method stub
         return null;
     }
+
+       public ConversationHolder getConversation() {
+               return conversation;
+       }
 }
 }
index 6116162d2857d9b597787d6de27db0edb2ffdbb7..51568f5cb3226443348f0dd49c99e4998f79ddfb 100644 (file)
 
 package eu.etaxonomy.taxeditor.bulkeditor.input;
 
 
 package eu.etaxonomy.taxeditor.bulkeditor.input;
 
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.List;
+import java.util.UUID;
 
 import eu.etaxonomy.cdm.api.service.INameService;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
 
 import eu.etaxonomy.cdm.api.service.INameService;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
@@ -98,7 +101,9 @@ public class NameEditorInput extends AbstractBulkEditorInput<TaxonNameBase> {
        /** {@inheritDoc} */
        @Override
        public List listEntities(IIdentifiableEntityServiceConfigurator configurator) {
        /** {@inheritDoc} */
        @Override
        public List listEntities(IIdentifiableEntityServiceConfigurator configurator) {
-               return CdmStore.getSearchManager().findNames(configurator);
+               
+               configurator.setPropertyPaths(getPropertyPaths());
+               return CdmStore.getSearchManager().findNames(configurator, this.getConversation());
        }
 
        /** {@inheritDoc}
        }
 
        /** {@inheritDoc}
@@ -118,12 +123,14 @@ public class NameEditorInput extends AbstractBulkEditorInput<TaxonNameBase> {
        /** {@inheritDoc} */
        @Override
     public TaxonNameBase save(TaxonNameBase entity) {
        /** {@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)
        }
 
        /* (non-Javadoc)
@@ -173,5 +180,19 @@ public class NameEditorInput extends AbstractBulkEditorInput<TaxonNameBase> {
 
     }
 
 
     }
 
+    private List<String> getPropertyPaths(){
+        List<String> 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;
+    }
 
 }
 
 }