From a70a08eeea7ac9bd66a476334275d12a15e75775 Mon Sep 17 00:00:00 2001
From: cramakri <cramakri>
Date: Thu, 27 May 2010 12:54:31 +0000
Subject: [PATCH] LMS-1544 Fixed bug caused by incorrect dss-url.

SVN: 16166
---
 .../logic/FeatureVectorDatasetLoader.java     |  2 +-
 .../server/logic/ImageDatasetLoader.java      |  6 ++---
 .../server/logic/PlateDatasetLoader.java      | 22 +++++++++++++++++++
 3 files changed, 26 insertions(+), 4 deletions(-)

diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/FeatureVectorDatasetLoader.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/FeatureVectorDatasetLoader.java
index f1fc3a5e4a9..5bf9a6110d3 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/FeatureVectorDatasetLoader.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/FeatureVectorDatasetLoader.java
@@ -100,7 +100,7 @@ class FeatureVectorDatasetLoader extends ImageDatasetLoader
         DataStore dataStore = externalData.getDataStore();
         ExternalData parentDataset = externalData.getParents().iterator().next();
         return new FeatureVectorDatasetReference(externalData.getCode(),
-                dataStore.getDownloadUrl(), createPlateIdentifier(parentDataset),
+                getDataStoreUrlFromDataStore(dataStore), createPlateIdentifier(parentDataset),
                 extractPlateGeometry(parentDataset), externalData.getRegistrationDate(),
                 asImageDataset(parentDataset));
     }
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/ImageDatasetLoader.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/ImageDatasetLoader.java
index 2dee96c43c8..86d5a60c01d 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/ImageDatasetLoader.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/ImageDatasetLoader.java
@@ -65,8 +65,8 @@ class ImageDatasetLoader extends PlateDatasetLoader
     protected ImageDatasetReference asImageDataset(ExternalData externalData)
     {
         DataStore dataStore = externalData.getDataStore();
-        return new ImageDatasetReference(externalData.getCode(), dataStore.getDownloadUrl(),
-                createPlateIdentifier(externalData), extractPlateGeometry(externalData),
-                externalData.getRegistrationDate());
+        return new ImageDatasetReference(externalData.getCode(),
+                getDataStoreUrlFromDataStore(dataStore), createPlateIdentifier(externalData),
+                extractPlateGeometry(externalData), externalData.getRegistrationDate());
     }
 }
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/PlateDatasetLoader.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/PlateDatasetLoader.java
index 891e0309cf7..3629d4b483f 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/PlateDatasetLoader.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/server/logic/PlateDatasetLoader.java
@@ -1,5 +1,7 @@
 package ch.systemsx.cisd.openbis.plugin.screening.server.logic;
 
+import static ch.systemsx.cisd.openbis.generic.shared.GenericSharedConstants.DATA_STORE_SERVER_WEB_APPLICATION_NAME;
+
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -7,6 +9,7 @@ import java.util.List;
 import ch.systemsx.cisd.common.exceptions.UserFailureException;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.datasetlister.IDatasetLister;
 import ch.systemsx.cisd.openbis.generic.server.business.bo.samplelister.ISampleLister;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataStore;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ListOrSearchSampleCriteria;
@@ -225,6 +228,25 @@ class PlateDatasetLoader
         return sampleIds;
     }
 
+    protected String getDataStoreUrlFromDataStore(DataStore dataStore)
+    {
+        String datastoreUrl = dataStore.getDownloadUrl();
+        // The url objained form a DataStore object is the *download* url. Convert this to the
+        // datastore URL
+        if (datastoreUrl.endsWith(DATA_STORE_SERVER_WEB_APPLICATION_NAME))
+        {
+            datastoreUrl =
+                    datastoreUrl.substring(0, datastoreUrl.length()
+                            - DATA_STORE_SERVER_WEB_APPLICATION_NAME.length());
+        }
+        if (datastoreUrl.endsWith("/"))
+        {
+            datastoreUrl = datastoreUrl.substring(0, datastoreUrl.length() - 1);
+        }
+
+        return datastoreUrl;
+    }
+
     protected static SampleIdentifier createSampleIdentifier(PlateIdentifier plate)
     {
         SampleOwnerIdentifier owner;
-- 
GitLab