From 2f65154a573853cd62582eddd415e3280a6f573c Mon Sep 17 00:00:00 2001
From: buczekp <buczekp>
Date: Tue, 13 Oct 2009 18:36:58 +0000
Subject: [PATCH] [LMS-1229] fixed sample search with multiple db instances

SVN: 12943
---
 .../business/bo/samplelister/ISampleListingQuery.java      | 7 ++++---
 .../business/bo/samplelister/SampleListingWorker.java      | 5 +++--
 .../bo/samplelister/SampleSetListingQueryTest.java         | 2 +-
 3 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/samplelister/ISampleListingQuery.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/samplelister/ISampleListingQuery.java
index 76aa3c01b90..026e926d78a 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/samplelister/ISampleListingQuery.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/samplelister/ISampleListingQuery.java
@@ -25,6 +25,7 @@ import net.lemnik.eodsql.DataIterator;
 import net.lemnik.eodsql.EoDException;
 import net.lemnik.eodsql.Select;
 import net.lemnik.eodsql.TransactionQuery;
+import net.lemnik.eodsql.TypeMapper;
 import net.lemnik.eodsql.spi.util.NonUpdateCapableDataObjectBinding;
 
 import org.apache.commons.lang.StringEscapeUtils;
@@ -225,9 +226,9 @@ public interface ISampleListingQuery extends TransactionQuery, IPropertyListingQ
     @Select(sql = "select s.id, s.perm_id, s.code, s.expe_id, s.grou_id, "
             + "       s.registration_timestamp, s.pers_id_registerer, "
             + "       s.samp_id_generated_from, s.samp_id_part_of, s.saty_id, s.inva_id "
-            + "   from samples s where s.id = any(?{1})", parameterBindings =
-        { LongSetMapper.class }, fetchSize = FETCH_SIZE)
-    public DataIterator<SampleRecord> getSamples(LongSet sampleIds);
+            + "   from samples s where dbin_id=?{1} and s.id = any(?{2})", parameterBindings =
+        { TypeMapper.class, LongSetMapper.class }, fetchSize = FETCH_SIZE)
+    public DataIterator<SampleRecord> getSamples(long dbInstanceId, LongSet sampleIds);
 
     //
     // Sample Properties
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/samplelister/SampleListingWorker.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/samplelister/SampleListingWorker.java
index df836798727..da4fb61621a 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/samplelister/SampleListingWorker.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/samplelister/SampleListingWorker.java
@@ -315,7 +315,7 @@ final class SampleListingWorker
         {
             return null;
         }
-        return query.getSamples(new LongOpenHashSet(ids));
+        return query.getSamples(databaseInstanceId, new LongOpenHashSet(ids));
     }
 
     private Iterable<SampleRecord> tryGetIteratorForGroupSamples()
@@ -542,7 +542,8 @@ final class SampleListingWorker
             return;
         }
         requestedSamples.keySet().removeAll(sampleMap.keySet());
-        retrieveDependentBasicSamples(query.getSamples(requestedSamples.keySet()));
+        retrieveDependentBasicSamples(query.getSamples(databaseInstanceId, requestedSamples
+                .keySet()));
         retrieveDependentSamplesRecursively();
     }
 
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/samplelister/SampleSetListingQueryTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/samplelister/SampleSetListingQueryTest.java
index 23e1358f83c..8f72b9df4af 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/samplelister/SampleSetListingQueryTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/samplelister/SampleSetListingQueryTest.java
@@ -113,7 +113,7 @@ public class SampleSetListingQueryTest extends AbstractDAOTest
     public void testQuerySamples()
     {
         LongSet ids = createSet(CELL_PLATE_ID_CP_TEST_1, CELL_PLATE_ID_CP_TEST_2);
-        List<SampleRecord> samples = asList(query.getSamples(ids));
+        List<SampleRecord> samples = asList(query.getSamples(dbInstanceId, ids));
         assertEquals(ids.size(), samples.size());
         for (SampleRecord sampleRowVO : samples)
         {
-- 
GitLab