From 1ad700c9f218a767cf788d06505c2a4cb1529979 Mon Sep 17 00:00:00 2001 From: kaloyane <kaloyane> Date: Mon, 30 May 2011 14:54:07 +0000 Subject: [PATCH] [LMS-2285] added conversion from DataSetUpdatable to DataSetUpdatesDTO SVN: 21511 --- .../api/v1/impl/ConversionUtils.java | 41 ++++++++++++++++++- .../generic/shared/basic/dto/Code.java | 10 +++-- 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ConversionUtils.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ConversionUtils.java index d2920bbd4b5..cc32cb2e3b7 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ConversionUtils.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ConversionUtils.java @@ -23,6 +23,9 @@ import ch.systemsx.cisd.common.types.BooleanOrUnknown; import ch.systemsx.cisd.etlserver.registrator.DataSetRegistrationDetails; import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Code; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ContainerDataSet; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewAttachment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExperiment; @@ -36,7 +39,9 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.NewExternalData; import ch.systemsx.cisd.openbis.generic.shared.dto.NewProperty; import ch.systemsx.cisd.openbis.generic.shared.dto.SampleUpdatesDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.StorageFormat; +import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifierFactory; +import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFactory; /** @@ -181,8 +186,40 @@ public class ConversionUtils public static DataSetUpdatesDTO convertToDataSetUpdatesDTO(DataSetUpdatable dataSet) { - // TODO KE: implement - return null; + ExternalData externalData = dataSet.getExternalData(); + + DataSetUpdatesDTO dataSetUpdate = new DataSetUpdatesDTO(); + dataSetUpdate.setDatasetId(new TechId(externalData)); + dataSetUpdate.setVersion(externalData.getModificationDate()); + dataSetUpdate.setFileFormatTypeCode(dataSet.getFileFormatType()); + dataSetUpdate.setProperties(externalData.getProperties()); + + if (externalData.getExperiment() != null) + { + String identifierString = externalData.getExperiment().getIdentifier(); + ExperimentIdentifier experimentIdentifier = + ExperimentIdentifierFactory.parse(identifierString); + dataSetUpdate.setExperimentIdentifierOrNull(experimentIdentifier); + } + + if (externalData.getSample() != null) + { + String identifierString = externalData.getSampleIdentifier(); + SampleIdentifier sampleIdentifier = SampleIdentifierFactory.parse(identifierString); + dataSetUpdate.setSampleIdentifierOrNull(sampleIdentifier); + } + + if (externalData.isContainer()) + { + ContainerDataSet container = externalData.tryGetAsContainerDataSet(); + String[] containedCodes = Code.extractCodesToArray(container.getContainedDataSets()); + dataSetUpdate.setModifiedContainedDatasetCodesOrNull(containedCodes); + } + + String[] parentCodes = Code.extractCodesToArray(externalData.getParents()); + dataSetUpdate.setModifiedParentDatasetCodesOrNull(parentCodes); + + return dataSetUpdate; } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Code.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Code.java index 267d24bfedc..5cddba3eb8a 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Code.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/Code.java @@ -104,16 +104,20 @@ public class Code<T extends Code<T>> implements ISerializable, ICodeHolder, Comp public final static List<String> extractCodes(Collection<? extends ICodeHolder> codeProviders) { List<String> codes = new ArrayList<String>(); - for (ICodeHolder codeProvider : codeProviders) + if (codeProviders != null) { - codes.add(codeProvider.getCode()); + for (ICodeHolder codeProvider : codeProviders) + { + codes.add(codeProvider.getCode()); + } } return codes; } public final static String[] extractCodesToArray(Collection<? extends ICodeHolder> codeProviders) { - return extractCodes(codeProviders).toArray(new String[codeProviders.size()]); + int size = (codeProviders == null) ? 0 : codeProviders.size(); + return extractCodes(codeProviders).toArray(new String[size]); } private final static class CodeProviderComparator implements Comparator<ICodeHolder>, -- GitLab