From 6916907c2a400289813745a3193d3ab84dd06fbb Mon Sep 17 00:00:00 2001 From: cramakri <cramakri> Date: Tue, 24 May 2011 08:26:34 +0000 Subject: [PATCH] LMS-2104 Fixed bugs discovered by FJE. SVN: 21456 --- .../registrator/api/v1/impl/DataSet.java | 4 ++- .../openbis/generic/server/ETLService.java | 36 +++++++++++++++---- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSet.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSet.java index f852835457e..f0bcbfaa3fc 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSet.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSet.java @@ -222,7 +222,9 @@ public class DataSet<T extends DataSetInformation> implements IDataSet public void setContainedDataSetCodes(List<String> containedDataSetCodes) { - ArrayList<String> newContainedDataSetCodes = new ArrayList<String>(containedDataSetCodes); + ArrayList<String> newContainedDataSetCodes = + (null == containedDataSetCodes) ? new ArrayList<String>() : new ArrayList<String>( + containedDataSetCodes); registrationDetails.getDataSetInformation().setContainedDataSetCodes( newContainedDataSetCodes); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java index 6245b3c47fb..9e1c73081ed 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/ETLService.java @@ -1219,23 +1219,45 @@ public class ETLService extends AbstractCommonServer<IETLService> implements IET ArrayList<DataPE> dataSetsCreated = new ArrayList<DataPE>(); ArrayList<? extends NewExternalData> dataSetRegistrations = operationDetails.getDataSetRegistrations(); + + ArrayList<NewContainerDataSet> containerRegistrations = + new ArrayList<NewContainerDataSet>(); + // In the first pass, skip container data sets for (NewExternalData dataSet : dataSetRegistrations) { - SampleIdentifier sampleIdentifier = dataSet.getSampleIdentifierOrNull(); - IDataBO dataBO; - if (sampleIdentifier != null) + if (dataSet instanceof NewContainerDataSet) { - dataBO = registerDataSetInternal(session, sampleIdentifier, dataSet); + containerRegistrations.add((NewContainerDataSet) dataSet); } else { - ExperimentIdentifier experimentIdentifier = dataSet.getExperimentIdentifierOrNull(); - dataBO = registerDataSetInternal(session, experimentIdentifier, dataSet); + registerDatasetInternal(session, dataSetsCreated, dataSet); } - dataSetsCreated.add(dataBO.getData()); + } + + // Now do the containers + for (NewContainerDataSet dataSet : containerRegistrations) + { + registerDatasetInternal(session, dataSetsCreated, dataSet); } return DataSetTranslator.translate(dataSetsCreated, "", session.getBaseIndexURL()); } + private void registerDatasetInternal(final Session session, ArrayList<DataPE> dataSetsCreated, + NewExternalData dataSet) + { + SampleIdentifier sampleIdentifier = dataSet.getSampleIdentifierOrNull(); + IDataBO dataBO; + if (sampleIdentifier != null) + { + dataBO = registerDataSetInternal(session, sampleIdentifier, dataSet); + } else + { + ExperimentIdentifier experimentIdentifier = dataSet.getExperimentIdentifierOrNull(); + dataBO = registerDataSetInternal(session, experimentIdentifier, dataSet); + } + dataSetsCreated.add(dataBO.getData()); + } + private ArrayList<Experiment> createExperiments(String sessionToken, AtomicEntityOperationDetails operationDetails) { -- GitLab