From f4017b140f34b07dc516740f71d0b813c2f8c704 Mon Sep 17 00:00:00 2001
From: jakubs <jakubs>
Date: Wed, 27 Jun 2012 12:13:26 +0000
Subject: [PATCH] SP-169 BIS-90 create container data set algorithm and link
 data set algorithms inheriting from abstract no file algorithm

SVN: 25893
---
 .../ContainerDataSetStorageAlgorithm.java     | 63 ++++++++++++++++++
 .../LinkDataSetStorageAlgorithm.java          | 65 +++++++++++++++++++
 .../api/v1/impl/ConversionUtils.java          | 28 ++++++++
 3 files changed, 156 insertions(+)
 create mode 100644 datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/ContainerDataSetStorageAlgorithm.java
 create mode 100644 datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/LinkDataSetStorageAlgorithm.java

diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/ContainerDataSetStorageAlgorithm.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/ContainerDataSetStorageAlgorithm.java
new file mode 100644
index 00000000000..be25056355c
--- /dev/null
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/ContainerDataSetStorageAlgorithm.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2012 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.etlserver.registrator;
+
+import java.io.File;
+
+import ch.systemsx.cisd.common.filesystem.IFileOperations;
+import ch.systemsx.cisd.common.mail.IMailClient;
+import ch.systemsx.cisd.etlserver.IDataStoreStrategy;
+import ch.systemsx.cisd.etlserver.IStorageProcessorTransactional;
+import ch.systemsx.cisd.etlserver.registrator.api.v1.impl.ConversionUtils;
+import ch.systemsx.cisd.etlserver.registrator.recovery.DataSetStorageRecoveryAlgorithm;
+import ch.systemsx.cisd.etlserver.validation.IDataSetValidator;
+import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation;
+import ch.systemsx.cisd.openbis.generic.shared.dto.NewExternalData;
+
+/**
+ * @author Jakub Straszewski
+ */
+public class ContainerDataSetStorageAlgorithm<T extends DataSetInformation> extends
+        AbstractNoFileDataSetStorageAlgorithm<T>
+{
+    public ContainerDataSetStorageAlgorithm(File incomingDataSetFile,
+            DataSetRegistrationDetails<? extends T> registrationDetails,
+            IDataStoreStrategy dataStoreStrategy, IStorageProcessorTransactional storageProcessor,
+            IDataSetValidator dataSetValidator, String dataStoreCode,
+            IFileOperations fileOperations, IMailClient mailClient, File stagingDirectory,
+            File precommitDirectory)
+    {
+        super(incomingDataSetFile, registrationDetails, dataStoreStrategy, storageProcessor,
+                dataSetValidator, dataStoreCode, fileOperations, mailClient, stagingDirectory,
+                precommitDirectory);
+    }
+
+    public ContainerDataSetStorageAlgorithm(IDataStoreStrategy dataStoreStrategy,
+            IStorageProcessorTransactional storageProcessor, IFileOperations fileOperations,
+            IMailClient mailClient, DataSetStorageRecoveryAlgorithm<T> recoveryAlgorithm)
+    {
+        super(dataStoreStrategy, storageProcessor, fileOperations, mailClient, recoveryAlgorithm);
+        // TODO Auto-generated constructor stub
+    }
+
+    @Override
+    public NewExternalData createExternalData()
+    {
+        return ConversionUtils.convertToNewContainerDataSet(getRegistrationDetails(),
+                getDataStoreCode());
+    }
+}
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/LinkDataSetStorageAlgorithm.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/LinkDataSetStorageAlgorithm.java
new file mode 100644
index 00000000000..dbadcca8f83
--- /dev/null
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/LinkDataSetStorageAlgorithm.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2012 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.etlserver.registrator;
+
+import java.io.File;
+
+import ch.systemsx.cisd.common.filesystem.IFileOperations;
+import ch.systemsx.cisd.common.mail.IMailClient;
+import ch.systemsx.cisd.etlserver.IDataStoreStrategy;
+import ch.systemsx.cisd.etlserver.IStorageProcessorTransactional;
+import ch.systemsx.cisd.etlserver.registrator.api.v1.impl.ConversionUtils;
+import ch.systemsx.cisd.etlserver.registrator.recovery.DataSetStorageRecoveryAlgorithm;
+import ch.systemsx.cisd.etlserver.validation.IDataSetValidator;
+import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation;
+import ch.systemsx.cisd.openbis.generic.shared.dto.NewExternalData;
+
+/**
+ * @author Jakub Straszewski
+ */
+public class LinkDataSetStorageAlgorithm<T extends DataSetInformation> extends
+        AbstractNoFileDataSetStorageAlgorithm<T>
+{
+
+    public LinkDataSetStorageAlgorithm(File incomingDataSetFile,
+            DataSetRegistrationDetails<? extends T> registrationDetails,
+            IDataStoreStrategy dataStoreStrategy, IStorageProcessorTransactional storageProcessor,
+            IDataSetValidator dataSetValidator, String dataStoreCode,
+            IFileOperations fileOperations, IMailClient mailClient, File stagingDirectory,
+            File precommitDirectory)
+    {
+        super(incomingDataSetFile, registrationDetails, dataStoreStrategy, storageProcessor,
+                dataSetValidator, dataStoreCode, fileOperations, mailClient, stagingDirectory,
+                precommitDirectory);
+    }
+
+    public LinkDataSetStorageAlgorithm(IDataStoreStrategy dataStoreStrategy,
+            IStorageProcessorTransactional storageProcessor, IFileOperations fileOperations,
+            IMailClient mailClient, DataSetStorageRecoveryAlgorithm<T> recoveryAlgorithm)
+    {
+        super(dataStoreStrategy, storageProcessor, fileOperations, mailClient, recoveryAlgorithm);
+        // TODO Auto-generated constructor stub
+    }
+
+    @Override
+    public NewExternalData createExternalData()
+    {
+        return ConversionUtils
+                .convertToNewLinkDataSet(getRegistrationDetails(),
+                getDataStoreCode());
+    }
+}
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 d0b5d69c1a5..a6b60e9265c 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
@@ -41,6 +41,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetUpdatesDTO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.NewContainerDataSet;
 import ch.systemsx.cisd.openbis.generic.shared.dto.NewDataSet;
 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.SampleUpdatesDTO;
 import ch.systemsx.cisd.openbis.generic.shared.dto.StorageFormat;
