From 71c40e2aac33e91dd0c69aab0a9b4264479b5db3 Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Tue, 27 Sep 2016 07:18:11 +0000
Subject: [PATCH] SSDM-3897: Improve BLAST error message. Enable search button
 again if BLAST searching is failing. Change the order of execution of
 on-failure actions and finishOnFailure hook in
 AbstractAsyncCallback.onFailure().

SVN: 37119
---
 .../openbis/dss/generic/shared/utils/BlastUtils.java  |  2 +-
 .../web/client/application/AbstractAsyncCallback.java |  3 +--
 .../web/client/application/MatchingEntitiesPanel.java | 11 +++++++++++
 3 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/BlastUtils.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/BlastUtils.java
index b7e037a95ce..346f10e5807 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/BlastUtils.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/utils/BlastUtils.java
@@ -187,7 +187,7 @@ public class BlastUtils
             return output;
         }
         processResult.log();
-        String message = "Couldn't find any results. The reason is most likely that the BLAST database has been populated";
+        String message = "Couldn't find any results. The reason is most likely that the BLAST database hasn't been populated";
         throw new UserFailureException(message);
     }
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AbstractAsyncCallback.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AbstractAsyncCallback.java
index 02f9ad7a257..5fda8cbbfce 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AbstractAsyncCallback.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/AbstractAsyncCallback.java
@@ -22,7 +22,6 @@ import java.util.List;
 import com.extjs.gxt.ui.client.event.WindowEvent;
 import com.extjs.gxt.ui.client.event.WindowListener;
 import com.extjs.gxt.ui.client.widget.Dialog;
-import com.extjs.gxt.ui.client.widget.MessageBox;
 import com.google.gwt.user.client.rpc.AsyncCallback;
 import com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException;
 import com.google.gwt.user.client.rpc.InvocationException;
@@ -244,11 +243,11 @@ public abstract class AbstractAsyncCallback<T> implements AsyncCallback<T>
         {
             callbackListener.onFailureOf(viewContext, this, msg, caught);
         }
-        finishOnFailure(caught);
         for (IDelegatedAction a : failureActions)
         {
             a.execute();
         }
+        finishOnFailure(caught);
     }
 
     private boolean isIncompatibleServerException(final Throwable caught)
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java
index d6b9801638b..ccada291686 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/MatchingEntitiesPanel.java
@@ -29,6 +29,7 @@ import java.util.List;
 import com.extjs.gxt.ui.client.core.XDOM;
 import com.extjs.gxt.ui.client.event.ButtonEvent;
 import com.extjs.gxt.ui.client.event.SelectionListener;
+import com.extjs.gxt.ui.client.mvc.Dispatcher;
 import com.extjs.gxt.ui.client.store.ListStore;
 import com.extjs.gxt.ui.client.widget.LayoutContainer;
 import com.extjs.gxt.ui.client.widget.button.Button;
@@ -38,6 +39,7 @@ import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer;
 
 import ch.systemsx.cisd.openbis.generic.client.web.client.ICommonClientServiceAsync;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AbstractTabItemFactory;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.AppEvents;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DispatcherHelper;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DisplayTypeIDGenerator;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.BaseEntityModel;
@@ -51,6 +53,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IC
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.IDataRefreshCallback;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.MultilineHTML;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedAction;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.DefaultResultSetConfig;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.MatchingEntitiesPanelColumnIDs;
 import ch.systemsx.cisd.openbis.generic.client.web.client.dto.SearchableEntity;
@@ -238,6 +241,14 @@ public final class MatchingEntitiesPanel extends TypedTableGrid<MatchingEntity>
         ShowResultSetCutInfo<TypedTableResultSet<MatchingEntity>> info =
                 new ShowResultSetCutInfo<TypedTableResultSet<MatchingEntity>>(viewContext);
         callback.addOnSuccessAction(info);
+        callback.addOnFailureAction(new IDelegatedAction()
+            {
+                @Override
+                public void execute()
+                {
+                    Dispatcher.get().fireEvent(AppEvents.GLOBAL_SEARCH_FINISHED_EVENT);
+                }
+            });
         viewContext.getService().listMatchingEntities(searchableEntity, queryText,
                 useWildcardSearchMode, resultSetConfig, callback);
     }
-- 
GitLab