From 95070f11267c620743db7aee6aa884fbc7d32860 Mon Sep 17 00:00:00 2001 From: izabel <izabel> Date: Wed, 16 Jun 2010 08:29:31 +0000 Subject: [PATCH] fix: contained sample should not be allowed as a container SVN: 16543 --- .../bo/AbstractSampleBusinessObject.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractSampleBusinessObject.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractSampleBusinessObject.java index 51e1f5e20fc..8568f69ef84 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractSampleBusinessObject.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractSampleBusinessObject.java @@ -178,7 +178,8 @@ abstract class AbstractSampleBusinessObject extends AbstractSampleIdentifierBusi protected void setContainer(final SampleIdentifier sampleIdentifier, final SamplePE samplePE, String containerIdentifier) { - final SamplePE containerPE = tryGetValidSample(containerIdentifier, sampleIdentifier); + final SamplePE containerPE = + tryGetValidNotContainedSample(containerIdentifier, sampleIdentifier); samplePE.setContainer(containerPE); } @@ -215,6 +216,19 @@ abstract class AbstractSampleBusinessObject extends AbstractSampleIdentifierBusi return parentPE; } + private SamplePE tryGetValidNotContainedSample(final String parentIdentifierOrNull, + final SampleIdentifier sampleIdentifier) + { + SamplePE sample = tryGetValidSample(parentIdentifierOrNull, sampleIdentifier); + if (sample.getContainer() != null) + { + throw UserFailureException.fromTemplate( + "Cannot register sample '%s': parent '%s' is part of another sample.", + sampleIdentifier, parentIdentifierOrNull); + } + return sample; + } + final SampleTypePE getSampleType(final String code) throws UserFailureException { final SampleTypePE sampleType = getSampleTypeDAO().tryFindSampleTypeByCode(code); -- GitLab