From f6b87d8bcb73f088b1ae093be28fe5b4c4cca36d Mon Sep 17 00:00:00 2001 From: jakubs <jakubs> Date: Tue, 19 Jun 2012 07:55:43 +0000 Subject: [PATCH] BIS-21 SP-107 add transaction encapsulation to screening v2 dropbox SVN: 25772 --- ...agingDataSetRegistrationTransactionV2.java | 39 +++ ...aSetRegistrationTransactionV2Delegate.java | 240 ++++++++++++++++++ .../v2/JythonPlateDataSetHandlerV2.java | 10 + .../server/dropbox/hcs-simple-test.py | 6 +- 4 files changed, 292 insertions(+), 3 deletions(-) create mode 100644 screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/v2/IImagingDataSetRegistrationTransactionV2.java create mode 100644 screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/v2/ImagingDataSetRegistrationTransactionV2Delegate.java diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/v2/IImagingDataSetRegistrationTransactionV2.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/v2/IImagingDataSetRegistrationTransactionV2.java new file mode 100644 index 00000000000..df5939b0cb6 --- /dev/null +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/v2/IImagingDataSetRegistrationTransactionV2.java @@ -0,0 +1,39 @@ +/* + * Copyright 2012 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.openbis.dss.etl.jython.v2; + +import java.io.File; + +import ch.systemsx.cisd.etlserver.registrator.api.v2.IDataSetRegistrationTransactionV2; +import ch.systemsx.cisd.openbis.dss.etl.dto.api.v1.IImageDataSet; +import ch.systemsx.cisd.openbis.dss.etl.dto.api.v1.SimpleImageDataConfig; + +/** + * + * + * @author Jakub Straszewski + */ +public interface IImagingDataSetRegistrationTransactionV2 extends + IDataSetRegistrationTransactionV2 +{ + /** + * Creates a new image dataset. See {@link SimpleImageDataConfig} documentation for + * configuration details. + */ + IImageDataSet createNewImageDataSet(SimpleImageDataConfig imageDataSet, + File incomingFolderWithImages); +} diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/v2/ImagingDataSetRegistrationTransactionV2Delegate.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/v2/ImagingDataSetRegistrationTransactionV2Delegate.java new file mode 100644 index 00000000000..b3fb113dd72 --- /dev/null +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/v2/ImagingDataSetRegistrationTransactionV2Delegate.java @@ -0,0 +1,240 @@ +/* + * Copyright 2012 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.openbis.dss.etl.jython.v2; + +import java.io.File; + +import net.lemnik.eodsql.DynamicTransactionQuery; + +import ch.systemsx.cisd.etlserver.TopLevelDataSetRegistratorGlobalState; +import ch.systemsx.cisd.etlserver.registrator.DataSetRegistrationPersistentMap; +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.IMaterial; +import ch.systemsx.cisd.etlserver.registrator.api.v1.IProject; +import ch.systemsx.cisd.etlserver.registrator.api.v1.ISample; +import ch.systemsx.cisd.etlserver.registrator.api.v1.ISpace; +import ch.systemsx.cisd.openbis.dss.etl.dto.api.v1.IImageDataSet; +import ch.systemsx.cisd.openbis.dss.etl.dto.api.v1.SimpleImageDataConfig; +import ch.systemsx.cisd.openbis.dss.etl.jython.ImagingDataSetRegistrationTransaction; +import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IDataSetImmutable; +import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IExperimentImmutable; +import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IMaterialImmutable; +import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.IProjectImmutable; +import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.ISampleImmutable; +import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.ISearchService; +import ch.systemsx.cisd.openbis.dss.generic.shared.api.internal.v1.ISpaceImmutable; + +/** + * @author Jakub Straszewski + */ +public class ImagingDataSetRegistrationTransactionV2Delegate implements + IImagingDataSetRegistrationTransactionV2 +{ + public ImagingDataSetRegistrationTransactionV2Delegate( + ImagingDataSetRegistrationTransaction transaction) + { + this.transaction = transaction; + } + + private final ImagingDataSetRegistrationTransaction transaction; + + @Override + public IImageDataSet createNewImageDataSet(SimpleImageDataConfig imageDataSet, + File incomingFolderWithImages) + { + return transaction.createNewImageDataSet(imageDataSet, incomingFolderWithImages); + } + + @Override + public IDataSet createNewDataSet() + { + return transaction.createNewDataSet(); + } + + @Override + public IDataSet createNewDataSet(String dataSetType) + { + return transaction.createNewDataSet(dataSetType); + } + + @Override + public IDataSet createNewDataSet(String dataSetType, String dataSetCode) + { + return transaction.createNewDataSet(dataSetType, dataSetCode); + } + + @Override + public IDataSetImmutable getDataSet(String dataSetCode) + { + return transaction.getDataSet(dataSetCode); + } + + @Override + public IDataSetUpdatable getDataSetForUpdate(String dataSetCode) + { + return transaction.getDataSetForUpdate(dataSetCode); + } + + @Override + public IDataSetUpdatable makeDataSetMutable(IDataSetImmutable dataSet) + { + return transaction.makeDataSetMutable(dataSet); + } + + @Override + public ISampleImmutable getSample(String sampleIdentifierString) + { + return transaction.getSample(sampleIdentifierString); + } + + @Override + public ISample getSampleForUpdate(String sampleIdentifierString) + { + return transaction.getSampleForUpdate(sampleIdentifierString); + } + + @Override + public ISample makeSampleMutable(ISampleImmutable sample) + { + return transaction.makeSampleMutable(sample); + } + + @Override + public ISample createNewSample(String sampleIdentifierString, String sampleTypeCode) + { + return transaction.createNewSample(sampleIdentifierString, sampleTypeCode); + } + + @Override + public IExperimentImmutable getExperiment(String experimentIdentifierString) + { + return transaction.getExperiment(experimentIdentifierString); + } + + @Override + public IExperiment getExperimentForUpdate(String experimentIdentifierString) + { + return transaction.getExperimentForUpdate(experimentIdentifierString); + } + + @Override + public IExperiment createNewExperiment(String experimentIdentifierString, + String experimentTypeCode) + { + return transaction.createNewExperiment(experimentIdentifierString, experimentTypeCode); + } + + @Override + public IProject createNewProject(String projectIdentifier) + { + return transaction.createNewProject(projectIdentifier); + } + + @Override + public IProjectImmutable getProject(String projectIdentifier) + { + return transaction.getProject(projectIdentifier); + } + + @Override + public ISpace createNewSpace(String spaceCode, String spaceAdminUserIdOrNull) + { + return transaction.createNewSpace(spaceCode, spaceAdminUserIdOrNull); + } + + @Override + public ISpaceImmutable getSpace(String spaceCode) + { + return transaction.getSpace(spaceCode); + } + + @Override + public IMaterialImmutable getMaterial(String materialCode, String materialType) + { + return transaction.getMaterial(materialCode, materialType); + } + + @Override + public IMaterial createNewMaterial(String materialCode, String materialType) + { + return transaction.createNewMaterial(materialCode, materialType); + } + + @Override + public String moveFile(String src, IDataSet dst) + { + return transaction.moveFile(src, dst); + } + + @Override + public String moveFile(String src, IDataSet dst, String dstInDataset) + { + return transaction.moveFile(src, dst, dstInDataset); + } + + @Override + public String createNewDirectory(IDataSet dst, String dirName) + { + return transaction.createNewDirectory(dst, dirName); + } + + @Override + public String createNewFile(IDataSet dst, String fileName) + { + return transaction.createNewFile(dst, fileName); + } + + @Override + public String createNewFile(IDataSet dst, String dstInDataset, String fileName) + { + return transaction.createNewFile(dst, dstInDataset, fileName); + } + + @Override + public ISearchService getSearchService() + { + return transaction.getSearchService(); + } + + @Override + public DynamicTransactionQuery getDatabaseQuery(String dataSourceName) + throws IllegalArgumentException + { + return transaction.getDatabaseQuery(dataSourceName); + } + + @Override + public DataSetRegistrationPersistentMap getRegistrationContext() + { + return transaction.getRegistrationContext(); + } + + @Override + public TopLevelDataSetRegistratorGlobalState getGlobalState() + { + return transaction.getGlobalState(); + } + + @Override + public File getIncoming() + { + return transaction.getIncoming(); + } + +} diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/v2/JythonPlateDataSetHandlerV2.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/v2/JythonPlateDataSetHandlerV2.java index 21336ee67c0..3445ee6d0f9 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/v2/JythonPlateDataSetHandlerV2.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/v2/JythonPlateDataSetHandlerV2.java @@ -27,7 +27,9 @@ import ch.systemsx.cisd.etlserver.TopLevelDataSetRegistratorGlobalState; import ch.systemsx.cisd.etlserver.registrator.DataSetFile; import ch.systemsx.cisd.etlserver.registrator.DataSetRegistrationService; import ch.systemsx.cisd.etlserver.registrator.IDataSetRegistrationDetailsFactory; +import ch.systemsx.cisd.etlserver.registrator.api.v1.IDataSetRegistrationTransaction; import ch.systemsx.cisd.etlserver.registrator.api.v1.impl.DataSetRegistrationTransaction; +import ch.systemsx.cisd.etlserver.registrator.api.v2.IDataSetRegistrationTransactionV2; import ch.systemsx.cisd.etlserver.registrator.api.v2.JythonDataSetRegistrationServiceV2; import ch.systemsx.cisd.etlserver.registrator.api.v2.JythonTopLevelDataSetHandlerV2; import ch.systemsx.cisd.etlserver.registrator.recovery.AutoRecoverySettings; @@ -92,4 +94,12 @@ public class JythonPlateDataSetHandlerV2 extends JythonTopLevelDataSetHandlerV2< } }; } + + @Override + protected IDataSetRegistrationTransactionV2 wrapTransaction( + IDataSetRegistrationTransaction transaction) + { + return new ImagingDataSetRegistrationTransactionV2Delegate( + (ImagingDataSetRegistrationTransaction) transaction); + } } diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/screening/server/dropbox/hcs-simple-test.py b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/screening/server/dropbox/hcs-simple-test.py index e420301432a..4e760cacd0e 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/screening/server/dropbox/hcs-simple-test.py +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/dss/screening/server/dropbox/hcs-simple-test.py @@ -57,15 +57,15 @@ class MyImageDataSetConfig(SimpleImageDataConfig): def getTileGeometry(self, imageTokens, maxTileNumber): return Geometry.createFromRowColDimensions(maxTileNumber / 3, 3) -def process(): +def process(transaction): + incoming = transaction.getIncoming() if incoming.isDirectory(): imageDataset = MyImageDataSetConfig() imageDataset.setRawImageDatasetType() imageDataset.setGenerateThumbnails(True) imageDataset.setUseImageMagicToGenerateThumbnails(False) imageDataset.setPlate(SPACE_CODE, PLATE_CODE) - registrationDetails = factory.createImageRegistrationDetails(imageDataset, incoming) plate = create_plate_if_needed(transaction) - dataset = transaction.createNewDataSet(registrationDetails); + dataset = transaction.createNewImageDataSet(imageDataset, incoming); dataset.setSample(plate) transaction.moveFile(incoming.getPath(), dataset); -- GitLab