diff --git a/datastore_server/dist/etc/service.properties b/datastore_server/dist/etc/service.properties index ffafcf830f9bf49f41ecdfba8cd43fca52971552..7a97360e3bd8b51aa39da58e80b276a1baa70c24 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 003e6ee64989b670814bc300f6e12991125d391a..0d0ee398c815163511aa4f6a36dd62643e160282 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 59d8d0fc624714a4f4d439397246ad0973e9bbe8..19d855d0aec83d5fe1901ec3d0d8dd0bc41d6045 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 770c989bc3514166f4c12fbadfecf40eeb512bca..b4d7faae249a457a201cd11473cf16535a9259a7 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);