Merge branch 'develop' into remoting-4.0
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / derivate / DerivateView.java
index a7845395ed1b783ac5bb80dc3a0cf5d933986ed5..64041cfa82e315d55a96812ee6fa7babc6e7e779 100644 (file)
@@ -2,6 +2,8 @@ package eu.etaxonomy.taxeditor.editor.view.derivate;
 
 import java.util.Collection;
 import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 import java.util.UUID;
@@ -45,6 +47,8 @@ import eu.etaxonomy.taxeditor.model.IPartContentHasFactualData;
 import eu.etaxonomy.taxeditor.model.IPartContentHasMedia;
 import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
+import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.view.derivateSearch.DerivateContentProvider;
 import eu.etaxonomy.taxeditor.view.derivateSearch.DerivateLabelProvider;
@@ -55,7 +59,7 @@ import eu.etaxonomy.taxeditor.view.derivateSearch.DerivateLabelProvider;
  */
 public class DerivateView extends EditorPart implements IPartContentHasFactualData, IDirtyMarkable,
         IConversationEnabled, IPartContentHasDetails, IPartContentHasSupplementalData, IPartContentHasMedia,
-        ISelectionChangedListener, IPostOperationEnabled {
+        ISelectionChangedListener, IPostOperationEnabled , ICdmEntitySessionEnabled {
 
     public static final String ID = "eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView";
 
@@ -73,10 +77,15 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
 
     private ISelection selection = null;
 
+    private final ICdmEntitySession cdmEntitySession;
+
+    private DerivateContentProvider contentProvider;
+
     /**
      * Default constructor
      */
     public DerivateView() {
+        cdmEntitySession = CdmStore.getCurrentSessionManager().newSession(this, true);
     }
 
     /* (non-Javadoc)
@@ -85,7 +94,8 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
     @Override
     public void createPartControl(Composite parent) {
         viewer = new TreeViewer(new Tree(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION));
-        viewer.setContentProvider(new DerivateContentProvider());
+        contentProvider = new DerivateContentProvider();
+        viewer.setContentProvider(contentProvider);
         labelProvider = new DerivateLabelProvider();
         labelProvider.setConversation(conversation);
         viewer.setLabelProvider(labelProvider);
@@ -141,6 +151,7 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
 
         // commit the conversation and start a new transaction immediately
         conversation.commit(true);
+        CdmStore.getService(IOccurrenceService.class).merge(getRootEntities());
         monitor.worked(1);
 
         this.setDirty(false);
@@ -217,6 +228,7 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
         if(!conversation.isBound()){
             conversation.bind();
         }
+        cdmEntitySession.bind();
     }
 
     /* (non-Javadoc)
@@ -335,4 +347,35 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
         return true;
     }
 
+    @Override
+    public void dispose() {
+        cdmEntitySession.dispose();
+        super.dispose();
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getCdmEntitySession()
+     */
+    @Override
+    public ICdmEntitySession getCdmEntitySession() {
+       return cdmEntitySession;
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getRootEntities()
+     */
+    @Override
+    public List<SpecimenOrObservationBase>  getRootEntities() {
+        return contentProvider.getRootElements();
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled#getPropertyPathsMap()
+     */
+    @Override
+    public Map<Object, List<String>> getPropertyPathsMap() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
 }