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