From 67e8011712d85ab41f47cc37e7a9f65af406551c Mon Sep 17 00:00:00 2001
From: brinn <brinn>
Date: Mon, 11 Oct 2010 08:02:41 +0000
Subject: [PATCH] improve: in loadImages(), avoid calling
 openbis.listImageDatasets() and openbis.listImageMetadata() twice

SVN: 18232
---
 screening/source/java/OpenBISScreeningML.java | 33 ++++++-------------
 1 file changed, 10 insertions(+), 23 deletions(-)

diff --git a/screening/source/java/OpenBISScreeningML.java b/screening/source/java/OpenBISScreeningML.java
index 7f08227b340..650b3971ded 100644
--- a/screening/source/java/OpenBISScreeningML.java
+++ b/screening/source/java/OpenBISScreeningML.java
@@ -519,37 +519,24 @@ public class OpenBISScreeningML
         {
             throw new RuntimeException("No plate with that code found.");
         }
+        final List<ImageDatasetReference> imageDatasets =
+                openbis.listImageDatasets(Arrays.asList(plateId));
+        final List<ImageDatasetMetadata> meta = openbis.listImageMetadata(imageDatasets);
+        if (meta.isEmpty())
+        {
+            return new Object[][][]
+                { new Object[0][], new Object[0][] };
+        }
         final List<String> imageChannels;
         if (channels == null || channels.length == 0)
         {
-            final List<ImageDatasetReference> imageDatasets =
-                    openbis.listImageDatasets(Arrays.asList(plateId));
-            final List<ImageDatasetMetadata> meta = openbis.listImageMetadata(imageDatasets);
-            if (meta.isEmpty())
-            {
-                return new Object[][][]
-                    { new Object[0][], new Object[0][] };
-            }
             imageChannels = getChannelCodes(meta);
         } else
         {
             imageChannels = Arrays.asList(channels);
         }
-        final List<ImageDatasetReference> imageDatasets =
-                openbis.listImageDatasets(Arrays.asList(plateId));
-        if (imageDatasets.isEmpty())
-        {
-            return new Object[][][]
-                { new Object[0][], new Object[0][] };
-        }
         final List<PlateImageReference> imageReferences =
-                new ArrayList<PlateImageReference>(imageDatasets.size());
-        final List<ImageDatasetMetadata> meta = openbis.listImageMetadata(imageDatasets);
-        if (meta.isEmpty())
-        {
-            return new Object[][][]
-                { new Object[0][], new Object[0][] };
-        }
+            new ArrayList<PlateImageReference>(imageDatasets.size());
         final List<File> imageFiles =
                 new ArrayList<File>(imageDatasets.size() * imageChannels.size()
                         * meta.get(0).getNumberOfTiles());
@@ -625,7 +612,7 @@ public class OpenBISScreeningML
                     {
                         return imageRefToFileMap.get(imageReference);
                     }
-                });
+                }, false);
         } finally
         {
             closeOutputStreams(imageRefToFileMap.values());
-- 
GitLab