From 4549cabbff0b944e46e97d8fc12b424f9ecf0af5 Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Mon, 12 Sep 2016 12:14:59 +0000
Subject: [PATCH] SSDM-3998: WebClientConfigUtils refactored in order to avoid
 dependency between package shared and server

SVN: 37048
---
 .../web/server/CommonClientService.java       |  7 ++--
 .../resultset/MatchingEntitiesProvider.java   | 10 ++++--
 .../web/server/resultset/ScriptProvider.java  | 13 +++++---
 .../bo/AbstractDataSetBusinessObject.java     |  8 ++++-
 .../shared/util/WebClientConfigUtils.java     | 33 +++++++++----------
 .../server/resultset/ScriptProviderTest.java  |  2 +-
 6 files changed, 44 insertions(+), 29 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java
index 409bf66e2f6..3b5298c8f0a 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/CommonClientService.java
@@ -714,7 +714,7 @@ public final class CommonClientService extends AbstractClientService implements
 
         MatchingEntitiesProvider provider =
                 new MatchingEntitiesProvider(commonServer, getSessionToken(), matchingEntities, matchingSearchDomains,
-                        queryText, useWildcardSearchMode);
+                        queryText, useWildcardSearchMode, webClientConfigurationProvider);
         return listEntities(provider, resultSetConfig);
     }
 
@@ -755,7 +755,7 @@ public final class CommonClientService extends AbstractClientService implements
     {
         ScriptProvider scriptProvider =
                 new ScriptProvider(commonServer, getSessionToken(), criteria.tryGetScriptType(),
-                        criteria.tryGetEntityKind());
+                        criteria.tryGetEntityKind(), webClientConfigurationProvider);
         return listEntities(scriptProvider, criteria);
     }
 
@@ -1058,7 +1058,8 @@ public final class CommonClientService extends AbstractClientService implements
             {
                 SearchableEntity searchableEntity = new SearchableEntity();
                 searchableEntity.setName(entity.name());
-                searchableEntity.setDescription(WebClientConfigUtils.getTranslatedDescription(entity));
+                searchableEntity.setDescription(
+                        WebClientConfigUtils.getTranslatedDescription(webClientConfigurationProvider, entity));
                 searchableEntity.setType(Type.ENTITY);
                 searchableEntities.add(searchableEntity);
             }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/MatchingEntitiesProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/MatchingEntitiesProvider.java
index d7cc8fe098f..5f04f696f89 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/MatchingEntitiesProvider.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/MatchingEntitiesProvider.java
@@ -32,6 +32,7 @@ import java.util.List;
 
 import ch.systemsx.cisd.openbis.generic.client.web.server.translator.SearchableEntityTranslator;
 import ch.systemsx.cisd.openbis.generic.shared.ICommonServer;
+import ch.systemsx.cisd.openbis.generic.shared.WebClientConfigurationProvider;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchDomain;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchDomainSearchOption;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode;
@@ -65,8 +66,11 @@ public class MatchingEntitiesProvider implements ITableModelProvider<MatchingEnt
 
     private final boolean useWildcardSearchMode;
 
+    private final WebClientConfigurationProvider webClientConfigurationProvider;
+
     public MatchingEntitiesProvider(ICommonServer commonServer, String sessionToken,
-            SearchableEntity[] matchingEntities, SearchDomain[] matchingSearchDomains, String queryText, boolean useWildcardSearchMode)
+            SearchableEntity[] matchingEntities, SearchDomain[] matchingSearchDomains, String queryText, 
+            boolean useWildcardSearchMode, WebClientConfigurationProvider webClientConfigurationProvider)
     {
         this.commonServer = commonServer;
         this.sessionToken = sessionToken;
@@ -76,6 +80,7 @@ public class MatchingEntitiesProvider implements ITableModelProvider<MatchingEnt
         
         this.queryText = queryText;
         this.useWildcardSearchMode = useWildcardSearchMode;
+        this.webClientConfigurationProvider = webClientConfigurationProvider;
     }
     
     @Override
