From f64bcb6fe31a43c4e4bfa8f443c0e28fb4c7f6a5 Mon Sep 17 00:00:00 2001 From: jakubs <jakubs> Date: Fri, 27 Jul 2012 13:28:50 +0000 Subject: [PATCH] BIS-102 SP-146 implement&test experiment updates from dss SVN: 26242 --- .../DefaultEntityOperationService.java | 5 +- .../v1/IDataSetRegistrationTransaction.java | 2 +- .../registrator/api/v1/IExperiment.java | 8 +--- .../api/v1/IExperimentUpdatable.java | 34 ++++++++++++++ .../api/v1/impl/AbstractTransactionState.java | 36 ++++++++++++-- .../api/v1/impl/ConversionUtils.java | 22 +++++++++ .../impl/DataSetRegistrationTransaction.java | 3 +- .../registrator/api/v1/impl/Experiment.java | 9 +--- .../api/v1/impl/ExperimentUpdatable.java | 47 +++++++++++++++++++ ...aSetRegistrationTransactionV2Delegate.java | 3 +- .../v2/IDataSetRegistrationTransactionV2.java | 3 +- .../drop-boxes/rich-test/data-set-handler.py | 7 +++ .../FeatureRichDataSetImportSystemTest.java | 14 ++++++ 13 files changed, 168 insertions(+), 25 deletions(-) create mode 100644 datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IExperimentUpdatable.java create mode 100644 datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ExperimentUpdatable.java diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DefaultEntityOperationService.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DefaultEntityOperationService.java index a37c9cd64e0..a029461924c 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DefaultEntityOperationService.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DefaultEntityOperationService.java @@ -32,6 +32,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSpace; import ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationResult; import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetBatchUpdatesDTO; +import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentUpdatesDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialUpdateDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.NewExternalData; import ch.systemsx.cisd.openbis.generic.shared.dto.SampleUpdatesDTO; @@ -79,6 +80,7 @@ public class DefaultEntityOperationService<T extends DataSetInformation> impleme List<NewSpace> spaceRegistrations = details.getSpaceRegistrations(); List<NewProject> projectRegistrations = details.getProjectRegistrations(); List<NewExperiment> experimentRegistrations = details.getExperimentRegistrations(); + List<ExperimentUpdatesDTO> experimentUpdates = details.getExperimentUpdates(); List<SampleUpdatesDTO> sampleUpdates = details.getSampleUpdates(); List<NewSample> sampleRegistrations = details.getSampleRegistrations(); Map<String, List<NewMaterial>> materialRegistrations = details.getMaterialRegistrations(); @@ -94,7 +96,8 @@ public class DefaultEntityOperationService<T extends DataSetInformation> impleme return new ch.systemsx.cisd.openbis.generic.shared.dto.AtomicEntityOperationDetails( details.getRegistrationId(), details.tryUserIdOrNull(), spaceRegistrations, - projectRegistrations, experimentRegistrations, sampleUpdates, sampleRegistrations, + projectRegistrations, experimentRegistrations, experimentUpdates, sampleUpdates, + sampleRegistrations, materialRegistrations, materialUpdates, dataSetRegistrations, dataSetUpdates); } diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IDataSetRegistrationTransaction.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IDataSetRegistrationTransaction.java index 48dd85ba877..c6bfe9300c0 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IDataSetRegistrationTransaction.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IDataSetRegistrationTransaction.java @@ -125,7 +125,7 @@ public interface IDataSetRegistrationTransaction /** * Get an experiment from the openBIS AS for the purpose of modifying it. */ - IExperiment getExperimentForUpdate(String experimentIdentifierString); + IExperimentUpdatable getExperimentForUpdate(String experimentIdentifierString); /** * Create a new experiment to register with the openBIS AS. The experiment will have a permId. diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IExperiment.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IExperiment.java index 94303cd8876..bdee04869f5 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IExperiment.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IExperiment.java @@ -16,7 +16,6 @@ package ch.systemsx.cisd.etlserver.registrator.api.v1; -import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IExperimentImmutable; /** @@ -24,13 +23,8 @@ import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IExperimentIm * * @author Chandrasekhar Ramakrishnan */ -public interface IExperiment extends IExperimentImmutable +public interface IExperiment extends IExperimentUpdatable { - /** - * Set the value for a property. - */ - void setPropertyValue(String propertyCode, String propertyValue); - /** * Set the experiment type for this experiment. */ diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IExperimentUpdatable.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IExperimentUpdatable.java new file mode 100644 index 00000000000..01ac2592afc --- /dev/null +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/IExperimentUpdatable.java @@ -0,0 +1,34 @@ +/* + * Copyright 2011 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.etlserver.registrator.api.v1; + +import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IExperimentImmutable; + + +/** + * Interface to specify an experiment to be modified. + * + * @author Jakub Straszewski + */ +public interface IExperimentUpdatable extends IExperimentImmutable +{ + /** + * Set the value for a property. + */ + void setPropertyValue(String propertyCode, String propertyValue); + +} diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/AbstractTransactionState.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/AbstractTransactionState.java index 6a11c056586..298aa16be4a 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/AbstractTransactionState.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/AbstractTransactionState.java @@ -40,6 +40,7 @@ import ch.systemsx.cisd.etlserver.registrator.ITransactionalCommand; import ch.systemsx.cisd.etlserver.registrator.api.v1.IDataSet; import ch.systemsx.cisd.etlserver.registrator.api.v1.IDataSetUpdatable; import ch.systemsx.cisd.etlserver.registrator.api.v1.IExperiment; +import ch.systemsx.cisd.etlserver.registrator.api.v1.IExperimentUpdatable; import ch.systemsx.cisd.etlserver.registrator.api.v1.IMaterial; import ch.systemsx.cisd.etlserver.registrator.api.v1.IProject; import ch.systemsx.cisd.etlserver.registrator.api.v1.ISample; @@ -66,6 +67,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentUpdatesDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialUpdateDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.SampleUpdatesDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; +import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifierFactory; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFactory; @@ -155,6 +157,9 @@ public abstract class AbstractTransactionState<T extends DataSetInformation> private final List<Experiment> experimentsToBeRegistered = new ArrayList<Experiment>(); + private final List<ExperimentUpdatable> experimentsToBeUpdated = + new ArrayList<ExperimentUpdatable>(); + private final List<Space> spacesToBeRegistered = new ArrayList<Space>(); private final List<Project> projectsToBeRegistered = new ArrayList<Project>(); @@ -542,9 +547,22 @@ public abstract class AbstractTransactionState<T extends DataSetInformation> return sample; } - public IExperiment getExperimentForUpdate(String experimentIdentifierString) + public IExperimentUpdatable getExperimentForUpdate(String experimentIdentifierString) { - throw new NotImplementedException(); + ExperimentIdentifier identifier = + ExperimentIdentifierFactory.parse(experimentIdentifierString); + + ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment experimentOrNull = + openBisService.tryToGetExperiment(identifier); + + ExperimentUpdatable result = null; + if (experimentOrNull != null) + { + result = new ExperimentUpdatable(experimentOrNull); + experimentsToBeUpdated.add(result); + } + + return result; } public IExperiment createNewExperiment(String experimentIdentifierString, @@ -842,15 +860,13 @@ public abstract class AbstractTransactionState<T extends DataSetInformation> List<NewSpace> spaceRegistrations = convertSpacesToBeRegistered(); List<NewProject> projectRegistrations = convertProjectsToBeRegistered(); List<NewExperiment> experimentRegistrations = convertExperimentsToBeRegistered(); + List<ExperimentUpdatesDTO> experimentUpdates = convertExperimentsToBeUpdated(); List<SampleUpdatesDTO> sampleUpdates = convertSamplesToBeUpdated(); List<NewSample> sampleRegistrations = convertSamplesToBeRegistered(); Map<String, List<NewMaterial>> materialRegistrations = convertMaterialsToBeRegistered(); List<MaterialUpdateDTO> materialUpdates = convertMaterialsToBeUpdated(); List<DataSetBatchUpdatesDTO> dataSetUpdates = convertDataSetsToBeUpdated(); - // experiment updates not yet supported - List<ExperimentUpdatesDTO> experimentUpdates = new ArrayList<ExperimentUpdatesDTO>(); - AtomicEntityOperationDetails<T> registrationDetails = new AtomicEntityOperationDetails<T>(registrationId, getUserId(), spaceRegistrations, projectRegistrations, experimentUpdates, @@ -890,6 +906,16 @@ public abstract class AbstractTransactionState<T extends DataSetInformation> return result; } + private List<ExperimentUpdatesDTO> convertExperimentsToBeUpdated() + { + List<ExperimentUpdatesDTO> result = new ArrayList<ExperimentUpdatesDTO>(); + for (ExperimentUpdatable experiment : experimentsToBeUpdated) + { + result.add(ConversionUtils.convertToExperimentUpdateDTO(experiment)); + } + return result; + } + private List<NewSample> convertSamplesToBeRegistered() { List<NewSample> result = new ArrayList<NewSample>(); diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ConversionUtils.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ConversionUtils.java index a105f0a9b7e..26ddfa67f5b 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ConversionUtils.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ConversionUtils.java @@ -38,6 +38,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSample; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewSpace; import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetBatchUpdatesDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetUpdatesDTO; +import ch.systemsx.cisd.openbis.generic.shared.dto.ExperimentUpdatesDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.MaterialUpdateDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.NewContainerDataSet; import ch.systemsx.cisd.openbis.generic.shared.dto.NewDataSet; @@ -48,6 +49,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.SampleUpdatesDTO; import ch.systemsx.cisd.openbis.generic.shared.dto.StorageFormat; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifierFactory; +import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifierFactory; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifierFactory; @@ -76,6 +78,26 @@ public class ConversionUtils return newExperiment; } + public static ExperimentUpdatesDTO convertToExperimentUpdateDTO( + ExperimentUpdatable apiExperiment) + { + ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment experiment = + apiExperiment.getExperiment(); + + ExperimentUpdatesDTO updates = new ExperimentUpdatesDTO(); + + updates.setVersion(experiment.getModificationDate()); + updates.setExperimentId(new TechId(experiment.getId())); + updates.setAttachments(Collections.<NewAttachment> emptySet()); + updates.setProjectIdentifier(new ProjectIdentifierFactory(experiment.getProject() + .getIdentifier()).createIdentifier()); + + updates.setProperties(experiment.getProperties()); + updates.setVersion(experiment.getModificationDate()); + + return updates; + } + public static NewSample convertToNewSample(Sample apiSample) { ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample sample = apiSample.getSample(); diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransaction.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransaction.java index c3cd6e828c8..790be226001 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransaction.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransaction.java @@ -47,6 +47,7 @@ import ch.systemsx.cisd.etlserver.registrator.api.v1.IDataSet; import ch.systemsx.cisd.etlserver.registrator.api.v1.IDataSetRegistrationTransaction; import ch.systemsx.cisd.etlserver.registrator.api.v1.IDataSetUpdatable; import ch.systemsx.cisd.etlserver.registrator.api.v1.IExperiment; +import ch.systemsx.cisd.etlserver.registrator.api.v1.IExperimentUpdatable; import ch.systemsx.cisd.etlserver.registrator.api.v1.IMaterial; import ch.systemsx.cisd.etlserver.registrator.api.v1.IProject; import ch.systemsx.cisd.etlserver.registrator.api.v1.ISample; @@ -312,7 +313,7 @@ public class DataSetRegistrationTransaction<T extends DataSetInformation> implem } @Override - public IExperiment getExperimentForUpdate(String experimentIdentifierString) + public IExperimentUpdatable getExperimentForUpdate(String experimentIdentifierString) { return getStateAsLiveState().getExperimentForUpdate(experimentIdentifierString); } diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/Experiment.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/Experiment.java index 24e4c50e33a..0bb593347da 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/Experiment.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/Experiment.java @@ -22,14 +22,13 @@ import java.util.List; import ch.systemsx.cisd.etlserver.registrator.api.v1.IExperiment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; -import ch.systemsx.cisd.openbis.generic.shared.util.EntityHelper; /** * Implementation of {@link IExperiment}. * * @author Franz-Josef Elmer */ -class Experiment extends ExperimentImmutable implements IExperiment +class Experiment extends ExperimentUpdatable implements IExperiment { public Experiment(String identifier, String permID) { @@ -48,12 +47,6 @@ class Experiment extends ExperimentImmutable implements IExperiment return false; } - @Override - public void setPropertyValue(String propertyCode, String propertyValue) - { - EntityHelper.createOrUpdateProperty(getExperiment(), propertyCode, propertyValue); - } - @Override public void setExperimentType(String experimentType) { diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ExperimentUpdatable.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ExperimentUpdatable.java new file mode 100644 index 00000000000..4ec9f34b360 --- /dev/null +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ExperimentUpdatable.java @@ -0,0 +1,47 @@ +/* + * Copyright 2011 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.etlserver.registrator.api.v1.impl; + +import ch.systemsx.cisd.etlserver.registrator.api.v1.IExperimentUpdatable; +import ch.systemsx.cisd.openbis.generic.shared.util.EntityHelper; + +/** + * Implementation of {@link IExperimentUpdatable}. + * + * @author Jakub Straszewski + */ +class ExperimentUpdatable extends ExperimentImmutable implements IExperimentUpdatable +{ + public ExperimentUpdatable( + ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment experiment) + { + super(experiment); + } + + @Override + public boolean isExistingExperiment() + { + return true; + } + + @Override + public void setPropertyValue(String propertyCode, String propertyValue) + { + EntityHelper.createOrUpdateProperty(getExperiment(), propertyCode, propertyValue); + } + +} diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/DataSetRegistrationTransactionV2Delegate.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/DataSetRegistrationTransactionV2Delegate.java index b90833524e5..0513d8e6d5a 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/DataSetRegistrationTransactionV2Delegate.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/DataSetRegistrationTransactionV2Delegate.java @@ -26,6 +26,7 @@ import ch.systemsx.cisd.etlserver.registrator.api.v1.IDataSet; import ch.systemsx.cisd.etlserver.registrator.api.v1.IDataSetRegistrationTransaction; import ch.systemsx.cisd.etlserver.registrator.api.v1.IDataSetUpdatable; import ch.systemsx.cisd.etlserver.registrator.api.v1.IExperiment; +import ch.systemsx.cisd.etlserver.registrator.api.v1.IExperimentUpdatable; import ch.systemsx.cisd.etlserver.registrator.api.v1.IMaterial; import ch.systemsx.cisd.etlserver.registrator.api.v1.IProject; import ch.systemsx.cisd.etlserver.registrator.api.v1.ISample; @@ -119,7 +120,7 @@ public class DataSetRegistrationTransactionV2Delegate implements IDataSetRegistr } @Override - public IExperiment getExperimentForUpdate(String experimentIdentifierString) + public IExperimentUpdatable getExperimentForUpdate(String experimentIdentifierString) { return transaction.getExperimentForUpdate(experimentIdentifierString); } diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/IDataSetRegistrationTransactionV2.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/IDataSetRegistrationTransactionV2.java index 2f104a258cb..129d065abff 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/IDataSetRegistrationTransactionV2.java +++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/IDataSetRegistrationTransactionV2.java @@ -25,6 +25,7 @@ import ch.systemsx.cisd.etlserver.registrator.DataSetRegistrationContext; import ch.systemsx.cisd.etlserver.registrator.api.v1.IDataSet; import ch.systemsx.cisd.etlserver.registrator.api.v1.IDataSetUpdatable; import ch.systemsx.cisd.etlserver.registrator.api.v1.IExperiment; +import ch.systemsx.cisd.etlserver.registrator.api.v1.IExperimentUpdatable; import ch.systemsx.cisd.etlserver.registrator.api.v1.IMaterial; import ch.systemsx.cisd.etlserver.registrator.api.v1.IProject; import ch.systemsx.cisd.etlserver.registrator.api.v1.ISample; @@ -121,7 +122,7 @@ public interface IDataSetRegistrationTransactionV2 /** * Get an experiment from the openBIS AS for the purpose of modifying it. */ - IExperiment getExperimentForUpdate(String experimentIdentifierString); + IExperimentUpdatable getExperimentForUpdate(String experimentIdentifierString); /** * Create a new experiment to register with the openBIS AS. The experiment will have a permId. diff --git a/datastore_server/sourceTest/core-plugins/generic-test/1/dss/drop-boxes/rich-test/data-set-handler.py b/datastore_server/sourceTest/core-plugins/generic-test/1/dss/drop-boxes/rich-test/data-set-handler.py index 21688571492..45742fe10a3 100644 --- a/datastore_server/sourceTest/core-plugins/generic-test/1/dss/drop-boxes/rich-test/data-set-handler.py +++ b/datastore_server/sourceTest/core-plugins/generic-test/1/dss/drop-boxes/rich-test/data-set-handler.py @@ -51,6 +51,10 @@ def updateMaterial(transaction): ma = transaction.getMaterialForUpdate("AD3", "VIRUS"); ma.setPropertyValue("DESCRIPTION", "modified description"); +def updateExperiment(transaction): + ex = transaction.getExperimentForUpdate("/CISD/NEMO/EXP1") + ex.setPropertyValue("DESCRIPTION", "modified experiment description") + def process(transaction): # create experiment experiment = create_experiment_if_needed(transaction) @@ -67,6 +71,9 @@ def process(transaction): # update material updateMaterial(transaction) + # update existing experiment + updateExperiment(transaction) + # register samples createSamples(transaction) diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/FeatureRichDataSetImportSystemTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/FeatureRichDataSetImportSystemTest.java index 34299c28c26..9f477b42763 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/FeatureRichDataSetImportSystemTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/datastoreserver/systemtests/FeatureRichDataSetImportSystemTest.java @@ -33,6 +33,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListMaterialCriteria; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Material; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialIdentifier; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Project; +import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifier; /** @@ -70,6 +71,19 @@ public class FeatureRichDataSetImportSystemTest extends SystemTestCase assertEmailHasBeenSentFromHook(); assertMaterialUpdated(openBISService); + + assertExperimentUpdated(openBISService); + } + + private void assertExperimentUpdated(IEncapsulatedOpenBISService openBISService) + { + Experiment experiment = + openBISService.tryToGetExperiment(new ExperimentIdentifier(null, "CISD", "NEMO", + "EXP1")); + + IEntityProperty property = experiment.getProperties().get(0); + assertEquals("DESCRIPTION", property.getPropertyType().getCode()); + assertEquals("modified experiment description", property.getValue()); } private void assertEmailHasBeenSentFromHook() -- GitLab