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 e249084b8df5894e54b1e552e0974561b92754b4..f0bcccd5e55ed0f009b916a4c321fab9189de6eb 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 @@ -28,6 +28,7 @@ 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.LinkDataSet; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewAttachment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExperiment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewMaterial; @@ -251,8 +252,13 @@ public class ConversionUtils dataSetUpdate.setModifiedContainedDatasetCodesOrNull(containedCodes); } - String[] parentCodes = Code.extractCodesToArray(externalData.getParents()); - dataSetUpdate.setModifiedParentDatasetCodesOrNull(parentCodes); + if (externalData.isLinkData()) + { + LinkDataSet link = externalData.tryGetAsLinkDataSet(); + dataSetUpdate.setExternalCode(link.getExternalCode()); + dataSetUpdate.setExternalDataManagementSystemCode(link + .getExternalDataManagementSystem().getCode()); + } return dataSetUpdate; } @@ -294,6 +300,13 @@ public class ConversionUtils dataSetUpdate.setModifiedContainedDatasetCodesOrNull(containedCodes); } + if (externalData.isLinkData()) + { + dataSetUpdate.setExternalCode(dataSet.getExternalCode()); + dataSetUpdate.setExternalDataManagementSystemCode(dataSet + .getExternalDataManagementSystem().getCode()); + } + String[] parentCodes = Code.extractCodesToArray(externalData.getParents()); dataSetUpdate.setModifiedParentDatasetCodesOrNull(parentCodes); diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetUpdatable.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetUpdatable.java index e96b7ad45324e14a524c6300a4a0a5270526e926..14828c8a7a77c6b6f0eb9435a203f6ecf6c193f6 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetUpdatable.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetUpdatable.java @@ -208,18 +208,29 @@ public class DataSetUpdatable extends DataSetImmutable implements IDataSetUpdata public void setExternalDataManagementSystem( IExternalDataManagementSystemImmutable externalDataManagementSystem) { + if (isLinkDataSet()) + { + ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalDataManagementSystem dummy = + new ExternalDataManagementSystem(); + dummy.setCode(externalDataManagementSystem.getCode()); - ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalDataManagementSystem dummy = - new ExternalDataManagementSystem(); - dummy.setCode(externalDataManagementSystem.getCode()); - - dataSet.tryGetAsLinkDataSet().setExternalDataManagementSystem(dummy); + dataSet.tryGetAsLinkDataSet().setExternalDataManagementSystem(dummy); + } else + { + // ignore + } } @Override public void setExternalCode(String externalCode) { - dataSet.tryGetAsLinkDataSet().setExternalCode(externalCode); + if (isLinkDataSet()) + { + dataSet.tryGetAsLinkDataSet().setExternalCode(externalCode); + } else + { + // ignore + } } }