From 53623528532b952945feadce7323f29256204838 Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Wed, 26 Jan 2011 08:18:44 +0000 Subject: [PATCH] LMS-1949 implemented also for experiments and materials SVN: 19591 --- .../shared/basic/dto/NewBasicExperiment.java | 2 +- .../shared/basic/dto/NewExperiment.java | 2 +- .../generic/shared/basic/dto/NewMaterial.java | 2 +- .../plugin/generic/server/GenericServer.java | 2 ++ .../server/IPropertiesBatchManager.java | 9 +++++++ .../server/PropertiesBatchManager.java | 26 ++++++++++++++++--- .../generic/server/GenericServerTest.java | 18 ++++++++++--- 7 files changed, 52 insertions(+), 9 deletions(-) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewBasicExperiment.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewBasicExperiment.java index 6f82a602363..a9d42a2f0b6 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewBasicExperiment.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewBasicExperiment.java @@ -21,7 +21,7 @@ package ch.systemsx.cisd.openbis.generic.shared.basic.dto; * * @author Izabela Adamczyk */ -public class NewBasicExperiment extends Identifier<NewBasicExperiment> +public class NewBasicExperiment extends Identifier<NewBasicExperiment> implements IPropertiesBean { private static final long serialVersionUID = ServiceVersionHolder.VERSION; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewExperiment.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewExperiment.java index 457281c20b6..0050f95a97c 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewExperiment.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewExperiment.java @@ -23,7 +23,7 @@ import java.util.List; * * @author Izabela Adamczyk */ -public final class NewExperiment extends Identifier<NewExperiment> +public final class NewExperiment extends Identifier<NewExperiment> implements IPropertiesBean { private static final long serialVersionUID = ServiceVersionHolder.VERSION; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewMaterial.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewMaterial.java index 745b30830d8..caebaa50192 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewMaterial.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/NewMaterial.java @@ -21,7 +21,7 @@ package ch.systemsx.cisd.openbis.generic.shared.basic.dto; * * @author Izabela Adamczyk */ -public final class NewMaterial extends Code<NewMaterial> +public final class NewMaterial extends Code<NewMaterial> implements IPropertiesBean { private static final long serialVersionUID = ServiceVersionHolder.VERSION; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java index def1780070a..58337ef9c66 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServer.java @@ -554,6 +554,7 @@ public final class GenericServer extends AbstractServer<IGenericServer> implemen } ServerUtils.prevalidate(newMaterials, "material"); final MaterialTypePE materialTypePE = findMaterialType(materialTypeCode); + getPropertiesBatchManager().manageProperties(materialTypePE, newMaterials); final Session session = getSession(sessionToken); IBatchOperation<NewMaterial> strategy = new IBatchOperation<NewMaterial>() { @@ -830,6 +831,7 @@ public final class GenericServer extends AbstractServer<IGenericServer> implemen assert sessionToken != null : "Unspecified session token."; assert experiments.getExperimentTypeCode() != null : "Experiments type not specified"; assert experiments.getNewExperiments() != null : "Experiments collection not specified"; + getPropertiesBatchManager().manageProperties(experiments); final Session session = getSession(sessionToken); final List<NewBasicExperiment> newExperiments = experiments.getNewExperiments(); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/IPropertiesBatchManager.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/IPropertiesBatchManager.java index 0bb13c1c0f0..465030353ed 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/IPropertiesBatchManager.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/IPropertiesBatchManager.java @@ -16,7 +16,12 @@ package ch.systemsx.cisd.openbis.plugin.generic.server; +import java.util.List; + +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExperimentsWithType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewMaterial; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSamplesWithTypes; +import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialTypePE; /** * Interface of classes which manage managed properties in batch updates. @@ -26,4 +31,8 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSamplesWithTypes; public interface IPropertiesBatchManager { public void manageProperties(NewSamplesWithTypes newSamplesWithTypes); + + public void manageProperties(NewExperimentsWithType experiments); + + public void manageProperties(MaterialTypePE materialTypePE, List<NewMaterial> newMaterials); } \ No newline at end of file diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/PropertiesBatchManager.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/PropertiesBatchManager.java index 8d9750f10f6..1998588bdd7 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/PropertiesBatchManager.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/server/PropertiesBatchManager.java @@ -32,13 +32,17 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IPropertiesBean; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExperimentsWithType; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewMaterial; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSamplesWithTypes; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.api.ValidationException; import ch.systemsx.cisd.openbis.generic.shared.dto.EntityTypePropertyTypePE; +import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentTypePE; +import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialTypePE; import ch.systemsx.cisd.openbis.generic.shared.dto.SampleTypePE; import ch.systemsx.cisd.openbis.generic.shared.dto.ScriptPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.properties.EntityKind; import ch.systemsx.cisd.openbis.generic.shared.managed_property.ManagedPropertyEvaluator; /** @@ -57,16 +61,32 @@ public class PropertiesBatchManager implements IPropertiesBatchManager public void manageProperties(NewSamplesWithTypes newSamplesWithTypes) { - List<NewSample> newSamples = newSamplesWithTypes.getNewSamples(); ISampleTypeDAO sampleTypeDAO = daoFactory.getSampleTypeDAO(); String code = newSamplesWithTypes.getSampleType().getCode(); SampleTypePE sampleType = sampleTypeDAO.tryFindSampleTypeByCode(code); Set<? extends EntityTypePropertyTypePE> sampleTypePropertyTypes = sampleType.getSampleTypePropertyTypes(); - managePropertiesBeans(newSamples, sampleTypePropertyTypes); + managePropertiesBeans(newSamplesWithTypes.getNewSamples(), sampleTypePropertyTypes); } + public void manageProperties(NewExperimentsWithType experiments) + { + String code = experiments.getExperimentTypeCode(); + ExperimentTypePE entityType = (ExperimentTypePE) daoFactory.getEntityTypeDAO(EntityKind.EXPERIMENT).tryToFindEntityTypeByCode(code); + Set<? extends EntityTypePropertyTypePE> entityTypePropertyTypes = + entityType.getExperimentTypePropertyTypes(); + + managePropertiesBeans(experiments.getNewExperiments(), entityTypePropertyTypes); + } + + public void manageProperties(MaterialTypePE materialTypePE, List<NewMaterial> newMaterials) + { + Set<? extends EntityTypePropertyTypePE> entityTypePropertyTypes = + materialTypePE.getMaterialTypePropertyTypes(); + managePropertiesBeans(newMaterials, entityTypePropertyTypes); + } + private void managePropertiesBeans(List<? extends IPropertiesBean> propertiesBeans, Set<? extends EntityTypePropertyTypePE> entityTypePropertyTypes) { diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerTest.java index 522eabd5cc2..c6592548895 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/plugin/generic/server/GenericServerTest.java @@ -469,6 +469,8 @@ public final class GenericServerTest extends AbstractServerTestCase { one(daoFactory).getEntityTypeDAO(EntityKind.MATERIAL); will(returnValue(entityTypeDAO)); + + one(propertiesBatchManager).manageProperties(materialTypePE, newMaterials); one(entityTypeDAO).tryToFindEntityTypeByCode(typeCode); will(returnValue(materialTypePE)); @@ -846,8 +848,15 @@ public final class GenericServerTest extends AbstractServerTestCase public void testRegisterExperimentEmptyCollection() throws Exception { prepareGetSession(); - createServer().registerExperiments(SESSION_TOKEN, - new NewExperimentsWithType(EXPERIMENT_TYPE, createNewExperiments())); + final NewExperimentsWithType experiments = + new NewExperimentsWithType(EXPERIMENT_TYPE, createNewExperiments()); + context.checking(new Expectations() + { + { + one(propertiesBatchManager).manageProperties(experiments); + } + }); + createServer().registerExperiments(SESSION_TOKEN, experiments); } @Test @@ -858,9 +867,12 @@ public final class GenericServerTest extends AbstractServerTestCase final List<NewBasicExperiment> entities = createNewExperiments(new NewBasicExperiment(EXPERIMENT_IDENTIFIER1), new NewBasicExperiment(EXPERIMENT_IDENTIFIER2)); + final NewExperimentsWithType experiments = + new NewExperimentsWithType(EXPERIMENT_TYPE, entities); context.checking(new Expectations() { { + one(propertiesBatchManager).manageProperties(experiments); one(daoFactory).getEntityTypeDAO(EntityKind.EXPERIMENT); will(returnValue(entityTypeDAO)); one(entityTypeDAO).tryToFindEntityTypeByCode(EXPERIMENT_TYPE); @@ -872,7 +884,7 @@ public final class GenericServerTest extends AbstractServerTestCase } }); createServer().registerExperiments(SESSION_TOKEN, - new NewExperimentsWithType(EXPERIMENT_TYPE, entities)); + experiments); context.assertIsSatisfied(); } } -- GitLab