From 7e60088b2b108e5da1e7a303c40b6d9a82a41f1e Mon Sep 17 00:00:00 2001
From: izabel <izabel>
Date: Tue, 13 Jul 2010 07:56:35 +0000
Subject: [PATCH] [LMS-1609] update spot width/height when image dataset
 registered after analysis dataset

SVN: 16996
---
 .../etl/ScreeningContainerDatasetInfoHelper.java    | 13 +++++++++----
 .../shared/imaging/dataaccess/IImagingQueryDAO.java |  4 ++++
 2 files changed, 13 insertions(+), 4 deletions(-)

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
index 1950bf52606..c232e76ccc6 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/ScreeningContainerDatasetInfoHelper.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/ScreeningContainerDatasetInfoHelper.java
@@ -77,7 +77,7 @@ public class ScreeningContainerDatasetInfoHelper
         synchronized (IImagingQueryDAO.class)
         {
             CreatedOrFetchedEntity exp = getOrCreateExperiment(dao, info);
-            CreatedOrFetchedEntity cont = getOrCreateContainer(dao, info, exp.getId());
+            CreatedOrFetchedEntity cont = getOrCreateContainer(dao, info, exp.getId(), true);
             if (exp.hasAlreadyExisted() == false || cont.hasAlreadyExisted() == false)
             {
                 // without this commit other threads will not see the new experiment/sample when the
@@ -104,7 +104,7 @@ public class ScreeningContainerDatasetInfoHelper
         {
             CreatedOrFetchedEntity exp = getOrCreateExperiment(dao, info);
             long expId = exp.getId();
-            CreatedOrFetchedEntity cont = getOrCreateContainer(dao, info, expId);
+            CreatedOrFetchedEntity cont = getOrCreateContainer(dao, info, expId, true);
             Map<String, Long/* (tech id */> channelsMap =
                     helper.getOrCreateChannels(expId, channels);
             if (exp.hasAlreadyExisted() == false || cont.hasAlreadyExisted() == false)
@@ -118,13 +118,18 @@ public class ScreeningContainerDatasetInfoHelper
     }
 
     private static CreatedOrFetchedEntity getOrCreateContainer(IImagingQueryDAO dao,
-            ScreeningContainerDatasetInfo info, long expId)
+            ScreeningContainerDatasetInfo info, long expId, boolean updateContainer)
     {
         String containerPermId = info.getContainerPermId();
         Long containerId = dao.tryGetContainerIdPermId(containerPermId);
         if (containerId != null)
         {
-            return new CreatedOrFetchedEntity(true, containerId);
+            if (updateContainer)
+            {
+                dao.updateContainer(containerId, info.getContainerColumns(), info
+                        .getContainerRows());
+            }
+            return new CreatedOrFetchedEntity(updateContainer == false, containerId);
         } else
         {
             ImgContainerDTO container =
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/IImagingQueryDAO.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/IImagingQueryDAO.java
index 9dbd1655962..b2224136d09 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/IImagingQueryDAO.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/imaging/dataaccess/IImagingQueryDAO.java
@@ -124,6 +124,10 @@ public interface IImagingQueryDAO extends TransactionQuery
             + "(?{1.name}, ?{1.description}, ?{1.wavelength}, ?{1.datasetId}, ?{1.experimentId}) returning ID")
     public long addChannel(ImgChannelDTO channel);
 
+    @Update("update CONTAINERS " + "set SPOTS_WIDTH = ?{2}, SPOTS_HEIGHT = ?{3} "
+            + "where ID = ?{1}")
+    public void updateContainer(long id, int columns, int rows);
+
     @Select("insert into CONTAINERS (PERM_ID, SPOTS_WIDTH, SPOTS_HEIGHT, EXPE_ID) values "
             + "(?{1.permId}, ?{1.numberOfColumns}, ?{1.numberOfRows}, ?{1.experimentId}) returning ID")
     public long addContainer(ImgContainerDTO container);
-- 
GitLab