From cdbc404706f76bfa6bd0dc3d441029424bd2bbd3 Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Mon, 9 Nov 2009 14:49:59 +0000
Subject: [PATCH] LMS-1249 configuration improved

SVN: 13278
---
 datastore_server/dist/etc/service.properties  | 27 ++++++++++++++-----
 datastore_server/etc/service.properties       | 23 +++++++++++++++-
 .../validation/ColumnDefinition.java          |  4 +--
 .../validation/DataSetValidator.java          |  7 ++++-
 .../validation/DataSetValidatorForTSV.java    |  2 +-
 5 files changed, 52 insertions(+), 11 deletions(-)

diff --git a/datastore_server/dist/etc/service.properties b/datastore_server/dist/etc/service.properties
index 2ebaa4dfb48..9ae459fbbba 100644
--- a/datastore_server/dist/etc/service.properties
+++ b/datastore_server/dist/etc/service.properties
@@ -77,12 +77,27 @@ failure-interval = 10
 # Globally used separator character which separates entities in a data set file name 
 data-set-file-name-entity-separator = _
 
-# Specifies what should happen if an error occurs during dataset processing. 
-# By default this flag is set to false and user has to modify the 'faulty paths file' 
-# each time the faulty dataset should be processed again.
-# Set this flag to true if the processing should be repeated after some time without manual intervention.
-# Note that this can increase the server load.
-# reprocess-faulty-datasets = false
+# Data set validators used to accept or reject data sets to be registered.
+# Comma separated list of validator definitions.
+data-set-validators = validator
+
+# Definition of data set validator 'validator'
+validator.data-set-type = HCS_IMAGE
+validator.path-patterns = **/*.txt
+validator.columns = id, description, size
+validator.id.header-pattern = ID
+validator.id.mandatory = true
+validator.id.order = 1
+validator.id.value-type = unique
+validator.description.header-pattern = Description
+validator.description.value-type = string
+validator.description.value-pattern = .{0,100}
+validator.size.header-pattern = A[0-9]+
+validator.size.can-define-multiple-columns = true
+validator.size.allow-empty-values = true
+validator.size.value-type = numeric
+validator.site.value-range = [0,Infinity)
+
 
 # Comma separated names of processing threads. Each thread should have configuration properties prefixed with its name.
 # E.g. 'code-extractor' property for the thread 'my-etl' should be specified as 'my-etl.code-extractor'
diff --git a/datastore_server/etc/service.properties b/datastore_server/etc/service.properties
index 67eeb001aee..4358b46d500 100644
--- a/datastore_server/etc/service.properties
+++ b/datastore_server/etc/service.properties
@@ -41,7 +41,7 @@ highwater-mark = 1048576
 notify-successful-registration = false
 
 # The URL of the openBIS server
-server-url = http://localhost:8080/openbis
+server-url = http://localhost:8888/openbis
 
 # The username to use when contacting the openBIS server
 username = etlserver
@@ -97,6 +97,27 @@ demo-processor.dataset-types = UNKNOWN
 demo-processor.class = ch.systemsx.cisd.openbis.dss.generic.server.plugins.demo.DemoProcessingPlugin
 demo-processor.properties-file = 
 
+# Data set validators used to accept or reject data sets to be registered.
+# Comma separated list of validator definitions.
+data-set-validators = validator
+
+# Definition of data set validator 'validator'
+validator.data-set-type = HCS_IMAGE
+validator.path-patterns = **/*.txt
+validator.columns = id, description, size
+validator.id.header-pattern = ID
+validator.id.mandatory = true
+validator.id.order = 1
+validator.id.value-type = unique
+validator.description.header-pattern = Description
+validator.description.value-type = string
+validator.description.value-pattern = .{0,100}
+validator.size.header-pattern = A[0-9]+
+validator.size.can-define-multiple-columns = true
+validator.size.allow-empty-values = true
+validator.size.value-type = numeric
+validator.site.value-range = [0,Infinity)
+
 # ---------------------------------------------------------------------------
 
 # Comma separated names of processing threads. Each thread should have configuration properties prefixed with its name.
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/validation/ColumnDefinition.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/validation/ColumnDefinition.java
index fa6a47bcbf4..111e88c106b 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/validation/ColumnDefinition.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/validation/ColumnDefinition.java
@@ -48,7 +48,7 @@ class ColumnDefinition
     {
         boolean mandatory = PropertyUtils.getBoolean(properties, MANDATORY_KEY, false);
         Integer order = null;
-        boolean canDefineMultipleColumns;
+        boolean canDefineMultipleColumns = false;
         if (properties.getProperty(ORDER_KEY) != null)
         {
             order = PropertyUtils.getInt(properties, ORDER_KEY, 0);
@@ -57,7 +57,7 @@ class ColumnDefinition
                 throw new ConfigurationFailureException("Order value has to be positive: " + order);
             }
             canDefineMultipleColumns = false;
-        } else
+        } else if (mandatory == false)
         {
             canDefineMultipleColumns =
                     PropertyUtils.getBoolean(properties, CAN_DEFINE_MULTIPLE_COLUMNS_KEY, false);
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/validation/DataSetValidator.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/validation/DataSetValidator.java
index 7d33f2b9762..14ed3338e18 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/validation/DataSetValidator.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/validation/DataSetValidator.java
@@ -65,7 +65,12 @@ public class DataSetValidator implements IDataSetValidator
             try
             {
                 IDataSetValidator validator = createValidator(validatorProperties);
-                validators.put(dataSetType, validator);
+                IDataSetValidator previous = validators.put(dataSetType, validator);
+                if (previous == null)
+                {
+                    new ConfigurationFailureException(
+                            "There is already a validator for data set type '" + dataSetType + "'.");
+                }
                 if (operationLog.isInfoEnabled())
                 {
                     operationLog.info("Validator for data set type '" + dataSetType + "' defined.");
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/validation/DataSetValidatorForTSV.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/validation/DataSetValidatorForTSV.java
index b6927b51128..705a20a401c 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/validation/DataSetValidatorForTSV.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/validation/DataSetValidatorForTSV.java
@@ -64,7 +64,7 @@ class DataSetValidatorForTSV implements IDataSetValidator
     DataSetValidatorForTSV(Properties properties)
     {
         fileScanners = new ArrayList<FileScanner>();
-        String pathPatterns = properties.getProperty(PATH_PATTERNS_KEY);
+        String pathPatterns = properties.getProperty(PATH_PATTERNS_KEY, "*");
         if (pathPatterns != null)
         {
             StringTokenizer tokenizer = new StringTokenizer(pathPatterns, ",");
-- 
GitLab