@@ -110,7 +115,8 @@ public class MatchingEntitiesProvider implements ITableModelProvider<MatchingEnt
         {
             builder.addRow(matchingEntity);
             builder.column(ENTITY_KIND).addString(
-                    WebClientConfigUtils.getTranslatedDescription(matchingEntity.getEntityKind()));
+                    WebClientConfigUtils.getTranslatedDescription(webClientConfigurationProvider,
+                            matchingEntity.getEntityKind()));
             builder.column(ENTITY_TYPE).addString(matchingEntity.getEntityType().getCode());
             builder.column(SEARCH_DOMAIN_TYPE).addString(matchingEntity.getSearchDomain());
             builder.column(IDENTIFIER).addString(matchingEntity.getIdentifier());
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/ScriptProvider.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/ScriptProvider.java
index f7e04368fdb..250adbebb04 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/ScriptProvider.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/ScriptProvider.java
@@ -30,6 +30,7 @@ import java.util.List;
 
 import ch.systemsx.cisd.common.shared.basic.string.CommaSeparatedListBuilder;
 import ch.systemsx.cisd.openbis.generic.shared.ICommonServer;
+import ch.systemsx.cisd.openbis.generic.shared.WebClientConfigurationProvider;
 import ch.systemsx.cisd.openbis.generic.shared.basic.SimpleYesNoRenderer;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Script;
@@ -49,12 +50,16 @@ public class ScriptProvider extends AbstractCommonTableModelProvider<Script>
 
     private final EntityKind entityKindOrNull;
 
+    private final WebClientConfigurationProvider webClientConfigurationProvider;
+
     public ScriptProvider(ICommonServer commonServer, String sessionToken,
-            ScriptType scriptTypeOrNull, EntityKind entityKindOrNull)
+            ScriptType scriptTypeOrNull, EntityKind entityKindOrNull, 
+            WebClientConfigurationProvider webClientConfigurationProvider)
     {
         super(commonServer, sessionToken);
         this.scriptTypeOrNull = scriptTypeOrNull;
         this.entityKindOrNull = entityKindOrNull;
+        this.webClientConfigurationProvider = webClientConfigurationProvider;
     }
 
     @Override
@@ -89,20 +94,20 @@ public class ScriptProvider extends AbstractCommonTableModelProvider<Script>
         return builder.getModel();
     }
 
-    private static String buildDescription(EntityKind[] entityKinds)
+    private String buildDescription(EntityKind[] entityKinds)
     {
         if (entityKinds == null)
         {
             return "All";
         } else if (entityKinds.length == 1)
         {
-            return WebClientConfigUtils.getTranslatedDescription(entityKinds[0]);
+            return WebClientConfigUtils.getTranslatedDescription(webClientConfigurationProvider, entityKinds[0]);
         }
 
         CommaSeparatedListBuilder builder = new CommaSeparatedListBuilder();
         for (EntityKind entityKind : entityKinds)
         {
-            builder.append(WebClientConfigUtils.getTranslatedDescription(entityKind));
+            builder.append(WebClientConfigUtils.getTranslatedDescription(webClientConfigurationProvider, entityKind));
         }
 
         return builder.toString();
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractDataSetBusinessObject.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractDataSetBusinessObject.java
index 4432d9569e8..4c7427495ca 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractDataSetBusinessObject.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractDataSetBusinessObject.java
@@ -28,12 +28,15 @@ import java.util.Set;
 
 import ch.systemsx.cisd.common.collection.CollectionUtils;
 import ch.systemsx.cisd.common.exceptions.UserFailureException;
+import ch.systemsx.cisd.openbis.generic.server.CommonServiceProvider;
 import ch.systemsx.cisd.openbis.generic.server.business.IRelationshipService;
 import ch.systemsx.cisd.openbis.generic.server.business.IServiceConversationClientManagerLocal;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.util.DataSetTypeWithoutExperimentChecker;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDataDAO;
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IEntityPropertiesConverter;
+import ch.systemsx.cisd.openbis.generic.shared.ResourceNames;
+import ch.systemsx.cisd.openbis.generic.shared.WebClientConfigurationProvider;
 import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetRelationshipPE;
@@ -120,8 +123,11 @@ public abstract class AbstractDataSetBusinessObject extends AbstractSampleIdenti
                         identifier.getSpaceCode(), identifier.getProjectCode());
         if (project == null)
         {
+            WebClientConfigurationProvider provider =
+                    (WebClientConfigurationProvider) CommonServiceProvider.tryToGetBean(
+                            ResourceNames.WEB_CLIENT_CONFIGURATION_PROVIDER);
             throw UserFailureException.fromTemplate("Unkown %s because of unkown project: %s",
-                    WebClientConfigUtils.getExperimentText(), identifier);
+                    WebClientConfigUtils.getExperimentText(provider), identifier);
         }
         return getExperimentDAO().tryFindByCodeAndProject(project, identifier.getExperimentCode());
     }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/util/WebClientConfigUtils.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/util/WebClientConfigUtils.java
