#5186 Fix erros in sequence merge and creating new specimen
authorCherian Mathew <c.mathew@bgbm.org>
Thu, 3 Sep 2015 08:17:43 +0000 (10:17 +0200)
committerCherian Mathew <c.mathew@bgbm.org>
Thu, 3 Sep 2015 13:38:47 +0000 (15:38 +0200)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/create/NewSpecimenHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/CreateDerivateContextMenu.java

index 8ada87fff423fdf3941590273dc5cfac320ffa66..bfbdd84477a478f1d9b791b4e2c99d0c2b438824 100644 (file)
@@ -53,12 +53,11 @@ public class NewSpecimenHandler extends AbstractHandler {
            FieldUnit fieldUnit = FieldUnit.NewInstance();
            DerivedUnit derivedUnit = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
            DerivationEvent.NewSimpleInstance(fieldUnit, derivedUnit, DerivationEventType.GATHERING_IN_SITU());
-           fieldUnit.setCacheStrategy(new DerivedUnitFacadeFieldUnitCacheStrategy());
-           derivedUnit.setCacheStrategy(new DerivedUnitFacadeCacheStrategy());
-        CdmStore.getService(IOccurrenceService.class).save(fieldUnit);
-        CdmStore.getService(IOccurrenceService.class).save(derivedUnit);
+        CdmStore.getService(IOccurrenceService.class).merge(fieldUnit);
         conversation.commit();
         DerivateViewEditorInput input = new DerivateViewEditorInput(Collections.singleton(fieldUnit.getUuid()));
+        fieldUnit.setCacheStrategy(new DerivedUnitFacadeFieldUnitCacheStrategy());
+        derivedUnit.setCacheStrategy(new DerivedUnitFacadeCacheStrategy());
         try {
             EditorUtil.open(input);
         } catch (PartInitException e) {
index 4ffb412a2760c5f00e7573b2faeaa147ea512555..4b07479232049f952ef483de4185e8fa12a11bb2 100644 (file)
@@ -13,6 +13,7 @@ import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.actions.CompoundContributionItem;
 
+import eu.etaxonomy.cdm.api.application.CdmApplicationState;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeCacheStrategy;
 import eu.etaxonomy.cdm.api.service.IOccurrenceService;
 import eu.etaxonomy.cdm.model.media.Media;
@@ -202,11 +203,13 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
                     Sequence newInstance = Sequence.NewInstance(dnaSample, "", 0);
                     createdElement = newInstance;
                 }
+                CdmStore.getService(IOccurrenceService.class).merge((SpecimenOrObservationBase) selectedDerivate);
             }
             else if(selectedDerivate instanceof Sequence){
                 SingleRead newInstance = SingleRead.NewInstance();
                 ((Sequence) selectedDerivate).addSingleRead(newInstance);
                 createdElement = newInstance;
+                CdmApplicationState.getCurrentAppConfig().getSequenceService().merge((Sequence)selectedDerivate);
             }
             else if(selectedDerivate instanceof SpecimenOrObservationBase && DerivedUnit.class.isAssignableFrom(childClass)){
                 SpecimenOrObservationBase<?> specimenOrObservationBase = (SpecimenOrObservationBase<?>)selectedDerivate;
@@ -232,11 +235,12 @@ public class CreateDerivateContextMenu extends CompoundContributionItem {
                 derivedUnit.setCacheStrategy(new DerivedUnitFacadeCacheStrategy());
                 derivedUnit.getTitleCache(); //update title cache
                 createdElement = derivedUnit;
+                CdmStore.getService(IOccurrenceService.class).merge((SpecimenOrObservationBase) selectedDerivate);
             }
 
             //refresh view
             if(derivateView!=null){
-                CdmStore.getService(IOccurrenceService.class).merge((SpecimenOrObservationBase) selectedDerivate);
+                //CdmStore.getService(IOccurrenceService.class).merge((SpecimenOrObservationBase) selectedDerivate);
                 derivateView.getConversationHolder().commit();
                 derivateView.refreshTree(createdElement);
             }