From 7ce92497445f10d7bb10345246470998746aafde Mon Sep 17 00:00:00 2001 From: buczekp <buczekp> Date: Mon, 9 Aug 2010 14:30:48 +0000 Subject: [PATCH] [LMS-1676] fixed loading of many parents SVN: 17373 --- .../bo/samplelister/SampleListingWorker.java | 12 ++--- .../samplelister/SampleListingWorkerTest.java | 47 ++++++++++++++----- 2 files changed, 40 insertions(+), 19 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 83dc9a079d0..5b1ae06f50a 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 @@ -142,8 +142,8 @@ final class SampleListingWorker private final LongSet idsOfSamplesAwaitingParentResolution = new LongOpenHashSet(); - private final Long2ObjectMap<RelatedSampleRecord> samplesAwaitingParentResolution = - new Long2ObjectOpenHashMap<RelatedSampleRecord>(); + private final List<RelatedSampleRecord> samplesAwaitingParentResolution = + new ArrayList<RelatedSampleRecord>(); private final Long2ObjectMap<RelatedSampleRecord> samplesAwaitingContainerResolution = new Long2ObjectOpenHashMap<RelatedSampleRecord>(); @@ -695,18 +695,16 @@ final class SampleListingWorker idsOfSamplesAwaitingParentResolution); for (SampleRelationRecord relation : parentRelations) { - samplesAwaitingParentResolution.put(relation.sample_id_child, new RelatedSampleRecord( - sampleMap.get(relation.sample_id_child), relation.sample_id_parent)); + samplesAwaitingParentResolution.add(new RelatedSampleRecord(sampleMap + .get(relation.sample_id_child), relation.sample_id_parent)); addRelatedParentSampleToRequested(relation.sample_id_parent); } } private void resolveParents() { - for (Long2ObjectMap.Entry<RelatedSampleRecord> e : samplesAwaitingParentResolution - .long2ObjectEntrySet()) + for (RelatedSampleRecord record : samplesAwaitingParentResolution) { - final RelatedSampleRecord record = e.getValue(); final Sample parent = sampleMap.get(record.relatedSampleId); record.sample.addParent(parent); } 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 3421d474e7d..2bc20b5d9ca 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 @@ -208,20 +208,43 @@ public class SampleListingWorkerTest extends AbstractDAOTest { if (s.getId().equals(CHILD_WITH_2_PARENTS_ID)) { - assertNotNull("ID:" + s.getId(), s.getGeneratedFrom()); - assertEquals("ID:" + s.getId(), PARENT2_ID, s.getGeneratedFrom().getId().longValue()); - // FIXME - // test s.getGeneratedFrom throws exception - // assertEquals(2, s.getParents().size()); - // for (Sample parent : s.getParents()) - // { - // assertTrue("ID:" + s.getId(), parent.getId().equals(PARENT1_ID) - // || parent.getId().equals(PARENT2_ID)); - // } + checkParents(s, Arrays.asList(PARENT1_ID, PARENT2_ID)); + checkGetGeneratedFromFail(s); } else { - assertNotNull("ID:" + s.getId(), s.getGeneratedFrom()); - assertEquals("ID:" + s.getId(), PARENT1_ID, s.getGeneratedFrom().getId().longValue()); + checkGeneratedFrom(s, PARENT1_ID); } } + + private void checkGetGeneratedFromFail(Sample s) + { + boolean fail = false; + try + { + s.getGeneratedFrom(); + } catch (IllegalStateException e) + { + // expected + } + if (fail) + { + fail("Expected IllegalStateException"); + } + } + + private void checkParents(Sample s, List<Long> expectedParentIds) + { + assertEquals(expectedParentIds.size(), s.getParents().size()); + for (Sample parent : s.getParents()) + { + expectedParentIds.contains(parent.getId()); + assertTrue("ID:" + s.getId(), expectedParentIds.contains(parent.getId())); + } + } + + private void checkGeneratedFrom(Sample s, Long expectedParentId) + { + assertNotNull("ID:" + s.getId(), s.getGeneratedFrom()); + assertEquals("ID:" + s.getId(), expectedParentId, s.getGeneratedFrom().getId()); + } } -- GitLab