From ae3b0beb0e3df3386e107e170d4125fe4aa805d2 Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Tue, 27 Oct 2009 16:38:08 +0000
Subject: [PATCH] LMS-1196 add properties

SVN: 13098
---
 .../dss/generic/server/UploadingCommand.java  | 49 +++++++++++++++----
 .../generic/server/UploadingCommandTest.java  | 14 ++++--
 2 files changed, 51 insertions(+), 12 deletions(-)

diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/UploadingCommand.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/UploadingCommand.java
index 734aa99873c..29af549f840 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/UploadingCommand.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/UploadingCommand.java
@@ -50,6 +50,7 @@ import ch.systemsx.cisd.common.utilities.TokenGenerator;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Group;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Person;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Project;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
@@ -122,56 +123,83 @@ class UploadingCommand implements IDataSetCommand
 
     private static final class MetaDataBuilder
     {
+        private static final String DATA_SET = "data_set";
+        private static final String SAMPLE = "sample";
+        private static final String EXPERIMENT = "experiment";
+
         private static final char DELIM = '\t';
 
         private static final DateFormat DATE_FORMAT_PATTERN =
                 new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
 
         private final StringBuilder builder = new StringBuilder();
+        
+        void dataSetProperties(List<IEntityProperty> properties)
+        {
+            addProperties(DATA_SET, properties);
+        }
+        
+        void sampleProperties(List<IEntityProperty> properties)
+        {
+            addProperties(SAMPLE, properties);
+        }
+        
+        void experimentProperties(List<IEntityProperty> properties)
+        {
+            addProperties(EXPERIMENT, properties);
+        }
+        
+        void addProperties(String category, List<IEntityProperty> properties)
+        {
+            for (IEntityProperty property : properties)
+            {
+                addRow(category, property.getPropertyType().getCode(), property.getValue());
+            }
+        }
 
         void dataSet(String key, String value)
         {
-            addRow("data_set", key, value);
+            addRow(DATA_SET, key, value);
         }
 
         void dataSet(String key, Date date)
         {
-            addRow("data_set", key, date);
+            addRow(DATA_SET, key, date);
         }
 
         void dataSet(String key, boolean flag)
         {
-            addRow("data_set", key, flag);
+            addRow(DATA_SET, key, flag);
         }
 
         void sample(String key, String value)
         {
-            addRow("sample", key, value);
+            addRow(SAMPLE, key, value);
         }
 
         void sample(String key, Person person)
         {
-            addRow("sample", key, person);
+            addRow(SAMPLE, key, person);
         }
 
         void sample(String key, Date date)
         {
-            addRow("sample", key, date);
+            addRow(SAMPLE, key, date);
         }
 
         void experiment(String key, String value)
         {
-            addRow("experiment", key, value);
+            addRow(EXPERIMENT, key, value);
         }
 
         void experiment(String key, Person person)
         {
-            addRow("experiment", key, person);
+            addRow(EXPERIMENT, key, person);
         }
 
         void experiment(String key, Date date)
         {
-            addRow("experiment", key, date);
+            addRow(EXPERIMENT, key, date);
         }
 
         private void addRow(String category, String key, Person person)
@@ -362,6 +390,7 @@ class UploadingCommand implements IDataSetCommand
         builder.dataSet("data_set_type", dataSet.getDataSetType().getCode());
         builder.dataSet("is_measured", dataSet.isDerived() == false);
         builder.dataSet("is_complete", BooleanOrUnknown.T.equals(dataSet.getComplete()));
+        builder.dataSetProperties(dataSet.getProperties());
 
         StringBuilder stringBuilder = new StringBuilder();
         Collection<ExternalData> parents = dataSet.getParents();
@@ -386,6 +415,7 @@ class UploadingCommand implements IDataSetCommand
             builder.sample("group_code", group == null ? "(shared)" : group.getCode());
             builder.sample("registration_timestamp", sample.getRegistrationDate());
             builder.sample("registrator", sample.getRegistrator());
+            builder.sampleProperties(sample.getProperties());
         }
         Experiment experiment = dataSet.getExperiment();
         Project project = experiment.getProject();
@@ -395,6 +425,7 @@ class UploadingCommand implements IDataSetCommand
         builder.experiment("experiment_type_code", experiment.getExperimentType().getCode());
         builder.experiment("registration_timestamp", experiment.getRegistrationDate());
         builder.experiment("registrator", experiment.getRegistrator());
+        builder.experimentProperties(experiment.getProperties());
         return builder.toString();
     }
 
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/UploadingCommandTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/UploadingCommandTest.java
index f6ed78e85b6..cbe052fa3ba 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/UploadingCommandTest.java
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/UploadingCommandTest.java
@@ -24,6 +24,7 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.Date;
 import java.util.Enumeration;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
@@ -52,12 +53,14 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetTypePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetUploadContext;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DataStorePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DatabaseInstancePE;
+import ch.systemsx.cisd.openbis.generic.shared.dto.EntityPropertyPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentTypePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.GroupPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.ProjectPE;
+import ch.systemsx.cisd.openbis.generic.shared.translator.ExperimentTranslator;
 import ch.systemsx.cisd.openbis.generic.shared.translator.ExternalDataTranslator;
 
 /**
@@ -152,11 +155,14 @@ public class UploadingCommandTest extends AssertJUnit
         createTestData(LOCATION1);
         ds2 = createTestData(LOCATION2);
         ExternalData dataSet1 =
-                ExternalDataTranslator.translate(createDataSet("1", LOCATION1), "?", "?");
+                ExternalDataTranslator.translate(createDataSet("1", LOCATION1), "?", "?",
+                        ExperimentTranslator.LoadableFields.PROPERTIES);
+        System.out.println("ds1:" + dataSet1.getExperiment().getProperties());
         ExternalData dataSet2 =
-                ExternalDataTranslator.translate(createDataSet("2", LOCATION2), "?", "?");
+                ExternalDataTranslator.translate(createDataSet("2", LOCATION2), "?", "?",
+                        ExperimentTranslator.LoadableFields.PROPERTIES);
         List<ExternalData> dataSets = Arrays.<ExternalData> asList(dataSet1, dataSet2);
-        command = new UploadingCommand(factory, mailClientParameters, dataSets, uploadContext);
+       command = new UploadingCommand(factory, mailClientParameters, dataSets, uploadContext);
         command.deleteAfterUploading = false;
     }
 
@@ -208,6 +214,8 @@ public class UploadingCommandTest extends AssertJUnit
         group.setDatabaseInstance(instance);
         project.setGroup(group);
         experiment.setProject(project);
+        LinkedHashSet<EntityPropertyPE> properties = new LinkedHashSet<EntityPropertyPE>();
+        experiment.setProperties(properties);
         return experiment;
     }
 
-- 
GitLab