From 14c25f92d9a6e2ea0870e788eb48716b84f823fc Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Wed, 6 Oct 2010 09:10:59 +0000
Subject: [PATCH] SampleListingWorker fixed, SampleListingWorkerTest fixed and
 extended

SVN: 18167
---
 .../bo/samplelister/SampleListingWorker.java  |  4 +++
 .../basic/dto/ListOrSearchSampleCriteria.java |  7 ++---
 .../samplelister/SampleListingWorkerTest.java | 28 +++++++++++++++++++
 3 files changed, 34 insertions(+), 5 deletions(-)

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 64ddd692da6..8cbddd6bdb7 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
@@ -472,6 +472,10 @@ final class SampleListingWorker extends AbstractLister
     private Iterable<SampleRecord> tryGetIteratorForParentSamples()
     {
         Collection<Long> ids = criteria.getChildrenSampleIds();
+        if (ids.isEmpty())
+        {
+            return null;
+        }
         return query.getParentSamplesForChildren(parentRelationhipTypeId, new LongOpenHashSet(ids));
     }
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ListOrSearchSampleCriteria.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ListOrSearchSampleCriteria.java
index 32e25a3d3aa..272dce2175a 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ListOrSearchSampleCriteria.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/ListOrSearchSampleCriteria.java
@@ -171,7 +171,7 @@ public final class ListOrSearchSampleCriteria extends ListSampleCriteria
     {
         if (listCriteria == null)
     {
-            return null;
+            return Collections.<Long>emptySet();
     }
         Collection<Long> childrenSampleIds = listCriteria.getChildrenSampleIds();
         if (childrenSampleIds != null)
@@ -183,10 +183,7 @@ public final class ListOrSearchSampleCriteria extends ListSampleCriteria
         {
             return Collections.<Long>emptySet();
         }
-        else
-        {
-            return Collections.<Long>singleton(childSampleId.getId());
-        }
+        return Collections.<Long>singleton(childSampleId.getId());
     }
     
     @Override
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/samplelister/SampleListingWorkerTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/samplelister/SampleListingWorkerTest.java
index 2bc20b5d9ca..733be13a729 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/samplelister/SampleListingWorkerTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/business/bo/samplelister/SampleListingWorkerTest.java
@@ -177,6 +177,34 @@ public class SampleListingWorkerTest extends AbstractDAOTest
             checkSpace(s);
         }
     }
+    
+    @Test
+    public void testListSamplesForChildren()
+    {
+        final ListSampleCriteria baseCriteria =
+            ListSampleCriteria.createForChildren(Arrays.asList(CHILDREN_IDS));
+        final ListOrSearchSampleCriteria criteria = new ListOrSearchSampleCriteria(baseCriteria);
+        final SampleListingWorker worker =
+            SampleListingWorker.create(criteria, BASE_INDEX_URL, sampleListerDAO, secondaryDAO);
+        final List<Sample> list = worker.load();
+        assertEquals(2, list.size());
+        for (Sample s : list)
+        {
+            long sId = s.getId().longValue();
+            long pId = s.getGeneratedFrom().getId().longValue();
+            if (sId == PARENT1_ID)
+            {
+                assertTrue(pId == GRANDPARENT1_ID);
+            } else if (sId == PARENT2_ID)
+            {
+                assertTrue(pId == GRANDPARENT2_ID);
+            } else
+            {
+                fail("unexpected parent id " + pId);
+            }
+            checkSpace(s);
+        }
+    }
 
     @Test
     public void testListSamplesForExperiment()
-- 
GitLab