From bbf7db16ff78d0db7e773376ef5d647acf491f05 Mon Sep 17 00:00:00 2001
From: buczekp <buczekp>
Date: Fri, 10 Dec 2010 10:20:20 +0000
Subject: [PATCH] [LMS-1924] simplified configuration

SVN: 19077
---
 datastore_server/dist/etc/service.properties  | 11 ++++---
 datastore_server/etc/service.properties       | 11 ++++---
 .../DatasetImageOverviewConfiguration.java    | 31 ++++++++++---------
 .../plugins/demo/DemoOverviewPlugin.java      |  7 ++---
 4 files changed, 31 insertions(+), 29 deletions(-)

diff --git a/datastore_server/dist/etc/service.properties b/datastore_server/dist/etc/service.properties
index ffafcf830f9..7a97360e3bd 100644
--- a/datastore_server/dist/etc/service.properties
+++ b/datastore_server/dist/etc/service.properties
@@ -177,15 +177,16 @@ main-thread.incoming-data-completeness-condition = marker-file
 
 # Comma separated names of image overview plugins. 
 # Each plugin should have configuration properties prefixed with its name.
-# Mandatory properties for each <plugin> include: 
-#   <plugin>.class - Fully qualified plugin class name
+# Generic properties for each <plugin> include: 
+#   <plugin>.class   - Fully qualified plugin class name (mandatory).
+#   <plugin>.default - If true all data set types not handled by other plugins should be handled 
+#                      by the plugin (default = false). 
 #   <plugin>.dataset-types - Comma separated list of data set types handled by the plugin 
-#                            or '(default)' meaning that all types not handled by other plugins 
-#                            should be handled by the plugin.
+#                      (optional and ignored if default is true, otherwise mandatory). 
 #overview-plugins = default-overview, hcs-image-overview
 #
 #default-overview.class = ch.systemsx.cisd.openbis.dss.generic.server.plugins.demo.DemoOverviewPlugin
-#default-overview.dataset-types = (default)
+#default-overview.default = true
 # Optional property specific to the plugin
 #default-overview.label = default plugin
 #
diff --git a/datastore_server/etc/service.properties b/datastore_server/etc/service.properties
index 003e6ee6498..0d0ee398c81 100644
--- a/datastore_server/etc/service.properties
+++ b/datastore_server/etc/service.properties
@@ -326,15 +326,16 @@ dss-system-test-thread.type-extractor.data-set-type = HCS_IMAGE
 
 # Comma separated names of image overview plugins. 
 # Each plugin should have configuration properties prefixed with its name.
-# Mandatory properties for each <plugin> include: 
-#   <plugin>.class - Fully qualified plugin class name
+# Generic properties for each <plugin> include: 
+#   <plugin>.class   - Fully qualified plugin class name (mandatory).
+#   <plugin>.default - If true all data set types not handled by other plugins should be handled 
+#                      by the plugin (default = false). 
 #   <plugin>.dataset-types - Comma separated list of data set types handled by the plugin 
-#                            or '(default)' meaning that all types not handled by other plugins 
-#                            should be handled by the plugin.
+#                      (optional and ignored if default is true, otherwise mandatory). 
 overview-plugins = default-overview, hcs-image-overview
 
 default-overview.class = ch.systemsx.cisd.openbis.dss.generic.server.plugins.demo.DemoOverviewPlugin
