From a25ab1314155c1f3f038eff9d6cdff67f68220f6 Mon Sep 17 00:00:00 2001
From: jakubs <jakubs>
Date: Fri, 10 Aug 2012 09:40:44 +0000
Subject: [PATCH] SP-203 BIS-126 add container creation for v1 usecase with
 factory

SVN: 26325
---
 .../impl/FeatureVectorContainerDataSet.java   | 11 ++--
 ...ImagingDataSetRegistrationTransaction.java | 51 +++++++++++++------
 .../AggregatedFeatureVectorsTest.java         |  6 ++-
 3 files changed, 46 insertions(+), 22 deletions(-)

diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/impl/FeatureVectorContainerDataSet.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/impl/FeatureVectorContainerDataSet.java
index 2fd157e7a69..6b8a87eb973 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/impl/FeatureVectorContainerDataSet.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/impl/FeatureVectorContainerDataSet.java
@@ -16,6 +16,8 @@
 
 package ch.systemsx.cisd.openbis.dss.etl.dto.api.impl;
 
+import static ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.ScreeningConstants.ANALYSIS_PROCEDURE;
+
 import java.io.File;
 
 import ch.systemsx.cisd.etlserver.registrator.DataSetRegistrationDetails;
@@ -26,6 +28,7 @@ import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
 import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IExperimentImmutable;
 import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.ISampleImmutable;
 import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation;
+import ch.systemsx.cisd.openbis.generic.shared.dto.NewProperty;
 
 /**
  * @author jakubs
@@ -61,7 +64,8 @@ public class FeatureVectorContainerDataSet extends DataSet<DataSetInformation> i
     @Override
     public void setAnalysisProcedure(String analysisProcedure)
     {
-        originalDataset.setAnalysisProcedure(analysisProcedure);
+        getRegistrationDetails().getDataSetInformation().getDataSetProperties()
+                .add(new NewProperty(ANALYSIS_PROCEDURE, analysisProcedure));
     }
 
     @Override
@@ -96,10 +100,7 @@ public class FeatureVectorContainerDataSet extends DataSet<DataSetInformation> i
     @Override
     public void setPropertyValue(String propertyCode, String propertyValue)
     {
-        if (originalDataset != null)
-        {
-            originalDataset.setPropertyValue(propertyCode, propertyValue);
-        }
+        getRegistrationDetails().setPropertyValue(propertyCode, propertyValue);
     }
 
 }
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/ImagingDataSetRegistrationTransaction.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/ImagingDataSetRegistrationTransaction.java
index f196ee26971..e259d1395e6 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/ImagingDataSetRegistrationTransaction.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/ImagingDataSetRegistrationTransaction.java
@@ -127,6 +127,36 @@ public class ImagingDataSetRegistrationTransaction extends DataSetRegistrationTr
      */
     public IFeatureVectorDataSet createNewFeatureVectorDataSet(
             SimpleFeatureVectorDataConfig featureDataSetConfig, File featureVectorFileOrNull)
+    {
+        DataSetRegistrationDetails<FeatureVectorDataSetInformation> registrationDetails =
+                createFeatureVectorDataSetRegistrationDetails(featureDataSetConfig,
+                        featureVectorFileOrNull);
+        return createFeatureVectorDataSet(registrationDetails);
+    }
+
+    private IFeatureVectorDataSet createFeatureVectorDataSet(
+            DataSetRegistrationDetails<FeatureVectorDataSetInformation> registrationDetails)
+    {
+        @SuppressWarnings("unchecked")
+        DataSet<FeatureVectorDataSetInformation> dataSet =
+                (DataSet<FeatureVectorDataSetInformation>) super
+                        .createNewDataSet(registrationDetails);
+
+        FeatureVectorDataSet featureDataset =
+                new FeatureVectorDataSet(dataSet, getGlobalState().getOpenBisService());
+
+        // create container
+        FeatureVectorContainerDataSet containerDataset =
+                createFeatureVectorContainerDataSet(featureDataset);
+
+        registrationDetails.getDataSetInformation().setContainerDatasetPermId(
+                containerDataset.getDataSetCode());
+
+        return containerDataset;
+    }
+
+    private DataSetRegistrationDetails<FeatureVectorDataSetInformation> createFeatureVectorDataSetRegistrationDetails(
+            SimpleFeatureVectorDataConfig featureDataSetConfig, File featureVectorFileOrNull)
     {
         List<FeatureDefinition> featureDefinitions;
         Properties properties = featureDataSetConfig.getProperties();
@@ -148,21 +178,7 @@ public class ImagingDataSetRegistrationTransaction extends DataSetRegistrationTr
         }
         DataSetRegistrationDetails<FeatureVectorDataSetInformation> registrationDetails =
                 factory.createFeatureVectorRegistrationDetails(featureDefinitions);