@@ -190,6 +191,33 @@ public class ConversionUtils
         return data;
     }
 
+    public static NewLinkDataSet convertToNewLinkDataSet(
+            DataSetRegistrationDetails<?> registrationDetails, String dataStoreCode)
+    {
+        DataSetInformation dataSetInformation = registrationDetails.getDataSetInformation();
+
+        NewLinkDataSet data = new NewLinkDataSet();
+        data.setExternalDataManagementSystemCode(dataSetInformation
+                .getExternalDataManagementSystem());
+        data.setExternalCode(dataSetInformation.getExternalCode());
+
+        data.setUserId(dataSetInformation.getUploadingUserIdOrNull());
+        data.setUserEMail(dataSetInformation.tryGetUploadingUserEmail());
+        data.setExtractableData(dataSetInformation.getExtractableData());
+        data.setDataSetType(registrationDetails.getDataSetType());
+        data.setMeasured(registrationDetails.isMeasuredData());
+        data.setDataStoreCode(dataStoreCode);
+        data.setExperimentIdentifierOrNull(dataSetInformation.getExperimentIdentifier());
+        data.setSampleIdentifierOrNull(dataSetInformation.getSampleIdentifier());
+        data.setParentDataSetCodes(dataSetInformation.getParentDataSetCodes());
+
+        List<NewProperty> newProperties =
+                dataSetInformation.getExtractableData().getDataSetProperties();
+        data.getExtractableData().setDataSetProperties(newProperties);
+
+        return data;
+    }
+
     public static NewContainerDataSet convertToNewContainerDataSet(
             DataSetRegistrationDetails<?> registrationDetails, String dataStoreCode)
     {
-- 
GitLab