From 0c008482e9faf8c3e80d02619cf1e4d91c6e282f Mon Sep 17 00:00:00 2001
From: jakubs <jakubs>
Date: Wed, 23 Jan 2013 15:46:58 +0000
Subject: [PATCH] SP-452 BIS-297 allow setting color depth in a dropbox

SVN: 28167
---
 .../openbis/dss/etl/PlateStorageProcessor.java   |  7 ++++---
 .../dss/etl/dto/api/SimpleImageDataConfig.java   | 13 +++++++++++++
 .../dto/api/impl/ImageDataSetInformation.java    | 16 ++++++++++++++++
 .../jython/v1/SimpleImageDataSetRegistrator.java |  2 ++
 .../data-set-handler.py                          |  1 +
 .../data-set-handler.py                          |  1 +
 .../TransformedImageRepresentationsTest.java     |  1 +
 7 files changed, 38 insertions(+), 3 deletions(-)

diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/PlateStorageProcessor.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/PlateStorageProcessor.java
index 8229588f587..9b384f3742a 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/PlateStorageProcessor.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/PlateStorageProcessor.java
@@ -209,12 +209,14 @@ public final class PlateStorageProcessor extends AbstractImageStorageProcessor
             Integer width = null;
             Integer height = null;
             boolean original = true;
+            Integer colorDepth = null;
             if (originalDataset instanceof ImageDataSetInformation)
             {
                 ImageDataSetInformation imageDataSet = (ImageDataSetInformation) originalDataset;
                 width = nullifyIfZero(imageDataSet.getMaximumImageWidth());
                 height = nullifyIfZero(imageDataSet.getMaximumImageHeight());
                 original = imageDataSet.getRegisterAsOverviewImageDataSet() == false;
+                colorDepth = imageDataSet.getColorDepth();
             }
 
             if (original)
@@ -222,7 +224,7 @@ public final class PlateStorageProcessor extends AbstractImageStorageProcessor
                 @SuppressWarnings("unchecked")
                 ImageZoomLevel originalZoomLevel =
                         new ImageZoomLevel(originalDataset.getDataSetCode(), original,
-                                StringUtils.EMPTY_STRING, width, height, null, null,
+                                StringUtils.EMPTY_STRING, width, height, colorDepth, null,
                                 Collections.EMPTY_MAP);
                 zoomLevels.add(originalZoomLevel);
             }
@@ -246,9 +248,8 @@ public final class PlateStorageProcessor extends AbstractImageStorageProcessor
                     }
                     String rootPath = thumbnailsInfosOrNull.getRootPath(permId);
 
-                    // TODO add color depth
                     ImageZoomLevel thumbnailZoomLevel =
-                            new ImageZoomLevel(permId, false, rootPath, width, height, null,
+                            new ImageZoomLevel(permId, false, rootPath, width, height, colorDepth,
                                     fileTypeString,
                                     thumbnailsInfosOrNull.getTransformations(permId));
                     zoomLevels.add(thumbnailZoomLevel);
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/SimpleImageDataConfig.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/SimpleImageDataConfig.java
index e39c0e858bf..acdabb8f08a 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/SimpleImageDataConfig.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/SimpleImageDataConfig.java
@@ -250,6 +250,8 @@ abstract public class SimpleImageDataConfig
 
     private List<ChannelColorComponent> channelColorComponentsOrNull;
 
+    private Integer colorDepth;
+
     // --- getters & setters ----------------------------------------------
 
     public ImageStorageConfiguraton getImageStorageConfiguration()
@@ -985,4 +987,15 @@ abstract public class SimpleImageDataConfig
     {
         return this.thumbnailsFileFormat;
     }
+
+    public Integer getColorDepth()
+    {
+        return colorDepth;
+    }
+
+    public void setColorDepth(Integer colorDepth)
+    {
+        this.colorDepth = colorDepth;
+    }
+
 }
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/impl/ImageDataSetInformation.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/impl/ImageDataSetInformation.java
index 8c5d0b84252..639dfdce61a 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/impl/ImageDataSetInformation.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/impl/ImageDataSetInformation.java
@@ -55,6 +55,8 @@ public class ImageDataSetInformation extends BasicDataSetInformation
 
     private int maximumImageHeight;
 
