diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/SampleProvider.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/SampleProvider.java index 85ab7e45ebb4d8c844d67fed6625cc1888c90a27..fb0e3ddca45ec913d8bb0fdfa3eb50f95c6a6e5d 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/SampleProvider.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/plugin/phosphonetx/server/business/SampleProvider.java @@ -17,8 +17,10 @@ package ch.systemsx.cisd.openbis.plugin.phosphonetx.server.business; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.openbis.generic.server.business.bo.samplelister.ISampleLister; @@ -59,15 +61,21 @@ class SampleProvider implements ISampleProvider ListOrSearchSampleCriteria criteria) { List<Sample> list = lister.list(criteria); + Set<Long> sampleIDs = new HashSet<Long>(); for (Sample sample : list) { samplesByPermIDs.put(sample.getPermId(), sample); - ListSampleCriteria criteria2 = - ListSampleCriteria.createForChild(new TechId(sample.getId())); - ListOrSearchSampleCriteria criteria3 = new ListOrSearchSampleCriteria(criteria2); - criteria3.setEnrichDependentSamplesWithProperties(true); - gatherSamplesAndAncestorsRecursively(lister, criteria3); + sampleIDs.add(sample.getId()); } + if (sampleIDs.isEmpty()) + { + return; + } + ListSampleCriteria criteria2 = + ListSampleCriteria.createForChildren(sampleIDs); + ListOrSearchSampleCriteria criteria3 = new ListOrSearchSampleCriteria(criteria2); + criteria3.setEnrichDependentSamplesWithProperties(true); + gatherSamplesAndAncestorsRecursively(lister, criteria3); } public Sample getSample(String permID)