-default-overview.dataset-types = (default)
+default-overview.default = true
 # Optional property specific to the plugin
 default-overview.label = default plugin
 
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DatasetImageOverviewConfiguration.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DatasetImageOverviewConfiguration.java
index 59d8d0fc624..19d855d0aec 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DatasetImageOverviewConfiguration.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DatasetImageOverviewConfiguration.java
@@ -35,11 +35,11 @@ public class DatasetImageOverviewConfiguration
 {
     private static String PLUGINS_SERVICES_LIST_KEY = "overview-plugins";
 
-    static final String PLUGIN_SERVICE_CLASS_KEY = "class";
+    private static final String PLUGIN_SERVICE_CLASS_KEY = "class";
 
-    static final String PLUGIN_SERVICE_DATASET_TYPES_KEY = "dataset-types";
+    private static final String PLUGIN_SERVICE_DEFAULT_KEY = "default";
 
-    static final String DEFAULT = "(DEFAULT)";
+    private static final String PLUGIN_SERVICE_DATASET_TYPES_KEY = "dataset-types";
 
     public static DatasetImageOverviewConfiguration createConfiguration(Properties properties)
     {
@@ -53,9 +53,16 @@ public class DatasetImageOverviewConfiguration
             Properties props = sectionProperties.getProperties();
             String pluginClassName =
                     PropertyUtils.getMandatoryProperty(props, PLUGIN_SERVICE_CLASS_KEY);
-            List<String> dataSetTypes =
-                    PropertyUtils.getMandatoryList(props, PLUGIN_SERVICE_DATASET_TYPES_KEY);
-            configuration.addPluginServiceConfiguration(pluginClassName, dataSetTypes, props);
+            boolean isDefault = PropertyUtils.getBoolean(props, PLUGIN_SERVICE_DEFAULT_KEY, false);
+            if (isDefault)
+            {
+                configuration.setDefaultPluginService(pluginClassName, props);
+            } else
+            {
+                List<String> dataSetTypes =
+                        PropertyUtils.getMandatoryList(props, PLUGIN_SERVICE_DATASET_TYPES_KEY);
+                configuration.addPluginService(pluginClassName, dataSetTypes, props);
+            }
         }
 
         return configuration;
@@ -85,18 +92,12 @@ public class DatasetImageOverviewConfiguration
         return plugin;
     }
 
-    private void addPluginServiceConfiguration(String pluginClass, List<String> dataSetTypes,
+    private void addPluginService(String pluginClass, List<String> dataSetTypes,
             Properties pluginProperties)
     {
-        if (dataSetTypes.size() == 1 && dataSetTypes.get(0).equalsIgnoreCase(DEFAULT))
+        for (String dataSetType : dataSetTypes)
         {
-            setDefaultPluginService(pluginClass, pluginProperties);
-        } else
-        {
-            for (String dataSetType : dataSetTypes)
-            {
-                addPluginService(dataSetType, pluginClass, pluginProperties);
-            }
+            addPluginService(dataSetType, pluginClass, pluginProperties);
         }
     }
 
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/demo/DemoOverviewPlugin.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/demo/DemoOverviewPlugin.java
index 770c989bc35..b4d7faae249 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/demo/DemoOverviewPlugin.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/demo/DemoOverviewPlugin.java
@@ -58,9 +58,9 @@ public class DemoOverviewPlugin implements IDatasetImageOverviewPlugin
     public ResponseContentStream createImageResponse(String datasetCode, String datasetTypeCode,
             ImageResolutionKind resolution)
     {
-        System.out.println(String.format("%s: create image for\n"
+        System.out.println(String.format("%s (%s): create image for\n"
                 + "\tdataset code: %s\n\tdataset type: %s\n\tresolution: %s", this.getClass()
-                .getSimpleName(), datasetCode, datasetTypeCode, resolution));
+                .getSimpleName(), label, datasetCode, datasetTypeCode, resolution));
         String imageFilePath;
         switch (resolution)
         {
@@ -77,8 +77,7 @@ public class DemoOverviewPlugin implements IDatasetImageOverviewPlugin
         {
             BufferedImage image =
                     createImage(imageFilePath, datasetCode, datasetTypeCode, resolution);
-            return ResponseContentStream.createPNG(image, // ImageIO.read(new File(imageFilePath)),
-                    imageFilePath);
+            return ResponseContentStream.createPNG(image, imageFilePath);
         } catch (IOException ex)
         {
             throw CheckedExceptionTunnel.wrapIfNecessary(ex);
-- 
GitLab