From 19bea31dfb3ef2c3d699c5a2568181b52106ad3e Mon Sep 17 00:00:00 2001
From: jakubs <jakubs>
Date: Tue, 26 Jun 2012 15:09:16 +0000
Subject: [PATCH] SP-169 BIS-90 add link data set features to the data set
 updates

SVN: 25875
---
 .../api/v1/impl/ConversionUtils.java          | 17 ++++++++++++--
 .../api/v1/impl/DataSetUpdatable.java         | 23 ++++++++++++++-----
 2 files changed, 32 insertions(+), 8 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 e249084b8df..f0bcccd5e55 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 e96b7ad4532..14828c8a7a7 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
+        }
     }
 
 }
-- 
GitLab