From: Patrick Plitzner Date: Wed, 2 Dec 2015 09:39:16 +0000 (+0100) Subject: Fix session problem when creating field unit for a taxon X-Git-Tag: 3.12.0^2~36 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/a41bd5e3e8b6529dd1735f2715e576947679b951 Fix session problem when creating field unit for a taxon --- diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/CreateFieldUnitContextMenu.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/CreateFieldUnitContextMenu.java index dc3176bdc..0828a3134 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/CreateFieldUnitContextMenu.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/contextMenu/CreateFieldUnitContextMenu.java @@ -13,6 +13,7 @@ import org.eclipse.ui.PlatformUI; import org.eclipse.ui.actions.CompoundContributionItem; import eu.etaxonomy.cdm.api.service.IOccurrenceService; +import eu.etaxonomy.cdm.api.service.ITaxonService; import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper; import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.model.description.IndividualsAssociation; @@ -46,7 +47,7 @@ public class CreateFieldUnitContextMenu extends CompoundContributionItem { if(derivateView.isListenToSelectionChange()){ Object selectionInput = derivateView.getSelectionInput(); if(selectionInput instanceof CdmBase && ((CdmBase) selectionInput).isInstanceOf(Taxon.class)){ - final Taxon taxon = HibernateProxyHelper.deproxy(selectionInput, Taxon.class); + final Taxon taxon = HibernateProxyHelper.deproxy(CdmStore.getService(ITaxonService.class).load(((CdmBase)selectionInput).getUuid()), Taxon.class); MenuItem item = new MenuItem(menu, SWT.NONE); item.setText("Create FieldUnit for "+taxon.getName()); item.addSelectionListener(new SelectionAdapter() { @@ -56,6 +57,7 @@ public class CreateFieldUnitContextMenu extends CompoundContributionItem { MessagingUtils.warningDialog(DerivateView.VIEW_HAS_UNSAVED_CHANGES, this, DerivateView.YOU_NEED_TO_SAVE_BEFORE_PERFORMING_THIS_ACTION); return; } + FieldUnit fieldUnit = FieldUnit.NewInstance(); fieldUnit = CdmBase.deproxy(CdmStore.getService(IOccurrenceService.class).save(fieldUnit), FieldUnit.class); IndividualsAssociation association = IndividualsAssociation.NewInstance(fieldUnit); @@ -67,6 +69,12 @@ public class CreateFieldUnitContextMenu extends CompoundContributionItem { description = TaxonDescription.NewInstance(taxon); } description.addElement(association); + if(CdmStore.getCurrentSessionManager().isRemoting()){ + CdmStore.getService(ITaxonService.class).merge(taxon); + } + else{ + CdmStore.getService(ITaxonService.class).saveOrUpdate(taxon); + } derivateView.getConversationHolder().commit(); derivateView.addFieldUnit(fieldUnit);