index a05941703d6..2de94d5d719 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/util/WebClientConfigUtils.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/util/WebClientConfigUtils.java
@@ -16,8 +16,6 @@
 
 package ch.systemsx.cisd.openbis.generic.shared.util;
 
-import ch.systemsx.cisd.openbis.generic.server.CommonServiceProvider;
-import ch.systemsx.cisd.openbis.generic.shared.ResourceNames;
 import ch.systemsx.cisd.openbis.generic.shared.WebClientConfigurationProvider;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.WebClientConfiguration;
@@ -30,53 +28,52 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.SearchableEntity;
  */
 public class WebClientConfigUtils
 {
-    public static String getTranslatedDescription(SearchableEntity entity)
+    public static String getTranslatedDescription(WebClientConfigurationProvider provider, SearchableEntity entity)
     {
         String description = entity.getDescription();
-        if (getWebClientConfiguration() != null)
+        WebClientConfiguration webClientConfiguration = getWebClientConfiguration(provider);
+        if (webClientConfiguration != null)
         {
             if (entity == SearchableEntity.SAMPLE)
             {
-                description = getSampleText();
+                description = webClientConfiguration.getSampleText();
             } else if (entity == SearchableEntity.EXPERIMENT)
             {
-                description = getExperimentText();
+                description = webClientConfiguration.getExperimentText();
             }
         }
         return description;
     }
 
-    public static String getTranslatedDescription(EntityKind entityKind)
+    public static String getTranslatedDescription(WebClientConfigurationProvider provider, EntityKind entityKind)
     {
         String description = entityKind.getDescription();
-        if (getWebClientConfiguration() != null)
+        WebClientConfiguration webClientConfiguration = getWebClientConfiguration(provider);
+        if (webClientConfiguration != null)
         {
             if (entityKind == EntityKind.SAMPLE)
             {
-                description = getSampleText();
+                description = webClientConfiguration.getSampleText();
             } else if (entityKind == EntityKind.EXPERIMENT)
             {
-                description = getExperimentText();
+                description = webClientConfiguration.getExperimentText();
             }
         }
         return description;
     }
 
-    public static String getSampleText()
+    public static String getSampleText(WebClientConfigurationProvider provider)
     {
-        return getWebClientConfiguration().getSampleText();
+        return getWebClientConfiguration(provider).getSampleText();
     }
     
-    public static String getExperimentText()
+    public static String getExperimentText(WebClientConfigurationProvider provider)
     {
-        return getWebClientConfiguration().getExperimentText();
+        return getWebClientConfiguration(provider).getExperimentText();
     }
     
-    public static WebClientConfiguration getWebClientConfiguration()
+    private static WebClientConfiguration getWebClientConfiguration(WebClientConfigurationProvider provider)
     {
-        WebClientConfigurationProvider provider =
-                (WebClientConfigurationProvider) CommonServiceProvider.tryToGetBean(
-                        ResourceNames.WEB_CLIENT_CONFIGURATION_PROVIDER);
         return provider == null ? null : provider.getWebClientConfiguration();
     }
 
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/ScriptProviderTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/ScriptProviderTest.java
index 82018af27cc..556a6250dbc 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/ScriptProviderTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/client/web/server/resultset/ScriptProviderTest.java
@@ -51,7 +51,7 @@ public class ScriptProviderTest extends AbstractProviderTest
             });
         ScriptProvider scriptProvider =
                 new ScriptProvider(server, SESSION_TOKEN, ScriptType.DYNAMIC_PROPERTY,
-                        EntityKind.EXPERIMENT);
+                        EntityKind.EXPERIMENT, null);
 
         TypedTableModel<Script> tableModel = scriptProvider.createTableModel();
 
-- 
GitLab