Skip to content
Snippets Groups Projects
Commit c0b17138 authored by tpylak's avatar tpylak
Browse files

LMS-1942 allow the overview plugin to work for all dataset types which match a...

LMS-1942 allow the overview plugin to work for all dataset types which match a given pattern (*.IMG*. for microscopy)

SVN: 19386
parent ea1c13f5
No related branches found
No related tags found
No related merge requests found
...@@ -19,6 +19,7 @@ package ch.systemsx.cisd.openbis.dss.generic.server; ...@@ -19,6 +19,7 @@ package ch.systemsx.cisd.openbis.dss.generic.server;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties; import java.util.Properties;
import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel; import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel;
...@@ -39,7 +40,7 @@ public class DatasetImageOverviewConfiguration ...@@ -39,7 +40,7 @@ public class DatasetImageOverviewConfiguration
private static final String PLUGIN_SERVICE_DEFAULT_KEY = "default"; private static final String PLUGIN_SERVICE_DEFAULT_KEY = "default";
private static final String PLUGIN_SERVICE_DATASET_TYPES_KEY = "dataset-types"; private static final String PLUGIN_SERVICE_DATASET_TYPE_PATTERNS_KEY = "dataset-types";
public static DatasetImageOverviewConfiguration createConfiguration(Properties properties) public static DatasetImageOverviewConfiguration createConfiguration(Properties properties)
{ {
...@@ -59,23 +60,24 @@ public class DatasetImageOverviewConfiguration ...@@ -59,23 +60,24 @@ public class DatasetImageOverviewConfiguration
configuration.setDefaultPluginService(pluginClassName, props); configuration.setDefaultPluginService(pluginClassName, props);
} else } else
{ {
List<String> dataSetTypes = List<String> dataSetTypePatterns =
PropertyUtils.getMandatoryList(props, PLUGIN_SERVICE_DATASET_TYPES_KEY); PropertyUtils.getMandatoryList(props,
configuration.addPluginService(pluginClassName, dataSetTypes, props); PLUGIN_SERVICE_DATASET_TYPE_PATTERNS_KEY);
configuration.addPluginService(pluginClassName, dataSetTypePatterns, props);
} }
} }
return configuration; return configuration;
} }
private Map<String, IDatasetImageOverviewPlugin> pluginsByDataSetType = private Map<String, IDatasetImageOverviewPlugin> pluginsByDataSetTypePattern =
new HashMap<String, IDatasetImageOverviewPlugin>(); new HashMap<String, IDatasetImageOverviewPlugin>();
private IDatasetImageOverviewPlugin defaultPluginOrNull; private IDatasetImageOverviewPlugin defaultPluginOrNull;
public IDatasetImageOverviewPlugin getDatasetImageOverviewPlugin(String datasetTypeCode) public IDatasetImageOverviewPlugin getDatasetImageOverviewPlugin(String datasetTypeCode)
{ {
IDatasetImageOverviewPlugin plugin = pluginsByDataSetType.get(datasetTypeCode); IDatasetImageOverviewPlugin plugin = tryFindPlugin(datasetTypeCode);
if (plugin == null) if (plugin == null)
{ {
if (defaultPluginOrNull == null) if (defaultPluginOrNull == null)
...@@ -92,20 +94,34 @@ public class DatasetImageOverviewConfiguration ...@@ -92,20 +94,34 @@ public class DatasetImageOverviewConfiguration
return plugin; return plugin;
} }
private void addPluginService(String pluginClass, List<String> dataSetTypes, private IDatasetImageOverviewPlugin tryFindPlugin(String datasetTypeCode)
{
for (Entry<String, IDatasetImageOverviewPlugin> entry : pluginsByDataSetTypePattern
.entrySet())
{
String datasetTypePattern = entry.getKey();
if (datasetTypeCode.matches(datasetTypePattern))
{
return entry.getValue();
}
}
return null;
}
private void addPluginService(String pluginClass, List<String> dataSetTypePatterns,
Properties pluginProperties) Properties pluginProperties)
{ {
for (String dataSetType : dataSetTypes) for (String dataSetTypePattern : dataSetTypePatterns)
{ {
addPluginService(dataSetType, pluginClass, pluginProperties); addPluginService(dataSetTypePattern, pluginClass, pluginProperties);
} }
} }
private void addPluginService(String dataSetType, String pluginClassName, private void addPluginService(String dataSetTypePattern, String pluginClassName,
Properties pluginProperties) Properties pluginProperties)
{ {
String normalizedType = dataSetType.toUpperCase(); String normalizedTypePattern = dataSetTypePattern.toUpperCase();
IDatasetImageOverviewPlugin oldPluginOrNull = pluginsByDataSetType.get(normalizedType); IDatasetImageOverviewPlugin oldPluginOrNull = tryFindPlugin(normalizedTypePattern);
if (oldPluginOrNull != null) if (oldPluginOrNull != null)
{ {
throw new ConfigurationFailureException( throw new ConfigurationFailureException(
...@@ -114,7 +130,7 @@ public class DatasetImageOverviewConfiguration ...@@ -114,7 +130,7 @@ public class DatasetImageOverviewConfiguration
oldPluginOrNull.getClass().getName(), pluginClassName)); oldPluginOrNull.getClass().getName(), pluginClassName));
} }
IDatasetImageOverviewPlugin plugin = createPlugin(pluginClassName, pluginProperties); IDatasetImageOverviewPlugin plugin = createPlugin(pluginClassName, pluginProperties);
pluginsByDataSetType.put(normalizedType, plugin); pluginsByDataSetTypePattern.put(normalizedTypePattern, plugin);
} }
private void setDefaultPluginService(String pluginClassName, Properties pluginProperties) private void setDefaultPluginService(String pluginClassName, Properties pluginProperties)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment