minor
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / model / AbstractUtility.java
index 9904a92c2809fea8c3c6475a41219a7cf50d0193..ee8102c737ab6d1f7e4e077eea370664dae83644 100644 (file)
@@ -30,9 +30,6 @@ import java.util.zip.ZipOutputStream;
 import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
 import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.commands.NotEnabledException;
-import org.eclipse.core.commands.NotHandledException;
-import org.eclipse.core.commands.common.NotDefinedException;
 import org.eclipse.core.commands.operations.AbstractOperation;
 import org.eclipse.core.commands.operations.IOperationHistory;
 import org.eclipse.core.runtime.IAdaptable;
@@ -56,14 +53,12 @@ import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.handlers.IHandlerService;
 import org.eclipse.ui.ide.undo.WorkspaceUndoUtil;
 import org.eclipse.ui.progress.IProgressConstants;
-import org.eclipse.ui.progress.IProgressService;
-import org.eclipse.ui.progress.IWorkbenchSiteProgressService;
 
 import eu.etaxonomy.cdm.api.application.CdmApplicationState;
 import eu.etaxonomy.cdm.api.service.IProgressMonitorService;
+import eu.etaxonomy.cdm.api.service.UpdateResult;
 import eu.etaxonomy.cdm.common.monitor.IRemotingProgressMonitor;
 import eu.etaxonomy.cdm.io.common.ExportDataWrapper;
 import eu.etaxonomy.cdm.io.common.ExportResult;
@@ -75,7 +70,6 @@ import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 import eu.etaxonomy.taxeditor.operation.IFeedbackGenerator;
 import eu.etaxonomy.taxeditor.operation.IPostMoniteredOperationEnabled;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
-import eu.etaxonomy.taxeditor.operation.RemotingCdmHandler;
 import eu.etaxonomy.taxeditor.operation.e4.RemotingCdmHandlerE4;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
@@ -92,7 +86,7 @@ import eu.etaxonomy.taxeditor.workbench.part.IE4SavablePart;
  */
 public abstract class AbstractUtility {
 
-    private static final Logger logger = Logger.getLogger(AbstractUtility.class);
+    protected static final Logger logger = Logger.getLogger(AbstractUtility.class);
 
     /** Constant <code>statusLineManager</code> */
     protected static IStatusLineManager statusLineManager;
@@ -155,6 +149,11 @@ public abstract class AbstractUtility {
                 String statusString = status.equals(Status.OK_STATUS) ? "completed"
                         : "cancelled";
                 setStatusLine(operationlabel + " " + statusString + ".");
+                IPostOperationEnabled postOperationEnabled = operation
+                        .getPostOperationEnabled();
+                if (postOperationEnabled != null) {
+                    postOperationEnabled.onComplete();
+                }
             });
         });
 
@@ -162,14 +161,9 @@ public abstract class AbstractUtility {
             job.setUser(true);
             job.schedule();
         } catch (Exception e) {
-            MessagingUtils.messageDialog("Error executing operation", AbstractUtility.class, "An error occured while executing " + operation.getLabel(), e);
+            MessagingUtils.messageDialog("Error executing operation", AbstractUtility.class, "An error occurred while executing " + operation.getLabel(), e);
         }
 
-        IPostOperationEnabled postOperationEnabled = operation
-                .getPostOperationEnabled();
-        if (postOperationEnabled != null) {
-            postOperationEnabled.onComplete();
-        }
         return Status.OK_STATUS;
     }
 
@@ -177,11 +171,7 @@ public abstract class AbstractUtility {
         return executeOperation_internal(operation, handler, sync);
     }
 
