From a0c5d2efe686bad28003c8eb7610e91d2ee9ce3b Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Wed, 5 Oct 2011 07:35:43 +0000
Subject: [PATCH] allow not only spaces but also commas as separators for
 parent data set codes

SVN: 23191
---
 ...DataSetInfoExtractorForProteinResults.java |  6 +-
 ...SetInfoExtractorForProteinResultsTest.java | 58 +++++++++++++++++++
 2 files changed, 61 insertions(+), 3 deletions(-)

diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForProteinResults.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForProteinResults.java
index a1219193882..95564639f79 100644
--- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForProteinResults.java
+++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForProteinResults.java
@@ -52,8 +52,8 @@ public class DataSetInfoExtractorForProteinResults extends AbstractDataSetInfoEx
     @Private static final String SEPARATOR_KEY = "separator";
     @Private static final String DEFAULT_SEPARATOR = "&";
     @Private static final String DEFAULT_EXPERIMENT_PROPERTIES_FILE_NAME = "search.properties";
-    @Private static final String PARENT_DATA_SET_CODES = "parent-data-set-codes";
-    @Private static final String EXPERIMENT_IDENTIFIER_KEY = "base-experiment";
+    static final String PARENT_DATA_SET_CODES = "parent-data-set-codes";
+    static final String EXPERIMENT_IDENTIFIER_KEY = "base-experiment";
     
     private final String separator;
     private final String experimentPropertiesFileName;
@@ -102,7 +102,7 @@ public class DataSetInfoExtractorForProteinResults extends AbstractDataSetInfoEx
         String parentDataSetCodesOrNull = getProperty(properties, PARENT_DATA_SET_CODES);
         if (parentDataSetCodesOrNull != null)
         {
-            info.setParentDataSetCodes(Arrays.asList(StringUtils.split(parentDataSetCodesOrNull)));
+            info.setParentDataSetCodes(Arrays.asList(StringUtils.split(parentDataSetCodesOrNull, ", ")));
         } else 
         {
             String baseExperimentIdentifier = getProperty(properties, EXPERIMENT_IDENTIFIER_KEY);
diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForProteinResultsTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForProteinResultsTest.java
index 3af3687a2d3..0ffa9aae8dc 100644
--- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForProteinResultsTest.java
+++ b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/phosphonetx/DataSetInfoExtractorForProteinResultsTest.java
@@ -61,6 +61,9 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifier;
 @Friend(toClasses=DataSetInfoExtractorForProteinResults.class)
 public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSystemTestCase
 {
+    private static final String PARENT_DATA_SET_CODES_KEY =
+            DataSetInfoExtractorForProteinResults.PARENT_DATA_SET_CODES.toUpperCase();
+
     private Mockery context;
     private IEncapsulatedOpenBISService service;
     private File dataSet;
@@ -211,6 +214,61 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste
         context.assertIsSatisfied();
     }
     
+    @Test
+    public void testWithParentDataSetsSeparatedBySpaces()
+    {
+        String propertiesFile = "my.properties";
+        FileUtilities.writeToFile(new File(dataSet, propertiesFile), "answer=42\nblabla=blub\n"
+                + EXPERIMENT_IDENTIFIER_KEY + "= /TEST/PROJECT/EXP1\n" + PARENT_DATA_SET_CODES_KEY
+                + " = ds1     ds2");
+        Properties properties = new Properties();
+        String experimentType = "MY_EXPERIMENT";
+        properties.setProperty(EXPERIMENT_TYPE_CODE_KEY, experimentType);
+        properties.setProperty(EXPERIMENT_PROPERTIES_FILE_NAME_KEY, propertiesFile);
+        prepare(experimentType);
+        context.checking(new Expectations()
+            {
+                {
+                    one(service).registerExperiment(with(any(NewExperiment.class)));
+                }
+            });
+
+        IDataSetInfoExtractor extractor = createExtractor(properties);
+
+        DataSetInformation info = extractor.getDataSetInformation(dataSet, service);
+
+        assertEquals("/SPACE1/PROJECT1/E4711", info.getExperimentIdentifier().toString());
+        assertEquals("[ds1, ds2]", info.getParentDataSetCodes().toString());
+        context.assertIsSatisfied();
+    }
+
+    @Test
+    public void testWithParentDataSetsSeparatedByComma()
+    {
+        String propertiesFile = "my.properties";
+        FileUtilities.writeToFile(new File(dataSet, propertiesFile), "answer=42\nblabla=blub\n"
+                + PARENT_DATA_SET_CODES_KEY + " = ds1,ds2");
+        Properties properties = new Properties();
+        String experimentType = "MY_EXPERIMENT";
+        properties.setProperty(EXPERIMENT_TYPE_CODE_KEY, experimentType);
+        properties.setProperty(EXPERIMENT_PROPERTIES_FILE_NAME_KEY, propertiesFile);
+        prepare(experimentType);
+        context.checking(new Expectations()
+            {
+                {
+                    one(service).registerExperiment(with(any(NewExperiment.class)));
+                }
+            });
+
+        IDataSetInfoExtractor extractor = createExtractor(properties);
+
+        DataSetInformation info = extractor.getDataSetInformation(dataSet, service);
+
+        assertEquals("/SPACE1/PROJECT1/E4711", info.getExperimentIdentifier().toString());
+        assertEquals("[ds1, ds2]", info.getParentDataSetCodes().toString());
+        context.assertIsSatisfied();
+    }
+    
     private void prepare(final String experimentType)
     {
         context.checking(new Expectations()
-- 
GitLab