From cec8313e8bccddb15af3f4eb87dbc3e290e72940 Mon Sep 17 00:00:00 2001 From: kaloyane <kaloyane> Date: Tue, 10 May 2011 08:21:57 +0000 Subject: [PATCH] [LMS-2104] prevent container datasets from being uploaded to CIFEX for now SVN: 21179 --- .../dss/generic/server/UploadingCommand.java | 8 +++++-- .../server/business/bo/ExternalDataTable.java | 23 +++++++++++++++++++ 2 files changed, 29 insertions(+), 2 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 0cb80a21d2e..107a12581a4 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 @@ -48,6 +48,7 @@ import ch.systemsx.cisd.common.mail.MailClientParameters; import ch.systemsx.cisd.common.types.BooleanOrUnknown; import ch.systemsx.cisd.common.utilities.TokenGenerator; import ch.systemsx.cisd.openbis.dss.generic.shared.IDataSetDirectoryProvider; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSet; 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.IEntityProperty; @@ -409,8 +410,11 @@ class UploadingCommand implements IDataSetCommand { outputStream = new FileOutputStream(zipFile); zipOutputStream = new ZipOutputStream(outputStream); - for (ExternalData dataSet : dataSets) + for (ExternalData externalData : dataSets) { + DataSet dataSet = externalData.tryGetAsDataSet(); + assert dataSet != null : "container datasets are currently not supported by DSS client"; + DatasetDescription dataSetDescription = ExternalDataTranslator.translateToDescription(dataSet); File dataSetFile = dataSetDirectoryProvider.getDataSetDirectory(dataSetDescription); @@ -462,7 +466,7 @@ class UploadingCommand implements IDataSetCommand } } - private String createMetaData(ExternalData dataSet) + private String createMetaData(DataSet dataSet) { MetaDataBuilder builder = new MetaDataBuilder(); builder.dataSet("code", dataSet.getCode()); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExternalDataTable.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExternalDataTable.java index 2d508016b5b..4b41b471c46 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExternalDataTable.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/ExternalDataTable.java @@ -309,6 +309,7 @@ public final class ExternalDataTable extends AbstractExternalDataBusinessObject assertDatasetsAreAvailable(externalData); Map<DataStorePE, List<ExternalDataPE>> map = groupDataSetsByDataStores(); assertDataSetsAreKnown(map); + assertNoContainerDataSets(map); uploadContext.setUserEMail(session.getPrincipal().getEmail()); uploadContext.setSessionUserID(session.getUserName()); if (StringUtils.isBlank(uploadContext.getComment())) @@ -386,6 +387,28 @@ public final class ExternalDataTable extends AbstractExternalDataBusinessObject } } + private void assertNoContainerDataSets(Map<DataStorePE, List<ExternalDataPE>> map) + { + Set<String> containerDataSets = new LinkedHashSet<String>(); + for (Map.Entry<DataStorePE, List<ExternalDataPE>> entry : map.entrySet()) + { + for (ExternalDataPE dataSet : entry.getValue()) + { + if (dataSet.isContainerDataSet()) + { + containerDataSets.add(dataSet.getCode()); + } + } + } + + if (false == containerDataSets.isEmpty()) + { + throw new UserFailureException( + "The following data sets are container data sets and cannot be uploaded to CIFEX. " + + containerDataSets); + } + } + private Map<DataStorePE, List<ExternalDataPE>> groupDataSetsByDataStores() { Map<DataStorePE, List<ExternalDataPE>> map = -- GitLab