From 6ae9688ae88a11a79e82d661ec20a479ad554fbd Mon Sep 17 00:00:00 2001
From: tpylak <tpylak>
Date: Wed, 16 Jun 2010 13:11:33 +0000
Subject: [PATCH] LMS-1541 bugfix: screening api

SVN: 16559
---
 .../cisd/openbis/dss/etl/dataaccess/HCSDatasetLoader.java | 8 ++++++--
 .../openbis/dss/etl/dataaccess/IImagingUploadDAO.java     | 2 +-
 .../dss/screening/server/DssServiceRpcScreening.java      | 3 ++-
 .../screening/client/api/v1/ScreeningClientApiTest.java   | 2 +-
 .../openbis/dss/etl/dataaccess/ImagingUploadDAOTest.java  | 4 ++--
 5 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/HCSDatasetLoader.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/HCSDatasetLoader.java
index 089eb3fd30c..0b7dee61ddf 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/HCSDatasetLoader.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/HCSDatasetLoader.java
@@ -124,9 +124,13 @@ public class HCSDatasetLoader implements IHCSDatasetLoader
         assert wellLocation.getX() <= getContainer().getNumberOfColumns();
         assert wellLocation.getY() <= getContainer().getNumberOfRows();
 
-        long chosenChannelId =
-                query.getChannelIdByChannelNameDatasetIdOrExperimentId(getDataset().getId(),
+        Long chosenChannelId =
+                query.tryGetChannelIdByChannelNameDatasetIdOrExperimentId(getDataset().getId(),
                         getContainer().getExperimentId(), chosenChannel);
+        if (chosenChannelId == null)
+        {
+            return null;
+        }
 
         ImgImageDTO imageDTO;
         IContent content = null;
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/IImagingUploadDAO.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/IImagingUploadDAO.java
index 96e87398e2b..c4a421f49c9 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/IImagingUploadDAO.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/IImagingUploadDAO.java
@@ -144,7 +144,7 @@ public interface IImagingUploadDAO extends TransactionQuery
     public void updateChannel(ImgChannelDTO channel);
 
     @Select("select ID from CHANNELS where (DS_ID = ?{1} or EXP_ID = ?{2}) and NAME = ?{3}")
-    public long getChannelIdByChannelNameDatasetIdOrExperimentId(long id, long experimentId,
+    public Long tryGetChannelIdByChannelNameDatasetIdOrExperimentId(long id, long experimentId,
             String chosenChannel);
 
 }
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreening.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreening.java
index 2d3ec0d9459..38a0556b982 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreening.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/screening/server/DssServiceRpcScreening.java
@@ -243,7 +243,8 @@ public class DssServiceRpcScreening extends AbstractDssServiceRpc implements
                         imageLoadersMap.get(imageReference.getDatasetCode());
                 assert imageAccessor != null : "imageAccessor not found for: " + imageReference;
                 AbsoluteImageReference image = tryGetImage(imageAccessor, imageReference);
-                if (image.tryGetColorComponent() != null || image.tryGetPage() != null)
+                if (image == null
+                        || (image.tryGetColorComponent() != null || image.tryGetPage() != null))
                 {
                     // TODO 2010-06-01, Tomasz Pylak: support paging/merged channels images in API
                     imageFiles.add(null);
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/api/v1/ScreeningClientApiTest.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/api/v1/ScreeningClientApiTest.java
index 34217de6878..16f38316857 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/api/v1/ScreeningClientApiTest.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/api/v1/ScreeningClientApiTest.java
@@ -129,7 +129,7 @@ public class ScreeningClientApiTest
                     {
 
                         PlateImageReference imageRef =
-                                new PlateImageReference(wellRow, wellCol, tile, channel + "",
+                                new PlateImageReference(wellRow, wellCol, tile, "dapi",
                                         datasetIdentifier);
                         imageRefs.add(imageRef);
                         imageFiles.add(new File(dir, createImageFileName(imageRef)));
diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImagingUploadDAOTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImagingUploadDAOTest.java
index 12bf8626e3b..c78efa3c113 100644
--- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImagingUploadDAOTest.java
+++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImagingUploadDAOTest.java
@@ -139,8 +139,8 @@ public class ImagingUploadDAOTest extends AbstractDBTest
                 || channels[1] == channelId1 && channels[0] == channelId2);
 
         // test get id of first channel
-        assertEquals(channels[0], dao.getChannelIdByChannelNameDatasetIdOrExperimentId(datasetId,
-                experimentId, "dsChannel"));
+        assertEquals(channels[0], dao.tryGetChannelIdByChannelNameDatasetIdOrExperimentId(datasetId,
+                experimentId, "dsChannel").intValue());
 
         List<ImgChannelDTO> experimentChannels = dao.getChannelsByExperimentId(experimentId);
         assertEquals(1, experimentChannels.size());
-- 
GitLab