From ae0ee5a976dddbfedae301865a253f773ef3dac1 Mon Sep 17 00:00:00 2001
From: brinn <brinn>
Date: Sun, 12 Aug 2012 12:16:40 +0000
Subject: [PATCH] [BIS-149/SP-237] Display settings for custom web UIs. Change
 interface for web app settings to use WebAppSettings object and add methods
 getWebAppSettings and setWebAppSettings to IOpenbisServiceFacade.

SVN: 26338
---
 .../client/api/v1/IOpenbisServiceFacade.java  | 14 +++++++++
 .../api/v1/impl/OpenbisServiceFacade.java     | 29 +++++++++++++++++--
 2 files changed, 40 insertions(+), 3 deletions(-)

diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/v1/IOpenbisServiceFacade.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/v1/IOpenbisServiceFacade.java
index bf7e9dc253c..1ed2f8518ad 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/v1/IOpenbisServiceFacade.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/v1/IOpenbisServiceFacade.java
@@ -28,6 +28,7 @@ import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.NewVocabularyTerm;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Sample;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SampleFetchOption;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchCriteria;
+import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.WebAppSettings;
 import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary;
 
@@ -45,6 +46,19 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary;
 public interface IOpenbisServiceFacade extends ISimpleOpenbisServiceFacade
 {
 
+    /**
+     * Returns the persistent settings for a given custom web app.
+     * 
+     * @param webAppId The id of the custom web app to get the display settings for.
+     */
+    public WebAppSettings getWebAppSettings(String webAppId);
+    
+    /**
+     * Sets the persistent settings for a given custom web app.
+     * @param customDisplaySettings The new display settings
+     */
+    public void setWebAppSettings(WebAppSettings customDisplaySettings);
+
     /**
      * Return all samples that match the search criteria.
      * This is a short cut for
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/v1/impl/OpenbisServiceFacade.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/v1/impl/OpenbisServiceFacade.java
index 9741a72b96f..1f04e6d1174 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/v1/impl/OpenbisServiceFacade.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/v1/impl/OpenbisServiceFacade.java
@@ -55,6 +55,7 @@ import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchCriteria.MatchCl
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchCriteria.SearchOperator;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchSubCriteria;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SpaceWithProjectsAndRoleAssignments;
+import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.WebAppSettings;
 import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary;
 import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier;
@@ -172,16 +173,16 @@ public class OpenbisServiceFacade implements IOpenbisServiceFacade
     private final IGeneralInformationChangingService changingService;
 
     private final IDssComponent dssComponent;
+    
+    private final int minorVersionChangingService;
 
-    /**
-     * ctor.
-     */
     public OpenbisServiceFacade(String sessionToken, IGeneralInformationService service,
             IGeneralInformationChangingService changingService, IDssComponent dssComponent)
     {
         this.sessionToken = sessionToken;
         this.service = service;
         this.changingService = changingService;
+        this.minorVersionChangingService = changingService.getMinorVersion();
         this.dssComponent = dssComponent;
     }
 
@@ -521,6 +522,28 @@ public class OpenbisServiceFacade implements IOpenbisServiceFacade
     //
     // IOpenbisServiceFacade
     //
+
+    @Override
+    public WebAppSettings getWebAppSettings(String webAppId)
+    {
+        if (minorVersionChangingService >= 2)
+        {
+            return changingService.getWebAppSettings(sessionToken, webAppId);
+        } else
+        {
+            return new WebAppSettings(webAppId, new HashMap<String, String>());
+        }
+    }
+
+    @Override
+    public void setWebAppSettings(WebAppSettings customDisplaySettings)
+    {
+        if (minorVersionChangingService >= 2)
+        {
+            changingService.setWebAppSettings(sessionToken, customDisplaySettings);
+        }
+    }
+
     @Override
     public List<Sample> searchForSamples(SearchCriteria searchCriteria)
     {
-- 
GitLab