From 311c6ceb91fc8ec8c33a233ca6a24d8cd02fcedc Mon Sep 17 00:00:00 2001
From: brinn <brinn>
Date: Fri, 28 Aug 2009 16:12:29 +0000
Subject: [PATCH] add: support for providing the parent data set code as column
 'parent' in the index.tsv file

SVN: 12316
---
 .../yeastx/etl/BatchDataSetInfoExtractor.java |  1 +
 .../yeastx/etl/DataSetMappingInformation.java | 16 +++++++++++
 .../etl/DataSetInformationParserTest.java     | 27 ++++++++++++++++---
 3 files changed, 41 insertions(+), 3 deletions(-)

diff --git a/rtd_yeastx/source/java/ch/systemsx/cisd/yeastx/etl/BatchDataSetInfoExtractor.java b/rtd_yeastx/source/java/ch/systemsx/cisd/yeastx/etl/BatchDataSetInfoExtractor.java
index f3ff856934c..95bc8ff912e 100644
--- a/rtd_yeastx/source/java/ch/systemsx/cisd/yeastx/etl/BatchDataSetInfoExtractor.java
+++ b/rtd_yeastx/source/java/ch/systemsx/cisd/yeastx/etl/BatchDataSetInfoExtractor.java
@@ -58,6 +58,7 @@ public class BatchDataSetInfoExtractor implements IDataSetInfoExtractor
             info.setGroupCode(plainInfo.getGroupCode());
             MLConversionType conversion = getConversion(plainInfo.getConversion());
             info.setConversion(conversion);
+            info.setParentDataSetCode(plainInfo.getParentDataSetCode());
             fileNameDecorator.enrich(info, incomingDataSetPath);
             return info;
         } else
diff --git a/rtd_yeastx/source/java/ch/systemsx/cisd/yeastx/etl/DataSetMappingInformation.java b/rtd_yeastx/source/java/ch/systemsx/cisd/yeastx/etl/DataSetMappingInformation.java
index 1dc4b89f3bc..675949f5652 100644
--- a/rtd_yeastx/source/java/ch/systemsx/cisd/yeastx/etl/DataSetMappingInformation.java
+++ b/rtd_yeastx/source/java/ch/systemsx/cisd/yeastx/etl/DataSetMappingInformation.java
@@ -42,6 +42,8 @@ public class DataSetMappingInformation
     private String groupCode;
 
     private String conversion;
+    
+    private String parentDataSetCode;
 
     private List<NewProperty> properties;
 
@@ -67,6 +69,20 @@ public class DataSetMappingInformation
         this.sampleCodeOrLabel = StringUtils.trimToNull(sampleCodeOrLabel);
     }
 
+    /**
+     * Returns the code of the parent data set, if any.
+     */
+    public final String getParentDataSetCode()
+    {
+        return parentDataSetCode;
+    }
+
+    @BeanProperty(label="parent", optional = true)
+    public final void setParentDataSetCode(String parentCode)
+    {
+        this.parentDataSetCode = parentCode;
+    }
+
     public String getExperimentName()
     {
         return experimentName;
diff --git a/rtd_yeastx/sourceTest/java/ch/systemsx/cisd/yeastx/etl/DataSetInformationParserTest.java b/rtd_yeastx/sourceTest/java/ch/systemsx/cisd/yeastx/etl/DataSetInformationParserTest.java
index 443f1ad36a2..97275e3a8b7 100644
--- a/rtd_yeastx/sourceTest/java/ch/systemsx/cisd/yeastx/etl/DataSetInformationParserTest.java
+++ b/rtd_yeastx/sourceTest/java/ch/systemsx/cisd/yeastx/etl/DataSetInformationParserTest.java
@@ -36,9 +36,11 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.NewProperty;
  */
 public class DataSetInformationParserTest extends AbstractFileSystemTestCase
 {
+    private static final String MANDATORY_HEADER = "file_name sample group\n";
+
     private static final String HEADER =
     // "# user@gmail.com\n+"+
-            "file_name sample group experiment conversion dataset_property_1 dataset_property_2\n";
+            "file_name sample parent group experiment project conversion dataset_property_1 dataset_property_2\n";
 
     private static final String TAB = "\t";
 
@@ -46,23 +48,42 @@ public class DataSetInformationParserTest extends AbstractFileSystemTestCase
     public void testLoadIndexFile()
     {
         File indexFile =
-                writeMappingFile(HEADER + "data.txt sample1 group1 experiment1 fiaML v1 v2");
+                writeMappingFile(HEADER
+                        + "data.txt sample1 parentCode group1 experiment1 project1 fiaML v1 v2");
         List<DataSetMappingInformation> list = tryParse(indexFile);
         AssertJUnit.assertEquals(1, list.size());
         DataSetMappingInformation elem = list.get(0);
         AssertJUnit.assertEquals("group1", elem.getGroupCode());
+        AssertJUnit.assertEquals("parentCode", elem.getParentDataSetCode());
+        AssertJUnit.assertEquals("sample1", elem.getSampleCodeOrLabel());
         AssertJUnit.assertEquals("data.txt", elem.getFileName());
+        AssertJUnit.assertEquals("experiment1", elem.getExperimentName());
+        AssertJUnit.assertEquals("project1", elem.getProjectCode());
         AssertJUnit.assertEquals(2, elem.getProperties().size());
         NewProperty prop1 = elem.getProperties().get(0);
         AssertJUnit.assertEquals("v1", prop1.getValue());
         AssertJUnit.assertEquals("dataset_property_1", prop1.getPropertyCode());
     }
 
+    @Test
+    public void testLoadIndexFileMandatoryColumnsOnly()
+    {
+        File indexFile =
+                writeMappingFile(MANDATORY_HEADER
+                        + "data2.txt sample2 group2");
+        List<DataSetMappingInformation> list = tryParse(indexFile);
+        AssertJUnit.assertEquals(1, list.size());
+        DataSetMappingInformation elem = list.get(0);
+        AssertJUnit.assertEquals("group2", elem.getGroupCode());
+        AssertJUnit.assertEquals("sample2", elem.getSampleCodeOrLabel());
+        AssertJUnit.assertEquals("data2.txt", elem.getFileName());
+    }
+
     @Test
     public void testLoadIndexFileWithMissingFieldValueFails() throws FileNotFoundException,
             IOException
     {
-        File indexFile = writeMappingFile(HEADER + TAB + TAB + TAB + TAB + TAB + TAB);
+        File indexFile = writeMappingFile(HEADER + TAB + TAB + TAB + TAB + TAB + TAB + TAB + TAB);
         List<DataSetMappingInformation> result = tryParse(indexFile);
         AssertJUnit.assertNull("error during parsing expected", result);
         List<String> logLines = readLogFile();
-- 
GitLab