- fixed session problems by using just the UUID of the derivate from the DerivateSea...
authorPatric Plitzner <p.plitzner@bgbm.org>
Wed, 11 Dec 2013 10:46:32 +0000 (10:46 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Wed, 11 Dec 2013 10:46:32 +0000 (10:46 +0000)
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientOccurenceService.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenDerivateViewHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateViewEditorInput.java

index 768481d3b984b87fa3f6e57d6fa7b12861cf1c90..e47802df50d2179bf3fb12cec2c0481e93763dc0 100644 (file)
@@ -858,11 +858,12 @@ public class TransientOccurenceService implements IOccurrenceService {
     }
 
     /* (non-Javadoc)
-     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getFieldUnits(eu.etaxonomy.cdm.model.occurrence.DerivedUnit)
+     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getFieldUnits(java.util.UUID)
      */
     @Override
-    public Collection<FieldUnit> getFieldUnits(DerivedUnit derivedUnit) {
-        return defaultService.getFieldUnits(derivedUnit);
+    public Collection<FieldUnit> getFieldUnits(UUID derivedUnitUuid) {
+        return defaultService.getFieldUnits(derivedUnitUuid);
     }
 
+
 }
index 118c671b8791ce9801f93612cb4869e3ea4a560a..a718ba5b0b80cc2212beac33bdfe26ab89e1caa2 100644 (file)
@@ -25,7 +25,7 @@ public class OpenDerivateViewHandler extends AbstractHandler {
             Object selectedElement = ((IStructuredSelection) currentSelection).getFirstElement();
             if(selectedElement instanceof SpecimenOrObservationBase<?>){
 
-                DerivateViewEditorInput input = new DerivateViewEditorInput((SpecimenOrObservationBase<?>) selectedElement);
+                DerivateViewEditorInput input = new DerivateViewEditorInput(((SpecimenOrObservationBase<?>) selectedElement).getUuid());
                 try {
                     EditorUtil.open(input);
                 } catch (PartInitException e) {
index 806d730b61f9de980cf001007464936b0a08eb0b..566fc6f9670cb2a6ba0258aeccc7cd1ba79ac5d6 100644 (file)
@@ -25,7 +25,6 @@ import eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider;
 import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
 import eu.etaxonomy.taxeditor.model.IPartContentHasFactualData;
 import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
-import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.campanula.derivatesearch.DerivateLabelProvider;
 
 /**
@@ -118,9 +117,11 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
      */
     @Override
     public void init(IEditorSite site, IEditorInput input) throws PartInitException {
-        conversation = CdmStore.createConversation();
         setSite(site);
         setInput(input);
+        if(input instanceof DerivateViewEditorInput){
+            conversation = ((DerivateViewEditorInput) input).getConversationHolder();
+        }
     }
 
     /* (non-Javadoc)
@@ -153,8 +154,10 @@ public class DerivateView extends EditorPart implements IPartContentHasFactualDa
      */
     @Override
     public void setFocus() {
-        // TODO Auto-generated method stub
-
+        //make sure to bind again if maybe in another view the conversation was unbound
+        if(!conversation.isBound()){
+            conversation.bind();
+        }
     }
 
     /* (non-Javadoc)
index bed369ad394f34c34fda4a049260540aaa1d16c1..395e95a8f93cabfb93eabd7c0472137ce178495b 100644 (file)
 package eu.etaxonomy.taxeditor.editor.view.derivate;
 
 import java.util.Collection;
+import java.util.UUID;
 
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IPersistableElement;
 
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
@@ -40,20 +42,23 @@ public class DerivateViewEditorInput implements IEditorInput {
      */
     private FieldUnit fieldUnit;
 
+    private ConversationHolder conversationHolder;
+
     /**
      * Creates an editor input for the {@link DerivateView} with the currently selected derivate and the
      * corresponding {@link FieldUnit} (both may be the same object).
-     * @param derivate the derivate for which the derivate hierarchy should be shown
+     * @param derivateUuid the {@link UUID} of the derivate for which the derivate hierarchy should be shown
      * @param fieldUnit the root of the hierarchy
      */
-    public DerivateViewEditorInput(SpecimenOrObservationBase<?> derivate) {
+    public DerivateViewEditorInput(UUID derivateUuid) {
         super();
-        this.derivate = derivate;
+        this.conversationHolder = CdmStore.createConversation();
+        this.derivate = CdmStore.getCurrentApplicationConfiguration().getOccurrenceService().load(derivateUuid);
         if(derivate instanceof FieldUnit){
             this.fieldUnit = (FieldUnit) derivate;
         }
         else if(derivate instanceof DerivedUnit){
-            Collection<FieldUnit> fieldUnits = CdmStore.getCurrentApplicationConfiguration().getOccurrenceService().getFieldUnits((DerivedUnit) derivate);
+            Collection<FieldUnit> fieldUnits = CdmStore.getCurrentApplicationConfiguration().getOccurrenceService().getFieldUnits(derivateUuid);
             if(!fieldUnits.isEmpty()){
                 // TODO think about handling multiple parent FieldUnits
                 this.fieldUnit = fieldUnits.iterator().next();
@@ -129,6 +134,13 @@ public class DerivateViewEditorInput implements IEditorInput {
         return fieldUnit;
     }
 
+    /**
+     * @return the conversationHolder
+     */
+    public ConversationHolder getConversationHolder() {
+        return conversationHolder;
+    }
+
     /* (non-Javadoc)
      * @see java.lang.Object#hashCode()
      */