Skip to content
Snippets Groups Projects
Commit 39053c44 authored by felmer's avatar felmer
Browse files

SSDM-1621: refactoring and bug in checkExperimentBusinessRules() fixed

SVN: 33709
parent 2079bff6
No related branches found
No related tags found
No related merge requests found
...@@ -61,6 +61,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFa ...@@ -61,6 +61,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFa
import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleOwnerIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleOwnerIdentifier;
import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind; import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind;
import ch.systemsx.cisd.openbis.generic.shared.managed_property.IManagedPropertyEvaluatorFactory; import ch.systemsx.cisd.openbis.generic.shared.managed_property.IManagedPropertyEvaluatorFactory;
import ch.systemsx.cisd.openbis.generic.shared.util.EntityHelper;
import ch.systemsx.cisd.openbis.generic.shared.util.RelationshipUtils; import ch.systemsx.cisd.openbis.generic.shared.util.RelationshipUtils;
/** /**
...@@ -461,7 +462,9 @@ abstract class AbstractSampleBusinessObject extends AbstractSampleIdentifierBusi ...@@ -461,7 +462,9 @@ abstract class AbstractSampleBusinessObject extends AbstractSampleIdentifierBusi
ExperimentPE experiment = sample.getExperiment(); ExperimentPE experiment = sample.getExperiment();
if (experiment == null) if (experiment == null)
{ {
checkSampleWithoutDatasets(sample); String sampleIdentifier = sample.getIdentifier();
ArrayList<DataPE> dataSets = new ArrayList<DataPE>(sample.getDatasets());
checkDataSetsDoNotNeedAnExperiment(sampleIdentifier, dataSets);
} }
if (hasDatasets(sample) && sample.getSpace() == null) if (hasDatasets(sample) && sample.getSpace() == null)
{ {
...@@ -535,33 +538,13 @@ abstract class AbstractSampleBusinessObject extends AbstractSampleIdentifierBusi ...@@ -535,33 +538,13 @@ abstract class AbstractSampleBusinessObject extends AbstractSampleIdentifierBusi
{ {
return; return;
} }
ExperimentPE newExperiment = expIdentifierOrNull == null ? null :
changeExperiment(sample, expIdentifierOrNull, experimentCacheOrNull); tryFindExperiment(experimentCacheOrNull, expIdentifierOrNull.toString(), null);
} if (EntityHelper.equalEntities(newExperiment, sample.getExperiment()))
private void removeFromExperiment(SamplePE sample)
{
if (hasDatasets(sample))
{
throw UserFailureException.fromTemplate(
"Cannot detach the sample '%s' from the experiment "
+ "because there are already datasets attached to the sample.",
sample.getIdentifier());
}
relationshipService.unassignSampleFromExperiment(session, sample);
}
private void changeExperiment(SamplePE sample, ExperimentIdentifier identifierOrNull,
Map<String, ExperimentPE> experimentCacheOrNull)
{
ExperimentPE newExperiment = identifierOrNull == null ? null :
tryFindExperiment(experimentCacheOrNull, identifierOrNull.toString(), null);
if (isExperimentUnchanged(newExperiment, sample.getExperiment()))
{ {
return; return;
} }
ensureExperimentIsValid(identifierOrNull, newExperiment, sample); ensureExperimentIsValid(expIdentifierOrNull, newExperiment, sample);
ensureSampleAttachableToExperiment(sample, newExperiment); ensureSampleAttachableToExperiment(sample, newExperiment);
assignSampleAndRelatedDataSetsToExperiment(sample, newExperiment); assignSampleAndRelatedDataSetsToExperiment(sample, newExperiment);
...@@ -589,13 +572,6 @@ abstract class AbstractSampleBusinessObject extends AbstractSampleIdentifierBusi ...@@ -589,13 +572,6 @@ abstract class AbstractSampleBusinessObject extends AbstractSampleIdentifierBusi
} }
} }
private boolean isExperimentUnchanged(ExperimentPE newExperimentOrNull,
ExperimentPE experimentOrNull)
{
return experimentOrNull == null ? newExperimentOrNull == null : experimentOrNull
.equals(newExperimentOrNull);
}
/** /**
* Throws {@link UserFailureException} if adding specified parents to this data set will create a cycle in data set relationships. * Throws {@link UserFailureException} if adding specified parents to this data set will create a cycle in data set relationships.
*/ */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment