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 d7fcc56f8d710cd59e31b4c7d2f0a926a006b217..8029f92937e9dd9b7637b86508d05fc917243c80 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;
@@ -46,6 +48,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;
@@ -56,7 +60,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"; //$NON-NLS-1$
 
@@ -77,16 +81,22 @@ 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);
     }
 
     @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);
@@ -139,6 +149,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);
@@ -196,6 +207,7 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
         if(!conversation.isBound()){
             conversation.bind();
         }
+        cdmEntitySession.bind();
     }
 
     @Override
@@ -292,9 +304,39 @@ 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;
+    }
+
     @Override
     public boolean canAttachMedia() {
         return true;
     }
-
 }