-        @SuppressWarnings("unchecked")
-        DataSet<FeatureVectorDataSetInformation> dataSet =
-                (DataSet<FeatureVectorDataSetInformation>) createNewDataSet(registrationDetails);
-
-        FeatureVectorDataSet featureDataset =
-                new FeatureVectorDataSet(dataSet, getGlobalState().getOpenBisService());
-
-        // create container
-        FeatureVectorContainerDataSet containerDataset =
-                createFeatureVectorContainerDataSet(featureDataset);
-
-        registrationDetails.getDataSetInformation().setContainerDatasetPermId(
-                containerDataset.getDataSetCode());
-
-        return containerDataset;
+        return registrationDetails;
     }
 
     /**
@@ -444,6 +460,11 @@ public class ImagingDataSetRegistrationTransaction extends DataSetRegistrationTr
             DataSetRegistrationDetails<ImageDataSetInformation> imageRegistrationDetails =
                     (DataSetRegistrationDetails<ImageDataSetInformation>) registrationDetails;
             return createNewImageDataSet(imageRegistrationDetails);
+        } else if (registrationDetails.getDataSetInformation() instanceof FeatureVectorDataSetInformation)
+        {
+            DataSetRegistrationDetails<FeatureVectorDataSetInformation> featureRegistrationDetails =
+                    (DataSetRegistrationDetails<FeatureVectorDataSetInformation>) registrationDetails;
+            return createFeatureVectorDataSet(featureRegistrationDetails);
         } else
         {
             return super.createNewDataSet(registrationDetails);
diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/AggregatedFeatureVectorsTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/AggregatedFeatureVectorsTest.java
index f5962ed2f97..9eb391cf28a 100644
--- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/AggregatedFeatureVectorsTest.java
+++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/AggregatedFeatureVectorsTest.java
@@ -247,12 +247,14 @@ public class AggregatedFeatureVectorsTest extends AbstractScreeningSystemTestCas
     {
         Properties properties = new Properties();
         properties.setProperty(AnalysisSettings.KEY,
-                ScreeningConstants.DEFAULT_ANALYSIS_WELL_DATASET_TYPE + ":" + getClass().getSimpleName() + "-viewer");
+                ScreeningConstants.DEFAULT_ANALYSIS_WELL_CONTAINER_DATASET_TYPE + ":"
+                        + getClass().getSimpleName() + "-viewer");
         analysisSettingSetter.setAnalysisSettings(new AnalysisSettings(properties));
         List<DataSetType> dataSetTypes = commonServer.listDataSetTypes(sessionToken);
         for (DataSetType dataSetType : dataSetTypes)
         {
-            if (dataSetType.getCode().equals(ScreeningConstants.DEFAULT_ANALYSIS_WELL_DATASET_TYPE))
+            if (dataSetType.getCode().equals(
+                    ScreeningConstants.DEFAULT_ANALYSIS_WELL_CONTAINER_DATASET_TYPE))
             {
                 dataSetType.setMainDataSetPattern(".*csv");
                 commonServer.updateDataSetType(sessionToken, dataSetType);
-- 
GitLab