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