+    private Integer colorDepth;
+
     public File getIncomingDirectory()
     {
         return incomingDirectory;
@@ -162,6 +164,16 @@ public class ImageDataSetInformation extends BasicDataSetInformation
                 generateOverviewImagesFromRegisteredImages;
     }
 
+    public Integer getColorDepth()
+    {
+        return colorDepth;
+    }
+
+    public void setColorDepth(Integer colorDepth)
+    {
+        this.colorDepth = colorDepth;
+    }
+
     @Override
     public String toString()
     {
@@ -174,6 +186,10 @@ public class ImageDataSetInformation extends BasicDataSetInformation
             appendNameAndObject(buffer, "bounding box", maximumImageWidth + "x"
                     + maximumImageHeight);
         }
+        if (getColorDepth() != null)
+        {
+            appendNameAndObject(buffer, "color depth", this.getColorDepth());
+        }
         if (getThumbnailsInfos() != null)
         {
             appendNameAndObject(buffer, "thumbnail", getThumbnailsInfos());
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/v1/SimpleImageDataSetRegistrator.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/v1/SimpleImageDataSetRegistrator.java
index 766a48c7533..79406de96f3 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/v1/SimpleImageDataSetRegistrator.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/v1/SimpleImageDataSetRegistrator.java
@@ -201,6 +201,8 @@ public class SimpleImageDataSetRegistrator
             }
         }
 
+        imageDataset.setColorDepth(simpleImageConfig.getColorDepth());
+
         setRegistrationDetails(registrationDetails, imageDataset);
         return registrationDetails;
     }
diff --git a/screening/sourceTest/core-plugins/TransformedImageRepresentationsTest/1/dss/drop-boxes/TransformedImageRepresentationsTest-drop-box/data-set-handler.py b/screening/sourceTest/core-plugins/TransformedImageRepresentationsTest/1/dss/drop-boxes/TransformedImageRepresentationsTest-drop-box/data-set-handler.py
index 2785367e3bd..e6d978e6909 100644
--- a/screening/sourceTest/core-plugins/TransformedImageRepresentationsTest/1/dss/drop-boxes/TransformedImageRepresentationsTest-drop-box/data-set-handler.py
+++ b/screening/sourceTest/core-plugins/TransformedImageRepresentationsTest/1/dss/drop-boxes/TransformedImageRepresentationsTest-drop-box/data-set-handler.py
@@ -130,6 +130,7 @@ if incoming.isDirectory():
   imageDataset = ImageDataSetFlexible()
   imageDataset.setRawImageDatasetType()
   imageDataset.setPlate("TEST", 'TRANSFORMED-THUMB-PLATE')
+  imageDataset.setColorDepth(8)
   transforms = getAvailableChannelTransformations()
   # We want thumbnails generarted for the following resolutions, and they should be JPEG and have the
   # Radial Blur transform applied
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 2a26deec724..47d50b82a2b 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
@@ -129,6 +129,7 @@ def process(transaction):
         imageDataset = ImageDataSetFlexible()
         imageDataset.setRawImageDatasetType()
         imageDataset.setPlate("TEST", 'TRANSFORMED-THUMB-PLATE')
+        imageDataset.setColorDepth(8)
         transforms = getAvailableChannelTransformations()
         # We want thumbnails generarted for the following resolutions, and they should be JPEG and have the
         # Radial Blur transform applied 
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 4a0bb982600..7b8a13e0a2e 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
@@ -114,6 +114,7 @@ public class TransformedImageRepresentationsTest extends AbstractScreeningSystem
                 new Dimension(256, 256), new Dimension(512, 512)));
         for (ImageRepresentationFormat format : formats)
         {
+            assertEquals(Integer.valueOf(8), format.getColorDepth());
             Dimension resolution = new Dimension(format.getWidth(), format.getHeight());
             // Make sure the resolution we specified was found
             assertTrue("" + resolution + " was not expected",
-- 
GitLab