diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/MetaDataBuilder.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/MetaDataBuilder.java index 5623c9b7d535f2433860da8aa2fd04b4b443c9d4..34888887b637cef9382bd9fa9b58c1fac6096ef9 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/MetaDataBuilder.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/MetaDataBuilder.java @@ -129,56 +129,45 @@ public class MetaDataBuilder for(int i = 0; i < dataSet.getContainerDataSets().size(); i++) { //Container ContainerDataSet container = dataSet.getContainerDataSets().get(i); - builder.container(i, "code", container.getCode()); - builder.container(i, "permId", container.getPermId()); - builder.container(i, "identifier", container.getIdentifier()); - if(container.getDataSetType() != null) { - builder.container(i, "type", container.getDataSetType().getCode()); - } + builder.container(i, null, "code", container.getCode()); + builder.container(i, null, "permId", container.getPermId()); + builder.container(i, null, "identifier", container.getIdentifier()); + builder.container(i, null, "type", container.getDataSetType().getCode()); if(container.getRegistrator() != null) { - builder.container(i, "registrator", container.getRegistrator().getUserId()); - } - if(container.getRegistrationDate() != null) { - builder.container(i, "registration_date", container.getRegistrationDate().toString()); + builder.container(i, null, "registrator", container.getRegistrator().getUserId()); } - if(container.getModificationDate() != null) { - builder.container(i, "modification_date", container.getModificationDate().toString()); + builder.container(i, null, "registration_timestamp", container.getRegistrationDate().toString()); + + builder.container(i, null, "is_measured", Boolean.toString(container.isDerived() == false)); + if (container.tryGetAsDataSet() != null) + { + final Boolean containerCompleteFlag = container.tryGetAsDataSet().getComplete(); + builder.container(i, null, "is_complete", Boolean.toString(BooleanOrUnknown.T.equals(containerCompleteFlag))); } + + + builder.containerProperties(i, null, container.getProperties()); + //Container Experiment - if(container.getExperiment() != null) { - builder.container(i, "experiment_code", container.getExperiment().getCode()); - builder.container(i, "experiment_permId", container.getExperiment().getPermId()); - builder.container(i, "experiment_identifier", container.getExperiment().getIdentifier()); - if(container.getExperiment().getExperimentType() != null) { - builder.container(i, "experiment_type", container.getExperiment().getExperimentType().getCode()); - } - if(container.getExperiment().getRegistrator() != null) { - builder.container(i, "experiment_registrator", container.getExperiment().getRegistrator().getUserId()); - } - if(container.getExperiment().getRegistrationDate() != null) { - builder.container(i, "experiment_registration_date", container.getExperiment().getRegistrationDate().toString()); - } - if(container.getExperiment().getModificationDate() != null) { - builder.container(i, "experiment_modification_date", container.getExperiment().getModificationDate().toString()); - } - } + builder.container(i, EXPERIMENT , "code", container.getExperiment().getCode()); + builder.container(i, EXPERIMENT , "permId", container.getExperiment().getPermId()); + builder.container(i, EXPERIMENT , "identifier", container.getExperiment().getIdentifier()); + builder.container(i, EXPERIMENT , "type", container.getExperiment().getExperimentType().getCode()); + builder.container(i, EXPERIMENT , "registrator", container.getExperiment().getRegistrator().getUserId()); + builder.container(i, EXPERIMENT , "registration_timestamp", container.getExperiment().getRegistrationDate().toString()); + builder.container(i, EXPERIMENT, "space_code", container.getExperiment().getProject().getSpace().getCode()); + builder.container(i, EXPERIMENT, "project_code", container.getExperiment().getProject().getCode()); + builder.containerProperties(i, EXPERIMENT, container.getProperties()); + //Container Sample if(container.getSample() != null) { - builder.container(i, "sample_code", container.getSample().getCode()); - builder.container(i, "sample_permId", container.getSample().getPermId()); - builder.container(i, "sample_identifier", container.getSample().getIdentifier()); - if(container.getSample().getSampleType() != null) { - builder.container(i, "sample_type", container.getSample().getSampleType().getCode()); - } - if(container.getSample().getRegistrator() != null) { - builder.container(i, "sample_registrator", container.getSample().getRegistrator().getUserId()); - } - if(container.getSample().getRegistrationDate() != null) { - builder.container(i, "sample_registration_date", container.getSample().getRegistrationDate().toString()); - } - if(container.getSample().getModificationDate() != null) { - builder.container(i, "sample_modification_date", container.getSample().getModificationDate().toString()); - } + builder.container(i, SAMPLE , "code", container.getSample().getCode()); + builder.container(i, SAMPLE , "permId", container.getSample().getPermId()); + builder.container(i, SAMPLE , "identifier", container.getSample().getIdentifier()); + builder.container(i, SAMPLE , "type", container.getSample().getSampleType().getCode()); + builder.container(i, SAMPLE , "registrator", container.getSample().getRegistrator().getUserId()); + builder.container(i, SAMPLE , "registration_timestamp", container.getSample().getRegistrationDate().toString()); + builder.containerProperties(i, SAMPLE, container.getSample().getProperties()); } } } @@ -217,10 +206,23 @@ public class MetaDataBuilder addRow(category, property.getPropertyType().getCode(), property.tryGetAsString()); } } - - private void container(int number, String key, String value) + + private void container(int number, String subCategory, String key, String value) { - addRow(CONTAINER + "[" + number + "]", key, value); + if(subCategory != null) { + addRow(CONTAINER + "[" + number + "]." + subCategory, key, value); + } else { + addRow(CONTAINER + "[" + number + "]", key, value); + } + } + + private void containerProperties(int number, String subCategory, List<IEntityProperty> properties) + { + if(subCategory != null) { + addProperties(CONTAINER + "[" + number + "]." + subCategory, properties); + } else { + addProperties(CONTAINER + "[" + number + "]", properties); + } } private void dataSet(String key, String value) diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DistributedPackagingDataSetFileOperationsManager.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DistributedPackagingDataSetFileOperationsManager.java index 676b9f0d2caa47103d582dd23110c2e9bee4c30f..1ed646ded2084d0a60218f6af0226236cf02c34a 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DistributedPackagingDataSetFileOperationsManager.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DistributedPackagingDataSetFileOperationsManager.java @@ -43,6 +43,7 @@ import ch.systemsx.cisd.openbis.dss.generic.shared.IShareIdManager; import ch.systemsx.cisd.openbis.dss.generic.shared.IdentifierAttributeMappingManager; import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ContainerDataSet; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IDatasetLocation; import ch.systemsx.cisd.openbis.generic.shared.dto.DatasetDescription; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifierFactory; @@ -332,6 +333,26 @@ public class DistributedPackagingDataSetFileOperationsManager implements IDataSe { dataSet.setSample(getService().tryGetSampleWithExperiment(SampleIdentifierFactory.parse(sampleIdentifier))); } + if(dataSet.getContainerDataSets() != null) { + for(int i = 0; i < dataSet.getContainerDataSets().size(); i++) { + //Container + ContainerDataSet container = dataSet.getContainerDataSets().get(i); + AbstractExternalData containerDataSet = getService().tryGetDataSet(container.getCode()); + dataSet.getContainerDataSets().set(i, (ContainerDataSet) containerDataSet); + //Container Experiment + String containerExperimentIdentifier = datasetDescription.getExperimentIdentifier(); + if (containerExperimentIdentifier != null) + { + container.setExperiment(getService().tryGetExperiment(ExperimentIdentifierFactory.parse(containerExperimentIdentifier))); + } + //Container Sample + String containerSampleIdentifier = container.getSampleIdentifier(); + if (containerSampleIdentifier != null) + { + container.setSample(getService().tryGetSampleWithExperiment(SampleIdentifierFactory.parse(containerSampleIdentifier))); + } + } + } return dataSet; }