ref #6932 Fix new element handler and save
[taxeditor.git] / eu.etaxonomy.taxeditor.bulkeditor / src / main / java / eu / etaxonomy / taxeditor / bulkeditor / e4 / BulkEditorE4.java
index 2fd6341f1f8ddec240a619f3a9d4b548e20d016b..866b2d3fdf729c0106dd1ee00bfc7ef07d575e37 100644 (file)
@@ -126,10 +126,20 @@ public class BulkEditorE4 implements IPartContentHasDetails, IConversationEnable
 
        @Persist
        public void save() {
-           dirty.setDirty(false);
+           // commit the conversation and start a new transaction immediately
+           conversation.commit(true);
 
-           this.searchBar.updateEditorInput();
+           Object object = viewer.getInput();
+           if(object instanceof List){
+               for (Object item: (List)object) {
+                   if(item instanceof AnnotatedTableItem){
+                       CdmBase cdmBase = ((AnnotatedTableItem) item).getElement();
+                    CdmStore.getService(cdmBase).merge(cdmBase, true);
+                   }
 
+            }
+           }
+        dirty.setDirty(false);
        }
 
        /** {@inheritDoc} */
@@ -156,9 +166,24 @@ public class BulkEditorE4 implements IPartContentHasDetails, IConversationEnable
     }
 
     public void refresh() {
+        refresh(false);
+    }
+
+    public void refresh(boolean resetInput) {
+        if(resetInput){
+            viewer.setInput(getEditorInput().getWrappedModel());
+        }
         viewer.refresh();
     }
 
+    public TableViewer getViewer() {
+        return viewer;
+    }
+
+    public void setDirty(){
+        dirty.setDirty(true);
+    }
+
     public boolean isDirty() {
         return dirty.isDirty();
     }