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 1ed646ded2084d0a60218f6af0226236cf02c34a..5c508b22d4fb81f177b99baac8ff9c6442df48c4 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 @@ -19,6 +19,7 @@ package ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard; import java.io.File; import java.io.IOException; import java.util.Collection; +import java.util.List; import java.util.Properties; import org.apache.log4j.Logger; @@ -45,6 +46,7 @@ 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.basic.dto.Sample; import ch.systemsx.cisd.openbis.generic.shared.dto.DatasetDescription; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifierFactory; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFactory; @@ -333,23 +335,25 @@ 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) + List<ContainerDataSet> containerDataSets = dataSet.getContainerDataSets(); + if (containerDataSets != null) + { + for (ContainerDataSet containerDataSet : containerDataSets) + { + // Inject container properties + if (containerDataSet.getProperties() == null) { - container.setExperiment(getService().tryGetExperiment(ExperimentIdentifierFactory.parse(containerExperimentIdentifier))); + containerDataSet.setDataSetProperties(getService().tryGetDataSet(containerDataSet.getCode()).getProperties()); } - //Container Sample - String containerSampleIdentifier = container.getSampleIdentifier(); - if (containerSampleIdentifier != null) + // Inject full container experiment with properties + String containerExperimentIdentifier = containerDataSet.getExperiment().getIdentifier(); + containerDataSet.setExperiment(getService().tryGetExperiment(ExperimentIdentifierFactory.parse(containerExperimentIdentifier))); + // Inject full container sample with properties + Sample sample = containerDataSet.getSample(); + if (sample != null) { - container.setSample(getService().tryGetSampleWithExperiment(SampleIdentifierFactory.parse(containerSampleIdentifier))); + String containerSampleIdentifier = sample.getIdentifier(); + containerDataSet.setSample(getService().tryGetSampleWithExperiment(SampleIdentifierFactory.parse(containerSampleIdentifier))); } } }