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