From e425997234bec5df48094adba06b0f7a97d4e7f6 Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Wed, 6 Oct 2010 08:57:28 +0000 Subject: [PATCH] improve performance of gathering parent samples SVN: 18166 --- .../server/business/SampleProvider.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) 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 85ab7e45ebb..fb0e3ddca45 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) -- GitLab