From b40191067d907bda84cb15a23467fcf0fc216e79 Mon Sep 17 00:00:00 2001
From: cramakri <cramakri>
Date: Tue, 15 Jun 2010 08:18:20 +0000
Subject: [PATCH] LMS-1569 Refactored code to get/create {experiment,
 container, dataset}.

SVN: 16492
---
 .../openbis/dss/etl/HCSDatasetUploader.java   |  38 ++-----
 .../ScreeningContainerDatasetInfoHelper.java  | 103 ++++++++++++++++++
 2 files changed, 110 insertions(+), 31 deletions(-)
 create mode 100644 screening/source/java/ch/systemsx/cisd/openbis/dss/etl/ScreeningContainerDatasetInfoHelper.java

diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSDatasetUploader.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSDatasetUploader.java
index 00f409f35a1..74bc81e66d7 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSDatasetUploader.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/HCSDatasetUploader.java
@@ -31,8 +31,6 @@ import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
 import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgAcquiredImageDTO;
 import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgChannelDTO;
 import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgChannelStackDTO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgContainerDTO;
-import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgDatasetDTO;
 import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgImageDTO;
 import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgSpotDTO;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
@@ -239,7 +237,8 @@ public class HCSDatasetUploader
 
     private static AcquiredImageInStack makeAcquiredImageInStack(AcquiredPlateImage image)
     {
-        return new AcquiredImageInStack(image.getChannelName(), image.getImageReference(), image.getThumbnailFilePathOrNull());
+        return new AcquiredImageInStack(image.getChannelName(), image.getImageReference(), image
+                .getThumbnailFilePathOrNull());
     }
 
     private static ImgChannelStackDTO makeStackDTO(AcquiredPlateImage image, Long[][] spotIds,
@@ -283,15 +282,14 @@ public class HCSDatasetUploader
     {
         long imageId = addImage(image.getImageFilePath());
         Long thumbnailId = addImage(image.getThumbnailPathOrNull());
-        ImgAcquiredImageDTO acquiredImage =
-                new ImgAcquiredImageDTO();
+        ImgAcquiredImageDTO acquiredImage = new ImgAcquiredImageDTO();
         acquiredImage.setImageId(imageId);
         acquiredImage.setThumbnailId(thumbnailId);
         acquiredImage.setChannelStackId(stackId);
         acquiredImage.setChannelId(channelTechId);
         dao.addAcquiredImage(acquiredImage);
     }
-    
+
     private Long addImage(RelativeImageReference imageReferenceOrNull)
     {
         if (imageReferenceOrNull == null)
@@ -423,38 +421,16 @@ public class HCSDatasetUploader
 
     private long createDataset(long contId, ScreeningContainerDatasetInfo info)
     {
-        ImgDatasetDTO dataset =
-                new ImgDatasetDTO(info.getDatasetPermId(), info.getTileRows(), info
-                        .getTileColumns(), contId);
-        return dao.addDataset(dataset);
+        return ScreeningContainerDatasetInfoHelper.createDataset(dao, info, contId);
     }
 
     private long getOrCreateContainer(long expId, ScreeningContainerDatasetInfo info)
     {
-        String containerPermId = info.getContainerPermId();
-        Long containerId = dao.tryGetContainerIdPermId(containerPermId);
-        if (containerId != null)
-        {
-            return containerId;
-        } else
-        {
-            ImgContainerDTO container =
-                    new ImgContainerDTO(containerPermId, info.getContainerRows(), info
-                            .getContainerColumns(), expId);
-            return dao.addContainer(container);
-        }
+        return ScreeningContainerDatasetInfoHelper.getOrCreateContainer(dao, info, expId);
     }
 
     private long getOrCreateExperiment(ScreeningContainerDatasetInfo info)
     {
-        String experimentPermId = info.getExperimentPermId();
-        Long expId = dao.tryGetExperimentIdByPermId(experimentPermId);
-        if (expId != null)
-        {
-            return expId;
-        } else
-        {
-            return dao.addExperiment(experimentPermId);
-        }
+        return ScreeningContainerDatasetInfoHelper.getOrCreateExperiment(dao, info);
     }
 }
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/ScreeningContainerDatasetInfoHelper.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/ScreeningContainerDatasetInfoHelper.java
new file mode 100644
index 00000000000..8ce0d018c68
--- /dev/null
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/ScreeningContainerDatasetInfoHelper.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright 2010 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.dss.etl;
+
+import ch.systemsx.cisd.openbis.dss.etl.dataaccess.IImagingUploadDAO;
+import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgContainerDTO;
+import ch.systemsx.cisd.openbis.dss.etl.dataaccess.ImgDatasetDTO;
+
+/**
+ * Helper class for retrieving and/or creating entities associated with the screening container data
+ * set info in the DB.
+ * 
+ * @author Chandrasekhar Ramakrishnan
+ */
+public class ScreeningContainerDatasetInfoHelper
+{
+    private final ScreeningContainerDatasetInfo info;
+
+    private final IImagingUploadDAO dao;
+
+    public ScreeningContainerDatasetInfoHelper(IImagingUploadDAO dao,
+            ScreeningContainerDatasetInfo info)
+    {
+        this.dao = dao;
+        this.info = info;
+    }
+
+    public long getOrCreateExperiment()
+    {
+        return getOrCreateExperiment(dao, info);
+    }
+
+    public long getOrCreateContainer(long expId)
+    {
+        return getOrCreateContainer(dao, info, expId);
+    }
+
+    public long getOrCreateDataset(long contId)
+    {
+        ImgDatasetDTO dataset = dao.tryGetDatasetByPermId(info.getDatasetPermId());
+        if (null != dataset)
+        {
+            return dataset.getId();
+        } else
+        {
+            return createDataset(dao, info, contId);
+        }
+
+    }
+
+    // Package-visible static methods
+    static long createDataset(IImagingUploadDAO dao, ScreeningContainerDatasetInfo info, long contId)
+    {
+        ImgDatasetDTO dataset =
+                new ImgDatasetDTO(info.getDatasetPermId(), info.getTileRows(), info
+                        .getTileColumns(), contId);
+        return dao.addDataset(dataset);
+    }
+
+    static long getOrCreateContainer(IImagingUploadDAO dao, ScreeningContainerDatasetInfo info,
+            long expId)
+    {
+        String containerPermId = info.getContainerPermId();
+        Long containerId = dao.tryGetContainerIdPermId(containerPermId);
+        if (containerId != null)
+        {
+            return containerId;
+        } else
+        {
+            ImgContainerDTO container =
+                    new ImgContainerDTO(containerPermId, info.getContainerRows(), info
+                            .getContainerColumns(), expId);
+            return dao.addContainer(container);
+        }
+    }
+
+    static long getOrCreateExperiment(IImagingUploadDAO dao, ScreeningContainerDatasetInfo info)
+    {
+        String experimentPermId = info.getExperimentPermId();
+        Long expId = dao.tryGetExperimentIdByPermId(experimentPermId);
+        if (expId != null)
+        {
+            return expId;
+        } else
+        {
+            return dao.addExperiment(experimentPermId);
+        }
+    }
+}
-- 
GitLab