From 2248742c126547e5bfb29604eccb8ab1df1770c4 Mon Sep 17 00:00:00 2001 From: tpylak <tpylak> Date: Fri, 28 Oct 2011 11:26:15 +0000 Subject: [PATCH] LMS-2608 add sql queries to ask about wells with images SVN: 23452 --- .../dataaccess/IImagingReadonlyQueryDAO.java | 21 +++++++++++++++++ .../shared/imaging/dataaccess/ImgSpotDTO.java | 3 +-- .../etl/dataaccess/ImagingQueryDAOTest.java | 23 +++++++++++++++++++ 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/IImagingReadonlyQueryDAO.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/IImagingReadonlyQueryDAO.java index 20d96ba1ddf..437e496887a 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/IImagingReadonlyQueryDAO.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/IImagingReadonlyQueryDAO.java @@ -87,6 +87,12 @@ public interface IImagingReadonlyQueryDAO extends BaseQuery // " and CHANNEL_STACKS.T_in_SEC IS NULL " // + " and CHANNEL_STACKS.Z_in_M IS NULL "; + public static final String SQL_HCS_WELLS_WITH_IMAGES = + "select distinct s.* " + + "from CHANNEL_STACKS ch, SPOTS s, ACQUIRED_IMAGES ai " + + "where ch.is_representative = 'T' and ch.DS_ID = ?{1} and " + + " ai.CHANNEL_STACK_ID = ch.ID and ch.SPOT_ID = s.ID"; + // ---------------- HCS --------------------------------- /** @@ -138,6 +144,21 @@ public interface IImagingReadonlyQueryDAO extends BaseQuery + " where d.perm_id = ?{1} and ch.code = upper(?{2}) and s.id is NOT NULL") public List<ImgImageEnrichedDTO> listHCSImages(String datasetPermId, String channelCode); + /** + * @return list of wells for which there are any thumbnail or original images (any tile, any + * channel). + */ + @Select(SQL_HCS_WELLS_WITH_IMAGES) + public List<ImgSpotDTO> listWellsWithAnyImages(long datasetId); + + /** @return list of wells for which there are any thumbnail images (any tile, any channel). */ + @Select(SQL_HCS_WELLS_WITH_IMAGES + " and ai.thumbnail_id is not null") + public List<ImgSpotDTO> listWellsWithAnyThumbnails(long datasetId); + + /** @return list of wells for which there are any original images (any tile, any channel). */ + @Select(SQL_HCS_WELLS_WITH_IMAGES + " and ai.img_id is not null") + public List<ImgSpotDTO> listWellsWithAnyOriginalImages(long datasetId); + // ---------------- Microscopy --------------------------------- /** diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgSpotDTO.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgSpotDTO.java index 689d17b6857..0bf32b80421 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgSpotDTO.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/ImgSpotDTO.java @@ -40,9 +40,8 @@ public class ImgSpotDTO extends AbstractImgIdentifiable // All Data-Object classes must have a default constructor. } - public ImgSpotDTO(/* String permId, */Integer row, Integer column, long containerId) + public ImgSpotDTO(Integer row, Integer column, long containerId) { - /* this.permId = permId; */ this.column = column; this.row = row; this.containerId = containerId; diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImagingQueryDAOTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImagingQueryDAOTest.java index cc200d14aee..6ed8e649a48 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImagingQueryDAOTest.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/etl/dataaccess/ImagingQueryDAOTest.java @@ -247,9 +247,32 @@ public class ImagingQueryDAOTest extends AbstractDBTest addAcquiredImage(imageId2, channelStackId, experimentChannelId2); testGetHCSImage(datasetId, channelStackId, datasetChannelId1, experimentChannelId2, spotId); + testGetAnyHCSImage(datasetId); testListChannelStacksAndSpots(datasetId, channelStackId, spotId); } + private void testGetAnyHCSImage(long datasetId) + { + List<ImgSpotDTO> anyImgSpots = dao.listWellsWithAnyImages(datasetId); + assertEquals(1, anyImgSpots.size()); + ImgSpotDTO spot = anyImgSpots.get(0); + assertDefaultSpot(spot); + + List<ImgSpotDTO> thumbnailImgSpots = dao.listWellsWithAnyThumbnails(datasetId); + assertEquals(1, thumbnailImgSpots.size()); + assertEquals(spot, thumbnailImgSpots.get(0)); + + List<ImgSpotDTO> originalImgSpots = dao.listWellsWithAnyOriginalImages(datasetId); + assertEquals(1, originalImgSpots.size()); + assertEquals(spot, originalImgSpots.get(0)); + } + + private void assertDefaultSpot(ImgSpotDTO spot) + { + assertEquals(X_WELL_COLUMN, 0L + spot.getColumn()); + assertEquals(Y_WELL_ROW, 0L + spot.getRow()); + } + private void testListChannelStacksAndSpots(long datasetId, long channelStackId, long spotId) { ImgChannelStackDTO stackDTO = testListChannelStacks(datasetId, channelStackId); -- GitLab