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 a37c9cd64e0069f3395427d5c50122957427441b..a029461924c13593c5ef61e3d0ffa0b482ab4daf 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 48dd85ba877184d311b11864d3980095ce77e2e3..c6bfe9300c0584a6968a973811f9708ec697788b 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 94303cd88766e104da676b5343b5ea96e86e8a03..bdee04869f5ca234aa221e5ea5a7019f0f17a76b 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 0000000000000000000000000000000000000000..01ac2592afca9dca9dc5a1b2cd44401f80786449 --- /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 6a11c056586a9f894bac06094f630431195013a9..298aa16be4a53d28fe1fb4c5b74c5f01adaec112 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 a105f0a9b7e505dea7a14e81aab24e86d6574b40..26ddfa67f5ba058bbce92f60da5e2a06f2fce974 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 c3cd6e828c89a3c8089777fa87e79d3bcbed10cb..790be226001ad868a38110152e81e773ad9cfea3 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 24e4c50e33aade088ffcc4aa6b3f3308c49b6430..0bb593347dafbb6cc74cb7ecb87d19d42a9ba608 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 0000000000000000000000000000000000000000..4ec9f34b3609d199ad7d3506d27adc32a55229a8 --- /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 b90833524e522cce6811ceb121aafd2a52081de3..0513d8e6d5a3fbc773a3e2da856478388cae61e5 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 2f104a258cb3dd3287e8a55e9ea8dcc9c0ebd9ad..129d065abffe39bbb390792f71bd178a5966befd 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 21688571492525178df6847e87cba14d11728e34..45742fe10a355e140a72a280c6422c3127f05b53 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 34299c28c262ebc13b15c3ea35b3ece9116dda7a..9f477b42763b98ba4b311e4a8555c5cce7d61655 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()