-    public static IStatus executeOperation(final AbstractOperation operation, final RemotingCdmHandler handler, UISynchronize sync) {
-        return executeOperation_internal(operation, handler, sync);
-    }
-
-    private static IStatus executeOperation_internal(final AbstractOperation operation, final Object handler,
+    private static IStatus executeOperation_internal(final AbstractOperation operation, final RemotingCdmHandlerE4 handler,
             UISynchronize sync) {
         if (getOperationHistory() == null) {
             throw new IllegalArgumentException(
@@ -201,12 +191,7 @@ public abstract class AbstractUtility {
                     operation.addContext(IOperationHistory.GLOBAL_UNDO_CONTEXT);
                     status = operation.execute(monitor,
                             uiInfoAdapter);
-                    if(handler instanceof RemotingCdmHandler) {
-                        ((RemotingCdmHandler) handler).postOperation(status);
-                    }
-                    else if(handler instanceof RemotingCdmHandlerE4) {
-                        ((RemotingCdmHandlerE4) handler).postOperation(status);
-                    }
+                    handler.postOperation(status);
                 } catch (ExecutionException e) {
                     MessagingUtils.operationDialog(AbstractUtility.class, e, TaxeditorStorePlugin.PLUGIN_ID, operationlabel, null);
                 } finally {
@@ -223,7 +208,7 @@ public abstract class AbstractUtility {
             job.setUser(true);
             sync.syncExec(()->job.schedule());
         } catch (Exception e) {
-            MessagingUtils.messageDialog("Error executing operation", AbstractUtility.class, "An error occured while executing " + operation.getLabel(), e);
+            MessagingUtils.messageDialog("Error executing operation", AbstractUtility.class, "An error occurred while executing " + operation.getLabel(), e);
         }
 
         return Status.OK_STATUS;
@@ -252,10 +237,10 @@ public abstract class AbstractUtility {
             // get the remoting monitor the first time to make sure that the
             // operation is valid
             final IProgressMonitorService progressMonitorService = CdmApplicationState.getCurrentAppConfig().getProgressMonitorService();
-            final IRemotingProgressMonitor firstRemotingMonitor = progressMonitorService.getRemotingMonitor(uuid);
-            if(firstRemotingMonitor == null) {
-                throw new IllegalStateException("Remoting progress monitor is null");
-            }
+//            final IRemotingProgressMonitor firstRemotingMonitor = progressMonitorService.getRemotingMonitor(uuid);
+//            if(firstRemotingMonitor == null) {
+//                throw new IllegalStateException("Remoting progress monitor is null");
+//            }
 
             Job job = new Job(label) {
 
@@ -336,7 +321,7 @@ public abstract class AbstractUtility {
                                                ZipOutputStream zos = new ZipOutputStream(stream);
                                                for (String key: keySet){
                                                byte[] fileData = resultMap.get(key);
-                                               ZipEntry entry = new ZipEntry( key + fileEnding);
+                                               ZipEntry entry = new ZipEntry( key);
                                                                                zos.putNextEntry(entry);
                                                                                zos.write(fileData);
                                                                                zos.closeEntry();
@@ -380,7 +365,7 @@ public abstract class AbstractUtility {
         } catch (Exception e) {
             MessagingUtils.errorDialog("Error executing operation",
                     AbstractUtility.class,
-                    "An error occured while executing " + label,
+                    "An error occurred while executing " + label,
                     TaxeditorStorePlugin.PLUGIN_ID,
                     e,
                     true);
@@ -478,15 +463,6 @@ public abstract class AbstractUtility {
         newMonitor.worked(steps);
     }
 
-    public static IProgressService getProgressService() {
-        IWorkbench workbench = PlatformUI.getWorkbench();
-        return workbench.getProgressService();
-    }
-
-    public static IWorkbenchSiteProgressService getProgressService2() {
-        return (IWorkbenchSiteProgressService) getService(IWorkbenchSiteProgressService.class);
-    }
-
     public static String getPluginId() {
         return "eu.taxeditor";
     }
@@ -669,37 +645,15 @@ public abstract class AbstractUtility {
         }
     }
 
-
-    public static void executeCommand(String commandId, Object source, String pluginId) {
-        IHandlerService handlerService = (IHandlerService) AbstractUtility.getService(IHandlerService.class);
-        Exception exception = null;
-        try {
-            handlerService.executeCommand(commandId, null);
-        } catch (ExecutionException e) {
-            exception = e;
-        } catch (NotDefinedException e) {
-            exception = e;
-        } catch (NotEnabledException e) {
-            exception = e;
-        } catch (NotHandledException e) {
-            exception = e;
-        } finally {
-            if(exception != null) {
-                MessagingUtils.errorDialog("Error executing command",
-                        source,
-                        "Could not execute command with id " + commandId ,
-                        pluginId,
-                        exception,
-                        true);
-            }
-        }
-    }
-
     public static Object getElementsFromSelectionChangedEvent(SelectionChangedEvent event) {
         IStructuredSelection selection = (IStructuredSelection) event.getSelection();
         Object selectionToSet = selection;
         if(selection.size() == 1){
             selectionToSet = selection.getFirstElement();
+            if (selectionToSet instanceof Object[]){
+                Object[] selectionArray = (Object[])selectionToSet;
+                selectionToSet = selectionArray;
+            }
         }
         else if(!selection.isEmpty()){
             selectionToSet = selection.toArray();
@@ -754,7 +708,11 @@ public abstract class AbstractUtility {
                     final StringBuilder reportSb = new StringBuilder();
                     // collect reports
 //                         for(String report : remotingMonitor.getResult()) {
+                    if (remotingMonitor.getResult() instanceof ExportResult) {
                         reportSb.append(((ExportResult)remotingMonitor.getResult()).createReport());
+                    }else if (remotingMonitor.getResult() instanceof UpdateResult){
+                        reportSb.append(((UpdateResult)remotingMonitor.getResult()).getExceptions().toString());
+                    }
 //                         }
                     if(!StringUtils.isBlank(reportSb.toString())) {
                         Display.getDefault().asyncExec(new Runnable() {
@@ -786,7 +744,7 @@ public abstract class AbstractUtility {
         } catch (Exception e) {
             MessagingUtils.errorDialog("Error executing operation",
                     AbstractUtility.class,
-                    "An error occured while executing " + label,
+                    "An error occurred while executing " + label,
                     TaxeditorStorePlugin.PLUGIN_ID,
                     e,
                     true);