#5242, #5223 Improve performance of derivate loading and editing
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / derivate / DerivateView.java
index 8029f92937e9dd9b7637b86508d05fc917243c80..d50ca2fce04ae8360f810c1f38b79e316878b7bd 100644 (file)
@@ -2,11 +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;
 
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jface.action.MenuManager;
@@ -34,7 +31,6 @@ import org.eclipse.ui.part.EditorPart;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
-import eu.etaxonomy.cdm.api.service.IOccurrenceService;
 import eu.etaxonomy.cdm.api.service.molecular.ISequenceService;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.molecular.Sequence;
@@ -48,8 +44,6 @@ 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;
@@ -60,7 +54,7 @@ import eu.etaxonomy.taxeditor.view.derivateSearch.DerivateLabelProvider;
  */
 public class DerivateView extends EditorPart implements IPartContentHasFactualData, IDirtyMarkable,
         IConversationEnabled, IPartContentHasDetails, IPartContentHasSupplementalData, IPartContentHasMedia,
-        ISelectionChangedListener, IPostOperationEnabled , ICdmEntitySessionEnabled {
+        ISelectionChangedListener, IPostOperationEnabled{
 
     public static final String ID = "eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView"; //$NON-NLS-1$
 
@@ -81,7 +75,6 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
 
     private ISelection selection = null;
 
-    private final ICdmEntitySession cdmEntitySession;
 
     private DerivateContentProvider contentProvider;
 
@@ -89,7 +82,6 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
      * Default constructor
      */
     public DerivateView() {
-        cdmEntitySession = CdmStore.getCurrentSessionManager().newSession(this, true);
     }
 
     @Override
@@ -116,13 +108,13 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
         generateMultiLinkSingleReads();
         labelProvider.setMultiLinkSingleReads(multiLinkSingleReads);
         IEditorInput editorInput = getEditorInput();
-        viewer.setInput(((DerivateViewEditorInput) editorInput).getRootUUIDs());
+        viewer.setInput(((DerivateViewEditorInput) editorInput).getRootEntities());
         //set selection to selected derivate if only one was selected
         if(editorInput instanceof DerivateViewEditorInput){
-            Set<UUID> derivateUUIDs = ((DerivateViewEditorInput) editorInput).getDerivateUUIDs();
-            if(derivateUUIDs.size()==1){
-                SpecimenOrObservationBase<?> specimen = CdmStore.getService(IOccurrenceService.class).load(derivateUUIDs.iterator().next());
-                if(specimen!=null){
+            Set<SpecimenOrObservationBase<?>> derivateEntities = ((DerivateViewEditorInput) editorInput).getDerivateEntities();
+            if(derivateEntities.size()==1){
+                SpecimenOrObservationBase<?> specimen = derivateEntities.iterator().next();
+                if(specimen != null){
                     viewer.setSelection(new StructuredSelection(new TreeNode(specimen)));
                 }
             }
@@ -149,7 +141,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());
+        ((DerivateViewEditorInput) getEditorInput()).merge();
         monitor.worked(1);
 
         this.setDirty(false);
@@ -207,7 +199,7 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
         if(!conversation.isBound()){
             conversation.bind();
         }
-        cdmEntitySession.bind();
+        ((DerivateViewEditorInput) getEditorInput()).bind();
     }
 
     @Override
@@ -306,34 +298,10 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
 
     @Override
     public void dispose() {
-        cdmEntitySession.dispose();
+        ((DerivateViewEditorInput) getEditorInput()).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() {