From 68c748dc869ae39f1d91a5bfd88eb3daed8c17f4 Mon Sep 17 00:00:00 2001
From: jakubs <jakubs>
Date: Wed, 27 Jun 2012 12:14:37 +0000
Subject: [PATCH] SP-169 BIS-90 add definitions for a new linked data set

SVN: 25897
---
 .../generic/server/business/bo/DataBO.java    | 39 ++++++++++++++
 .../generic/shared/dto/NewLinkDataSet.java    | 51 +++++++++++++++++++
 2 files changed, 90 insertions(+)
 create mode 100644 openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/NewLinkDataSet.java

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataBO.java
index 956ce9fe8aa..565239c837a 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataBO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/DataBO.java
@@ -56,6 +56,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.FileFormatTypePE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.LinkDataPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.NewContainerDataSet;
 import ch.systemsx.cisd.openbis.generic.shared.dto.NewExternalData;
+import ch.systemsx.cisd.openbis.generic.shared.dto.NewLinkDataSet;
 import ch.systemsx.cisd.openbis.generic.shared.dto.NewProperty;
 import ch.systemsx.cisd.openbis.generic.shared.dto.PersonPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE;
@@ -175,9 +176,13 @@ public class DataBO extends AbstractDataSetBusinessObject implements IDataBO
         assert sample != null : "Undefined sample.";
 
         boolean isContainer = newData instanceof NewContainerDataSet;
+        boolean isLink = newData instanceof NewLinkDataSet;
         if (isContainer)
         {
             define((NewContainerDataSet) newData, sourceType);
+        } else if (isLink)
+        {
+            define((NewLinkDataSet) newData, sourceType);
         } else
         {
             define(newData, sourceType);
@@ -197,9 +202,13 @@ public class DataBO extends AbstractDataSetBusinessObject implements IDataBO
         assert experiment != null : "Undefined experiment.";
 
         boolean isContainer = newData instanceof NewContainerDataSet;
+        boolean isLink = newData instanceof NewLinkDataSet;
         if (isContainer)
         {
             define((NewContainerDataSet) newData, sourceType);
+        } else if (isLink)
+        {
+            define((NewLinkDataSet) newData, sourceType);
         } else
         {
             define(newData, sourceType);
@@ -317,6 +326,36 @@ public class DataBO extends AbstractDataSetBusinessObject implements IDataBO
         data = dataPE;
     }
 
+    private void define(NewLinkDataSet newData, SourceType sourceType)
+    {
+        assert newData != null : "Undefined data.";
+        final DataSetType dataSetType = newData.getDataSetType();
+        assert dataSetType != null : "Undefined data set type.";
+        assert sourceType != null : "Undefined source type.";
+
+        final LinkDataPE dataPE = new LinkDataPE();
+
+        dataPE.setExternalCode(newData.getExternalCode());
+
+        String code = newData.getExternalDataManagementSystemCode();
+        ExternalDataManagementSystemPE externalDMS =
+                getExternalDataManagementSystemDAO().tryToFindExternalDataManagementSystemByCode(
+                        code);
+        dataPE.setExternalDataManagementSystem(externalDMS);
+
+        dataPE.setDataProducerCode(newData.getDataProducerCode());
+        dataPE.setProductionDate(newData.getProductionDate());
+        dataPE.setCode(newData.getCode());
+        dataPE.setDataSetType(getDataSetType(dataSetType));
+        dataPE.setRegistrator(tryToGetRegistrator(newData));
+        dataStore = getDataStoreDAO().tryToFindDataStoreByCode(newData.getDataStoreCode());
+        dataPE.setDataStore(dataStore);
+        defineDataSetProperties(dataPE, convertToDataSetProperties(newData.getDataSetProperties()));
+        dataPE.setDerived(sourceType == SourceType.DERIVED);
+
+        data = dataPE;
+    }
+
     private PersonPE tryToGetRegistrator(NewExternalData newData)
     {
         String userId = newData.getUserId();
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/NewLinkDataSet.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/NewLinkDataSet.java
new file mode 100644
index 00000000000..a39104f066d
--- /dev/null
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/dto/NewLinkDataSet.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2011 ETH Zuerich, CISD
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ch.systemsx.cisd.openbis.generic.shared.dto;
+
+
+/**
+ * @author Jakub Straszewski
+ */
+public class NewLinkDataSet extends NewExternalData
+{
+    private static final long serialVersionUID = 1L;
+
+    private String externalDataManagementSystemCode;
+
+    private String externalCode;
+
+    public String getExternalDataManagementSystemCode()
+    {
+        return externalDataManagementSystemCode;
+    }
+
+    public void setExternalDataManagementSystemCode(String externalDataManagementSystemCode)
+    {
+        this.externalDataManagementSystemCode = externalDataManagementSystemCode;
+    }
+
+    public String getExternalCode()
+    {
+        return externalCode;
+    }
+
+    public void setExternalCode(String externalCode)
+    {
+        this.externalCode = externalCode;
+    }
+
+}
-- 
GitLab