From bce32f1b5576a8dcbaa72c9cfe98ab1f7bb80e32 Mon Sep 17 00:00:00 2001 From: jakubs <jakubs> Date: Mon, 18 Mar 2013 12:19:54 +0000 Subject: [PATCH] SP-565 BIS-357 fix problem with incorrect path to imaging db in case of several moveFile operation SVN: 28631 --- ...ImagingDataSetRegistrationTransactionV2.java | 7 +++++++ .../ImagingDataSetRegistrationTransaction.java | 10 ++++++++-- ...ataSetRegistrationTransactionV2Delegate.java | 10 ++++++++++ .../data-set-handler.py | 13 +++++++++++-- .../TransformedImageRepresentationsTest.java | 17 ++++++++++++++++- 5 files changed, 52 insertions(+), 5 deletions(-) diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v2/IImagingDataSetRegistrationTransactionV2.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v2/IImagingDataSetRegistrationTransactionV2.java index 65686d7eaf8..a1b946b4571 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v2/IImagingDataSetRegistrationTransactionV2.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v2/IImagingDataSetRegistrationTransactionV2.java @@ -37,6 +37,13 @@ public interface IImagingDataSetRegistrationTransactionV2 extends IDataSetRegist IImageDataSet createNewImageDataSet(SimpleImageDataConfig imageDataSet, File incomingFolderWithImages); + /** + * Creates a new image data set. See {@link SimpleImageDataConfig} documentation for + * configuration details. Also moves the incoming directory to the data set. + */ + IImageDataSet createNewImageDataSetAndMoveFile(SimpleImageDataConfig imageDataSet, + File incomingFolderWithImages); + /** * Creates a new overview image data set. See {@link SimpleImageDataConfig} documentation for * configuration details. diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/v2/ImagingDataSetRegistrationTransaction.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/v2/ImagingDataSetRegistrationTransaction.java index 161709a6004..bfc547c8304 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/v2/ImagingDataSetRegistrationTransaction.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/v2/ImagingDataSetRegistrationTransaction.java @@ -746,8 +746,14 @@ public class ImagingDataSetRegistrationTransaction extends DataSetRegistrationTr throw new UserFailureException( "Cannot move the files because the original dataset is missing: " + src); } - originalDataset.getRegistrationDetails().getDataSetInformation() - .setDatasetRelativeImagesFolderPath(new File(destination)); + + ImageDataSetInformation dataSetInformation = + originalDataset.getRegistrationDetails().getDataSetInformation(); + + if (dataSetInformation.getDatasetRelativeImagesFolderPath() == null) + { + dataSetInformation.setDatasetRelativeImagesFolderPath(new File(destination)); + } return super.moveFile(src, originalDataset, destination); } 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 index 535108642ae..2727d1b6d16 100644 --- 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 @@ -71,6 +71,16 @@ public class ImagingDataSetRegistrationTransactionV2Delegate implements return transaction.createNewImageDataSet(imageDataSet, incomingFolderWithImages); } + @Override + public IImageDataSet createNewImageDataSetAndMoveFile(SimpleImageDataConfig imageDataSet, + File incomingFolderWithImages) + { + IImageDataSet dataSet = + transaction.createNewImageDataSet(imageDataSet, incomingFolderWithImages); + transaction.moveFile(incomingFolderWithImages.getPath(), dataSet); + return dataSet; + } + @Override public IDataSet createNewOverviewImageDataSet(SimpleImageDataConfig imageDataSet, File incomingFolderWithImages) diff --git a/screening/sourceTest/core-plugins/TransformedImageRepresentationsV2Test/1/dss/drop-boxes/TransformedImageRepresentationsV2Test-drop-box/data-set-handler.py b/screening/sourceTest/core-plugins/TransformedImageRepresentationsV2Test/1/dss/drop-boxes/TransformedImageRepresentationsV2Test-drop-box/data-set-handler.py index 47d50b82a2b..359914ebab9 100644 --- a/screening/sourceTest/core-plugins/TransformedImageRepresentationsV2Test/1/dss/drop-boxes/TransformedImageRepresentationsV2Test-drop-box/data-set-handler.py +++ b/screening/sourceTest/core-plugins/TransformedImageRepresentationsV2Test/1/dss/drop-boxes/TransformedImageRepresentationsV2Test-drop-box/data-set-handler.py @@ -146,5 +146,14 @@ def process(transaction): channel.setAvailableTransformations(transforms) imageDataset.setChannels(channels, colorComponents) - dataSet = transaction.createNewImageDataSet(imageDataset, incoming) - transaction.moveFile(incoming.getPath(), dataSet) + dataSet = transaction.createNewImageDataSetAndMoveFile(imageDataset, incoming) + + os.makedirs(incoming.getPath()) + path = incoming.getPath() + 'otherFile.txt' + + f = open(path, 'w') + f.write("test\n") + f.close() + + transaction.moveFile(path, dataSet) + \ No newline at end of file diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/TransformedImageRepresentationsTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/TransformedImageRepresentationsTest.java index a7447bb1c0a..fef6fc9bd1e 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/TransformedImageRepresentationsTest.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/TransformedImageRepresentationsTest.java @@ -178,8 +178,23 @@ public class TransformedImageRepresentationsTest extends AbstractScreeningSystem expectedThumbnailBytes(dataSetCode, format.getWidth()); assertEquals(1, thumbnails.size()); assertEquals(expectedThumbnailImage, thumbnails.get(0)); - } + } else + { + final List<byte[]> images = new ArrayList<byte[]>(); + screeningFacade.loadImages(plateRefs, false, new IPlateImageHandler() + { + + @Override + public void handlePlateImage(PlateImageReference plateImageReference, + byte[] imageFileBytes) + { + images.add(imageFileBytes); + } + }); + assertEquals(1, images.size()); + assertTrue(images.get(0).length > 0); + } if (format.getFileType() != null) { // jpg thumbnails -- GitLab