improve messaging for deleteresults
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / model / DeleteResultMessagingUtils.java
index ef473c3a4e374e0978981aca820bbd0a0f411390..8e46d480601319bcaf27e881dd2c62dcd9a25e33 100644 (file)
 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<String> details = new ArrayList<String>();
         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<String> relatedObjects = new ArrayList<String>();
+        if (result.getUpdatedObjects().size() > 0){
+            Iterator<CdmBase> 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();