From 66df78f6b0a3537679573bf4407f46fc22a35e2a Mon Sep 17 00:00:00 2001
From: cramakri <cramakri>
Date: Thu, 10 Mar 2011 10:23:11 +0000
Subject: [PATCH] LMS-2102 Adding listing of data set types to the general
 information service.

SVN: 20287
---
 .../api/v1/GeneralInformationService.java     | 11 ++++++--
 .../generic/server/api/v1/Translator.java     | 26 +++++++++++++++++++
 .../api/v1/GeneralInformationServiceTest.java | 17 ++++++++++++
 3 files changed, 52 insertions(+), 2 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationService.java
index 4ef7ff32f79..f0f39a3a9c6 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationService.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/GeneralInformationService.java
@@ -372,7 +372,14 @@ public class GeneralInformationService extends AbstractServer<IGeneralInformatio
 
     public List<DataSetType> listDataSetTypes(String sessionToken)
     {
-        // TODO Auto-generated method stub
-        return new ArrayList<DataSetType>();
+        List<ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType> privateDataSetTypes =
+                commonServer.listDataSetTypes(sessionToken);
+
+        ArrayList<DataSetType> dataSetTypes = new ArrayList<DataSetType>();
+        for (ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType privateDataSetType : privateDataSetTypes)
+        {
+            dataSetTypes.add(Translator.translate(privateDataSetType));
+        }
+        return dataSetTypes;
     }
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/Translator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/Translator.java
index 90bf12e8f1c..c2bcef7cbcd 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/Translator.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/api/v1/Translator.java
@@ -20,8 +20,12 @@ import java.util.List;
 
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.DataSet;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.DataSet.DataSetInitializer;
+import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.DataSetType;
+import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.DataSetType.DataSetTypeInitializer;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Experiment;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Experiment.ExperimentInitializer;
+import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.PropertyType;
+import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.PropertyType.PropertyTypeInitializer;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Role;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Sample;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Sample.SampleInitializer;
@@ -89,6 +93,28 @@ public class Translator
         return new Experiment(initializer);
     }
 
+    static DataSetType translate(
+            ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType privateDataSetType)
+    {
+        DataSetTypeInitializer initializer = new DataSetTypeInitializer();
+        initializer.setCode(privateDataSetType.getCode());
+
+        List<ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetTypePropertyType> dstpts =
+                privateDataSetType.getAssignedPropertyTypes();
+        for (ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetTypePropertyType dstpt : dstpts)
+        {
+            PropertyTypeInitializer ptInitializer = new PropertyTypeInitializer();
+            ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType propertyType =
+                    dstpt.getPropertyType();
+            ptInitializer.setCode(propertyType.getCode());
+            ptInitializer.setLabel(propertyType.getLabel());
+            ptInitializer.setDescription(propertyType.getDescription());
+            initializer.addPropertyType(new PropertyType(ptInitializer));
+        }
+
+        return new DataSetType(initializer);
+    }
+
     private Translator()
     {
     }
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/api/v1/GeneralInformationServiceTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/api/v1/GeneralInformationServiceTest.java
index d9ffa369f59..9e028d68c87 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/api/v1/GeneralInformationServiceTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/api/v1/GeneralInformationServiceTest.java
@@ -33,8 +33,10 @@ import org.testng.annotations.Test;
 
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.IGeneralInformationService;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.DataSet;
+import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.DataSetType;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Experiment;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Project;
+import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.PropertyType;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Role;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.Sample;
 import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SearchCriteria;
@@ -216,4 +218,19 @@ public class GeneralInformationServiceTest extends SystemTestCase
         assertEquals("Experiment should be: " + resultExperiment.getIdentifier(), true,
                 identifierIsOk);
     }
+
+    public void testListDataSetTypes()
+    {
+        List<DataSetType> dataSetTypes = generalInformationService.listDataSetTypes(sessionToken);
+        assertEquals(3, dataSetTypes.size());
+
+        DataSetType dataSetType;
+        PropertyType propertyType;
+        dataSetType = dataSetTypes.get(0);
+        assertEquals("HCS_IMAGE", dataSetType.getCode());
+        List<PropertyType> propertyTypes = dataSetType.getPropertyTypes();
+        propertyType = propertyTypes.get(0);
+        assertEquals("COMMENT", propertyType.getCode());
+        assertEquals("Comment", propertyType.getLabel());
+    }
 }
-- 
GitLab