From 96a072fda6a3651a4c0e8024f0c84fc2962cb47f Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Tue, 14 Dec 2010 07:56:38 +0000 Subject: [PATCH] Integrate new version of Image Viewer. Screening openBIS bugs fixed. SVN: 19113 --- .../LogicalImageDatasetSection.java | 8 ++- .../detailviewers/LogicalImageViewer.java | 9 ++- .../detailviewers/WellContentDialog.java | 1 + .../detailviewers/WellImageSampleSection.java | 2 +- .../web/server/ImageViewerLaunchServlet.java | 67 ++++++------------- 5 files changed, 36 insertions(+), 51 deletions(-) diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/LogicalImageDatasetSection.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/LogicalImageDatasetSection.java index 06f44c6d46a..7f058a528b5 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/LogicalImageDatasetSection.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/LogicalImageDatasetSection.java @@ -24,6 +24,7 @@ import com.google.gwt.user.client.ui.Widget; import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback; import ch.systemsx.cisd.openbis.generic.client.web.client.application.TabContent; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExternalData; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.Dict; import ch.systemsx.cisd.openbis.plugin.screening.client.web.client.application.DisplayTypeIDGenerator; @@ -72,14 +73,17 @@ public class LogicalImageDatasetSection extends TabContent setLayout(new RowLayout()); setScrollMode(Scroll.AUTO); - String experimentPermId = dataset.getExperiment().getPermId(); + Experiment experiment = dataset.getExperiment(); + String experimentPermId = experiment.getPermId(); + String identifier = experiment.getIdentifier(); LogicalImageReference logicalImageReference = new LogicalImageReference(dataset.getCode(), dataset.getDataStore() .getCode(), dataset.getDataStore().getHostUrl(), imageInfo.getImageParameters()); LogicalImageViewer viewer = new LogicalImageViewer(logicalImageReference, - LogicalImageDatasetSection.this.viewContext, experimentPermId); + LogicalImageDatasetSection.this.viewContext, identifier, + experimentPermId); Widget viewerWidget = viewer.getViewerWidget(imageInfo.getChannelStacks()); add(viewerWidget, PlateLayouter.createRowLayoutSurroundingData()); diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/LogicalImageViewer.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/LogicalImageViewer.java index 26f374a009c..bb25202cc5d 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/LogicalImageViewer.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/LogicalImageViewer.java @@ -63,13 +63,17 @@ public class LogicalImageViewer private final IDefaultChannelState channelState; + private final String experimentIdentifier; + private String currentlySelectedChannelCode; public LogicalImageViewer(LogicalImageReference logicalImageReference, - IViewContext<IScreeningClientServiceAsync> viewContext, String experimentPermId) + IViewContext<IScreeningClientServiceAsync> viewContext, String experimentIdentifier, + String experimentPermId) { this.logicalImageReference = logicalImageReference; this.viewContext = viewContext; + this.experimentIdentifier = experimentIdentifier; this.channelState = createDefaultChannelState(viewContext, experimentPermId); } @@ -203,7 +207,8 @@ public class LogicalImageViewer String sessionToken = viewContext.getModel().getSessionContext().getSessionID(); urlParams.addParameter("session", sessionToken); urlParams.addParameter(ParameterNames.SERVER_URL, GWT.getHostPageBaseURL()); - + urlParams.addParameter(ParameterNames.EXPERIMENT_ID, experimentIdentifier); + if (currentlySelectedChannelCode != null) { urlParams.addParameter(ParameterNames.CHANNEL, currentlySelectedChannelCode); diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellContentDialog.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellContentDialog.java index 41dbe590c78..2829fbaa43c 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellContentDialog.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellContentDialog.java @@ -189,6 +189,7 @@ public class WellContentDialog extends Dialog final LogicalImageReference imagesOrNull = new LogicalImageReference(imageDatasetOrNull, wellLocationOrNull); return new LogicalImageViewer(imagesOrNull, viewContext, + experimentCriteria.getExperimentIdentifier(), experimentCriteria.getExperimentPermId()); } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellImageSampleSection.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellImageSampleSection.java index b28d66bcaba..7eb27801e9f 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellImageSampleSection.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/client/application/detailviewers/WellImageSampleSection.java @@ -115,7 +115,7 @@ public class WellImageSampleSection extends TabContent wellLocationOrNull); LogicalImageViewer viewer = new LogicalImageViewer(logicalImageReference, - WellImageSampleSection.this.viewContext, experimentPermId); + WellImageSampleSection.this.viewContext, "", experimentPermId); Widget viewerWidget = viewer.getViewerWidget(imageInfo.getChannelStacks()); add(viewerWidget, PlateLayouter.createRowLayoutSurroundingData()); } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/ImageViewerLaunchServlet.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/ImageViewerLaunchServlet.java index c02d8ab3bb4..a05751eb6f0 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/ImageViewerLaunchServlet.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/client/web/server/ImageViewerLaunchServlet.java @@ -21,6 +21,8 @@ import static ch.systemsx.cisd.openbis.plugin.screening.shared.basic.dto.Screeni import java.io.IOException; import java.io.OutputStreamWriter; import java.io.PrintWriter; +import java.net.MalformedURLException; +import java.net.URL; import java.util.Arrays; import java.util.List; @@ -31,6 +33,7 @@ import org.apache.log4j.Logger; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; +import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException; import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.common.logging.LogCategory; import ch.systemsx.cisd.common.logging.LogFactory; @@ -50,73 +53,40 @@ public class ImageViewerLaunchServlet extends AbstractServlet public static final Template JNLP_TEMPLATE = new Template( "<?xml version='1.0' encoding='utf-8'?>\n" - + "<jnlp spec='1.0+' codebase='${base-URL}'>\n" - + " <information>\n" - + " <title>${title}</title>\n" - + " <vendor>SyBIT</vendor>\n" - + " <description>${description}</description>\n" - + " </information>\n" - + " <security>\n" - + " <all-permissions/>\n" - + " </security>\n" - + " <resources>\n" - + " <j2se version='1.5+'/>\n" - + " <jar href='screening.jar'/>\n" - + " <jar href='cisd-base.jar'/>\n" - + " <jar href='image-viewer.jar'/>\n" - + " <jar href='spring-web.jar'/>\n" - + " <jar href='spring-context.jar'/>\n" - + " <jar href='spring-beans.jar'/>\n" - + " <jar href='spring-aop.jar'/>\n" - + " <jar href='spring-core.jar'/>\n" - + " <jar href='aopalliance.jar'/>\n" - + " <jar href='stream-supporting-httpinvoker.jar'/>\n" - + " <jar href='commons-codec.jar'/>\n" - + " <jar href='commons-httpclient.jar'/>\n" - + " <jar href='commons-io.jar'/>\n" - + " <jar href='commons-lang.jar'/>\n" - + " <jar href='commons-logging.jar'/>\n" - + " <jar href='ij.jar'/>\n" - + " </resources>\n" - + " <application-desc main-class='${main-class}'>\n" - + " <argument>${service-URL}</argument>\n" - + " <argument>${session-id}</argument>\n" - + + " <argument>${experiment}</argument>\n" + " <argument>${channel}</argument>\n" - + "${data-set-and-wells-arguments}\n" - + " </application-desc>\n" + "</jnlp>\n"); private final Logger operationLog; @@ -139,9 +109,10 @@ public class ImageViewerLaunchServlet extends AbstractServlet template.bind("title", "Image Viewer"); template.bind("description", "Image Viewer for color adjustment."); String basicURL = getBasicURL(request); - template.bind("base-URL", createBaseURL(request)); + template.bind("base-URL", basicURL); template.bind("main-class", getMainClass()); - template.bind("service-URL", basicURL); + template.bind("service-URL", getServiceURL(request)); + template.bind("experiment", getParam(request, ParameterNames.EXPERIMENT_ID)); String sessionToken = getSessionToken(request); template.bind("session-id", sessionToken); String channel = getParam(request, ParameterNames.CHANNEL); @@ -149,10 +120,10 @@ public class ImageViewerLaunchServlet extends AbstractServlet StringBuilder builder = new StringBuilder(); // TODO 2010-12-09, Tomasz Pylak: add support for microscopy images in Image Viewer // where there are no wells. Extend API to load images in such cases. - for (String dataSet : getParams(request, ParameterNames.DATA_SETS)) - { - builder.append(" <argument>").append(dataSet + ":0.0").append("</argument>\n"); - } +// for (String dataSet : getParams(request, ParameterNames.DATA_SETS)) +// { +// builder.append(" <argument>").append(dataSet + ":0.0").append("</argument>\n"); +// } for (String dataSetAndWells : getParams(request, ParameterNames.DATA_SET_AND_WELLS)) { builder.append(" <argument>").append(dataSetAndWells).append("</argument>\n"); @@ -167,6 +138,7 @@ public class ImageViewerLaunchServlet extends AbstractServlet } } catch (UserFailureException ex) { + operationLog.error("Couldn't create JNLP file", ex); printError(response, ex.getMessage()); } } @@ -176,17 +148,20 @@ public class ImageViewerLaunchServlet extends AbstractServlet return "ch.systemsx.sybit.imageviewer.gui.ImageViewer"; } - private String createBaseURL(HttpServletRequest request) + private String getServiceURL(HttpServletRequest request) { String url = getBasicURL(request); - if (url.indexOf("localhost:8888") > 0 || url.indexOf("127.0.0.1:888") > 0) + try { - url = url + "/ch.systemsx.cisd.openbis.plugin.screening.OpenBIS/"; - } else + URL baseURL = new URL(url); + String protocol = baseURL.getProtocol(); + String host = baseURL.getHost(); + int port = baseURL.getPort(); + return new URL(protocol, host, port, "/openbis/openbis/").toString(); + } catch (MalformedURLException ex) { - url = url + "/"; + throw new EnvironmentFailureException("Invalid URL", ex); } - return url; } private String getBasicURL(HttpServletRequest request) -- GitLab