From 6da59e5de82737ab938e05c963205833bc3a9e51 Mon Sep 17 00:00:00 2001
From: Patrick Plitzner
Date: Tue, 23 Feb 2016 18:25:31 +0100
Subject: [PATCH] Fix editing of transient entities in EntitySelectionElement
#5592
---
.../ui/selection/EditFromSelectionWizard.java | 10 ++++++++--
.../ui/selection/EntitySelectionElement.java | 18 ++++++++++--------
2 files changed, 18 insertions(+), 10 deletions(-)
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EditFromSelectionWizard.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EditFromSelectionWizard.java
index 08efabd7e..8340b243f 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EditFromSelectionWizard.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EditFromSelectionWizard.java
@@ -89,8 +89,14 @@ public class EditFromSelectionWizard extends Wizard implements
CdmFormFactory formFactory = selectionElement.getFormFactory();
CdmBase entity = (CdmBase) HibernateProxyHelper
.deproxy(selectionElement.getEntity());
- IService service = CdmStore.getService(entity);
- rootElement = service.load(entity.getUuid());
+ //check if entity has already been persisted
+ if(entity.getId()==0){
+ rootElement = entity;
+ }
+ else{
+ IService service = CdmStore.getService(entity);
+ rootElement = service.load(entity.getUuid());
+ }
if (rootElement.isInstanceOf(Reference.class)) {
addPage(new ReferenceWizardPage(formFactory,
selectionElement.getConversationHolder(),
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EntitySelectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EntitySelectionElement.java
index c4e708be4..b04c73d4d 100644
--- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EntitySelectionElement.java
+++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EntitySelectionElement.java
@@ -421,18 +421,20 @@ public class EntitySelectionElement extends
/** {@inheritDoc} */
@Override
public void widgetSelected(SelectionEvent e) {
-
- IService service = CdmStore.getService(entity);
- T loadedEntity = service.load(entity.getUuid());
- if (loadedEntity==null){
- MessageDialog.openInformation(null,"Save changes", "You have made changes that must be saved before this query can be executed");
- return;
- }
WizardDialog dialog = new WizardDialog(selectionElement.getShell(),
new EditFromSelectionWizard(selectionElement));
if (dialog.open() == IStatus.OK) {
-
selectionElement.updateFromWizard();
+ //if the edited entity has already been persisted
+ //but the transient entity is still set in this
+ //EntitySelectionElement, re-load it and set it
+ IService service = CdmStore.getService(entity);
+ if(entity.getId()==0){
+ T loadedEntity = service.load(entity.getUuid());
+ if(loadedEntity!=null){
+ setEntity(loadedEntity);
+ }
+ }
}
}
}
--
2.34.1