From 8336cf65f0318da2d4e4c1568049adff77818ef9 Mon Sep 17 00:00:00 2001 From: Katja Luther Date: Wed, 7 Oct 2015 14:13:48 +0200 Subject: [PATCH] improve messaging for deleteresults --- .../bulkeditor/handler/DeleteHandler.java | 5 +-- .../operation/DeleteSynonymOperation.java | 7 ++-- .../name/operation/DeleteTaxonOperation.java | 8 ++--- .../navigator/operation/DeleteOperation.java | 13 +++---- .../taxeditor/model/CdmErrorDialog.java | 22 ++++++++++++ .../model/DeleteResultMessagingUtils.java | 35 +++++++++++++++++-- 6 files changed, 72 insertions(+), 18 deletions(-) diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/DeleteHandler.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/DeleteHandler.java index 49aaed016..3f15c4f7d 100644 --- a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/DeleteHandler.java +++ b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/DeleteHandler.java @@ -154,7 +154,7 @@ public class DeleteHandler extends AbstractHandler { messages.add(e.getMessage()); } errorMessage += "could not be deleted."; - + //MessagingUtils.errorDialog("test", getClass(), "message", TaxeditorBulkeditorPlugin.PLUGIN_ID, result.getExceptions().iterator().next(),true); DeleteResultMessagingUtils.messageDialogWithDetails(result,errorMessage, TaxeditorBulkeditorPlugin.PLUGIN_ID); }else{ MessagingUtils.messageDialog("Delete not possible", getClass(), "The object could not be deleted. An exception occured.", null); @@ -168,7 +168,8 @@ public class DeleteHandler extends AbstractHandler { for (Exception e:result.getExceptions()){ messages.add(e.getMessage()); } - errorMessage += "was deleted but there where updated objects"; + errorMessage += "was deleted but related object(s) could not be deleted. "; + //MessagingUtils.errorDialog("test", getClass(), "message", TaxeditorBulkeditorPlugin.PLUGIN_ID, result.getExceptions().iterator().next(),true); DeleteResultMessagingUtils.messageDialogWithDetails(result, errorMessage, TaxeditorBulkeditorPlugin.PLUGIN_ID); } diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteSynonymOperation.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteSynonymOperation.java index b21efefce..00d27bf12 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteSynonymOperation.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteSynonymOperation.java @@ -16,7 +16,6 @@ import org.eclipse.core.commands.operations.IUndoContext; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; -import org.eclipse.jface.dialogs.MessageDialog; import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration; import eu.etaxonomy.cdm.api.service.DeleteResult; @@ -24,6 +23,8 @@ import eu.etaxonomy.cdm.api.service.ITaxonService; import eu.etaxonomy.cdm.model.taxon.Synonym; import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType; import eu.etaxonomy.cdm.model.taxon.Taxon; +import eu.etaxonomy.taxeditor.editor.internal.TaxeditorEditorPlugin; +import eu.etaxonomy.taxeditor.model.DeleteResultMessagingUtils; import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation; import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled; import eu.etaxonomy.taxeditor.store.CdmStore; @@ -81,9 +82,9 @@ public class DeleteSynonymOperation extends AbstractPostTaxonOperation { DeleteResult result = service.deleteSynonym(synonym.getUuid(), element.getUuid(), null); if (result.isError()){ - MessageDialog.openError(null, "Delete failed", result.toString()); + DeleteResultMessagingUtils.messageDialogWithDetails(result, "Delete failed", TaxeditorEditorPlugin.PLUGIN_ID); } else if (!result.getUpdatedObjects().isEmpty()){ - MessageDialog.openInformation(null, "Delete successfull", "The Synonym could be deleted, but there is an updated object: " + result.toString()); + DeleteResultMessagingUtils.messageDialogWithDetails(result, "The Synonym could be deleted, but related object(s) could not be deleted", TaxeditorEditorPlugin.PLUGIN_ID); } } // taxon.removeSynonym(synonym); diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteTaxonOperation.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteTaxonOperation.java index b22c6b677..48632e45b 100644 --- a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteTaxonOperation.java +++ b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteTaxonOperation.java @@ -8,7 +8,6 @@ import org.eclipse.core.commands.operations.IUndoContext; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; -import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.ui.IWorkbenchPage; import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration; @@ -19,7 +18,8 @@ import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator; import eu.etaxonomy.cdm.model.taxon.Classification; import eu.etaxonomy.cdm.model.taxon.Taxon; import eu.etaxonomy.cdm.model.taxon.TaxonNode; -import eu.etaxonomy.taxeditor.model.MessagingUtils; +import eu.etaxonomy.taxeditor.editor.internal.TaxeditorEditorPlugin; +import eu.etaxonomy.taxeditor.model.DeleteResultMessagingUtils; import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled; import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled; import eu.etaxonomy.taxeditor.store.CdmStore; @@ -75,9 +75,9 @@ public class DeleteTaxonOperation extends DeleteTaxonBaseOperation{ DeleteResult result = service.deleteTaxon(element.getUuid(), configurator, classification.getUuid()); if (result.isError()){ - MessageDialog.openError(null, "Delete failed", result.toString()); + DeleteResultMessagingUtils.messageDialogWithDetails(result, "Delete failed", TaxeditorEditorPlugin.PLUGIN_ID); } else if (!result.getUpdatedObjects().isEmpty()){ - MessagingUtils.informationDialog("Delete successfull", result.toString()); + DeleteResultMessagingUtils.messageDialogWithDetails(result, "The Taxon was deleted, but related object(s) could not be deleted", TaxeditorEditorPlugin.PLUGIN_ID); } monitor.worked(40); diff --git a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/DeleteOperation.java b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/DeleteOperation.java index a2fea9759..cd0fbef49 100644 --- a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/DeleteOperation.java +++ b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/DeleteOperation.java @@ -19,7 +19,6 @@ import org.eclipse.core.commands.operations.IUndoContext; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; -import org.eclipse.jface.dialogs.MessageDialog; import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration; import eu.etaxonomy.cdm.api.conversation.IConversationEnabled; @@ -31,6 +30,8 @@ import eu.etaxonomy.cdm.model.common.CdmBase; import eu.etaxonomy.cdm.model.taxon.Classification; import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode; import eu.etaxonomy.cdm.model.taxon.TaxonNode; +import eu.etaxonomy.taxeditor.model.DeleteResultMessagingUtils; +import eu.etaxonomy.taxeditor.navigation.internal.TaxeditorNavigationPlugin; import eu.etaxonomy.taxeditor.operation.AbstractPersistentPostOperation; import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled; import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled; @@ -111,15 +112,15 @@ public class DeleteOperation extends AbstractPersistentPostOperation{ DeleteResult result = service.deleteTaxonNode((TaxonNode)taxonNode, config); if (result.isError() && !result.getExceptions().isEmpty()){ - //TODO:Error message! - MessageDialog.openError(null, "Delete failed", result.getExceptions().iterator().next().getMessage()); + + DeleteResultMessagingUtils.messageDialogWithDetails(result, "TaxonNode could not be deleted.", TaxeditorNavigationPlugin.PLUGIN_ID); } else if (!result.getExceptions().isEmpty()){ String separator = ", "; String exceptionString = ""; for (Exception exception : result.getExceptions()) { exceptionString += exception.getLocalizedMessage()+separator; } - MessageDialog.openInformation(null, "Delete of the node was successful but the taxon could not be deleted.", exceptionString); + DeleteResultMessagingUtils.messageDialogWithDetails(result, "TaxonNode was successfully deleted, but related object(s) could not be deleted", TaxeditorNavigationPlugin.PLUGIN_ID); } @@ -129,7 +130,7 @@ public class DeleteOperation extends AbstractPersistentPostOperation{ DeleteResult result = CdmStore.getService(IClassificationService.class).delete(taxonomicTree.getUuid()); if (result.isError() && !result.getExceptions().isEmpty()){ //TODO:Error message! - MessageDialog.openError(null, "Delete failed", result.getExceptions().iterator().next().getMessage()); + DeleteResultMessagingUtils.messageDialogWithDetails(result, "TaxonNode could not be deleted.", TaxeditorNavigationPlugin.PLUGIN_ID); } } else { Set treeNodeUuids = new HashSet(); @@ -144,7 +145,7 @@ public class DeleteOperation extends AbstractPersistentPostOperation{ DeleteResult result = service.deleteTaxonNodes(treeNodeUuids, config); if (result.isError() && !result.getExceptions().isEmpty()){ //TODO:Error message! - MessageDialog.openError(null, "Delete failed", result.getExceptions().iterator().next().getMessage()); + DeleteResultMessagingUtils.messageDialogWithDetails(result, "TaxonNode could not be deleted.", TaxeditorNavigationPlugin.PLUGIN_ID); } } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/CdmErrorDialog.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/CdmErrorDialog.java index 9d33e2a12..087fa83c4 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/CdmErrorDialog.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/CdmErrorDialog.java @@ -53,6 +53,26 @@ public class CdmErrorDialog extends ErrorDialog { message, status, IStatus.OK| IStatus.INFO | IStatus.WARNING | IStatus.ERROR); this.stackTrace = stackTrace; + + + } + + /** + * @param parentShell + * @param dialogTitle + * @param message + * @param status + * @param stackTrace + */ + public CdmErrorDialog(Shell parentShell, + String dialogTitle, + String message, + IStatus status, + String stackTrace, + Object[] updatedObjects) { + this(parentShell, dialogTitle, message, status, stackTrace); + this.message = message == null ? status.getMessage() + : message + "\n " + status.getMessage(); //$NON-NLS-1$ } /** @@ -136,4 +156,6 @@ public class CdmErrorDialog extends ErrorDialog { new Transfer[] { TextTransfer.getInstance() }); } } + + } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/DeleteResultMessagingUtils.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/DeleteResultMessagingUtils.java index ef473c3a4..8e46d4806 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/DeleteResultMessagingUtils.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/DeleteResultMessagingUtils.java @@ -10,12 +10,15 @@ package eu.etaxonomy.taxeditor.model; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import eu.etaxonomy.cdm.api.service.DeleteResult; +import eu.etaxonomy.cdm.model.common.CdmBase; +import eu.etaxonomy.cdm.model.common.IdentifiableEntity; /** * @author k.luther @@ -37,14 +40,40 @@ public class DeleteResultMessagingUtils extends MessagingUtils { List details = new ArrayList(); String title= ""; - if (result.isOk() && result.getExceptions().size() > 0){ + if (result.getExceptions().size() > 0){ for (Exception e:result.getExceptions()){ details.add(e.getMessage()); } - title = "The delete was successfull."; + if (result.isOk()){ + title = "Delete was successfull."; + } else { + title = "Delete was aborted."; + } + } + StringBuffer relatedObjectsString = new StringBuffer(); + List relatedObjects = new ArrayList(); + if (result.getUpdatedObjects().size() > 0){ + Iterator objects = result.getRelatedObjects().iterator(); + while (objects.hasNext()){ + CdmBase object = objects.next(); + if (object instanceof IdentifiableEntity){ + relatedObjects.add("[" + object.getClass().getSimpleName() + "] " +((IdentifiableEntity)object).getTitleCache() ); + } else{ + relatedObjects.add(object.getUserFriendlyTypeName()); + } + + } + + for (String relatedObject: relatedObjects){ + + relatedObjectsString.append(relatedObject); + relatedObjectsString.append("\n"); + } } + message = message + "\n" ; String stackTraceWithContext = getContextInfo(details); - CdmErrorDialog ced = new CdmErrorDialog(AbstractUtility.getShell(), title, message, new Status(IStatus.ERROR, pluginId, null), stackTraceWithContext); + CdmDeleteErrorDialog ced = new CdmDeleteErrorDialog(AbstractUtility.getShell(), title, message,new Status(IStatus.INFO, pluginId, relatedObjectsString.toString(), result.getExceptions().iterator().next()), stackTraceWithContext, result.getUpdatedObjects().toArray()); + ced.open(); -- 2.34.1