From 2035a8d73e284fea2aaf524e2a6a5b32ee1e728a Mon Sep 17 00:00:00 2001 From: cramakri <cramakri> Date: Wed, 6 Oct 2010 11:25:18 +0000 Subject: [PATCH] LMS-1793 Added code to force auto resolve. SVN: 18179 --- .../server/DatasetDownloadServlet.java | 53 +++++++++++++------ .../GenericDssLinkReportingPlugin.java | 4 +- 2 files changed, 40 insertions(+), 17 deletions(-) diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DatasetDownloadServlet.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DatasetDownloadServlet.java index ffa93fc865f..3810dcb6df5 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DatasetDownloadServlet.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DatasetDownloadServlet.java @@ -59,6 +59,8 @@ public class DatasetDownloadServlet extends AbstractDatasetDownloadServlet static final String AUTO_RESOLVE_KEY = "autoResolve"; + static final String FORCE_AUTO_RESOLVE_KEY = "forceAutoResolve"; + static final String MAIN_DATA_SET_PATH_KEY = "mdsPath"; static final String MAIN_DATA_SET_PATTERN_KEY = "mdsPattern"; @@ -117,9 +119,12 @@ public class DatasetDownloadServlet extends AbstractDatasetDownloadServlet private final String mainDataSetPatternOrNull; + private final boolean forceAutoResolve; + public RequestParams(String dataSetCode, String pathInfo, String sessionIdOrNull, String urlPrefixWithDataset, String displayMode, boolean autoResolve, - String mainDataSetPathOrNull, String mainDataSetPatternOrNull) + String mainDataSetPathOrNull, String mainDataSetPatternOrNull, + boolean forceAutoResolve) { this.dataSetCode = dataSetCode; this.pathInfo = pathInfo; @@ -129,6 +134,7 @@ public class DatasetDownloadServlet extends AbstractDatasetDownloadServlet this.autoResolve = autoResolve; this.mainDataSetPathOrNull = mainDataSetPathOrNull; this.mainDataSetPatternOrNull = mainDataSetPatternOrNull; + this.forceAutoResolve = forceAutoResolve; } public boolean isAutoResolve() @@ -136,6 +142,11 @@ public class DatasetDownloadServlet extends AbstractDatasetDownloadServlet return autoResolve; } + public boolean isForceAutoResolve() + { + return forceAutoResolve; + } + public String getDataSetCode() { return dataSetCode; @@ -215,8 +226,8 @@ public class DatasetDownloadServlet extends AbstractDatasetDownloadServlet { File rootDir = createDataSetRootDirectory(dataSetCode, session); RenderingContext context = - new RenderingContext(rootDir, requestParams.getURLPrefix(), requestParams - .getPathInfo() + new RenderingContext(rootDir, requestParams.getURLPrefix(), + requestParams.getPathInfo() ); @@ -265,18 +276,24 @@ public class DatasetDownloadServlet extends AbstractDatasetDownloadServlet Boolean autoResolveOrNull = Boolean.valueOf(request.getParameter(AUTO_RESOLVE_KEY)); boolean autoResolve = autoResolveOrNull != null && autoResolveOrNull; + Boolean forceAutoResolveOrNull = + Boolean.valueOf(request.getParameter(FORCE_AUTO_RESOLVE_KEY)); + boolean forceAutoResolve = forceAutoResolveOrNull != null && forceAutoResolveOrNull; String mainDataSetPathOrNull = request.getParameter(MAIN_DATA_SET_PATH_KEY); String mainDataSetPatternOrNull = request.getParameter(MAIN_DATA_SET_PATTERN_KEY); - if (autoResolve == false || StringUtils.isBlank(mainDataSetPathOrNull)) + boolean shouldSetMainDataSetParamsToNull = + autoResolve == false && forceAutoResolve == false; + if (shouldSetMainDataSetParamsToNull || StringUtils.isBlank(mainDataSetPathOrNull)) { mainDataSetPathOrNull = null; } - if (autoResolve == false || StringUtils.isBlank(mainDataSetPatternOrNull)) + if (shouldSetMainDataSetParamsToNull || StringUtils.isBlank(mainDataSetPatternOrNull)) { mainDataSetPatternOrNull = null; } return new RequestParams(dataSetCode, pathInfo, sessionIDOrNull, urlPrefixWithDataset, - displayMode, autoResolve, mainDataSetPathOrNull, mainDataSetPatternOrNull); + displayMode, autoResolve, mainDataSetPathOrNull, mainDataSetPatternOrNull, + forceAutoResolve); } private static String getDisplayMode(HttpServletRequest request) @@ -336,7 +353,11 @@ public class DatasetDownloadServlet extends AbstractDatasetDownloadServlet if (requestParams.isAutoResolve()) { autoResolve(rendererFactory, response, dataSetCode, renderingContext, - requestParams, session, file, dataSet); + requestParams, session, file, dataSet, false); + } else if (requestParams.isForceAutoResolve()) + { + autoResolve(rendererFactory, response, dataSetCode, renderingContext, + requestParams, session, file, dataSet, true); } else { createPage(rendererFactory, response, dataSet, renderingContext, file); @@ -350,20 +371,22 @@ public class DatasetDownloadServlet extends AbstractDatasetDownloadServlet private void autoResolve(IRendererFactory rendererFactory, HttpServletResponse response, String dataSetCode, RenderingContext renderingContext, RequestParams requestParams, - HttpSession session, File dir, ExternalData dataSet) throws IOException + HttpSession session, File dir, ExternalData dataSet, boolean shouldForce) + throws IOException { assert dir.exists() && dir.isDirectory(); List<File> mainDataSets = - AutoResolveUtils.findSomeMatchingFiles(renderingContext.getRootDir(), requestParams - .tryGetMainDataSetPath(), requestParams.tryGetMainDataSetPattern()); - if (mainDataSets.size() == 1) + AutoResolveUtils.findSomeMatchingFiles(renderingContext.getRootDir(), + requestParams.tryGetMainDataSetPath(), + requestParams.tryGetMainDataSetPattern()); + if (mainDataSets.size() == 1 || (mainDataSets.size() > 1 && shouldForce)) { String newRelativePath = FileUtilities.getRelativeFile(renderingContext.getRootDir(), new File( mainDataSets.get(0).getPath())); RenderingContext newRenderingContext = - new RenderingContext(renderingContext.getRootDir(), renderingContext - .getUrlPrefix(), newRelativePath); + new RenderingContext(renderingContext.getRootDir(), + renderingContext.getUrlPrefix(), newRelativePath); autoResolveRedirect(response, newRenderingContext); } else if (AutoResolveUtils.continueAutoResolving(requestParams.tryGetMainDataSetPattern(), dir)) @@ -375,8 +398,8 @@ public class DatasetDownloadServlet extends AbstractDatasetDownloadServlet StringUtils.isBlank(oldRelativePathOrNull) ? "" : (oldRelativePathOrNull + "/"); String newRelativePath = pathPrefix + childName; RenderingContext newRenderingContext = - new RenderingContext(renderingContext.getRootDir(), renderingContext - .getUrlPrefix(), newRelativePath); + new RenderingContext(renderingContext.getRootDir(), + renderingContext.getUrlPrefix(), newRelativePath); autoResolveRedirect(response, newRenderingContext); } else { diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/GenericDssLinkReportingPlugin.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/GenericDssLinkReportingPlugin.java index 79ec7098768..08f3fb5ca29 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/GenericDssLinkReportingPlugin.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/GenericDssLinkReportingPlugin.java @@ -37,7 +37,7 @@ public class GenericDssLinkReportingPlugin extends AbstractDssLinkReportingPlugi private static final String MAIN_DATA_SET_PATTERN = "mdsPattern"; - private static final String AUTO_RESOLVE = "autoResolve"; + private static final String FORCE_AUTO_RESOLVE = "forceAutoResolve"; private static final String SESSION_ID = "sessionID"; @@ -86,7 +86,7 @@ public class GenericDssLinkReportingPlugin extends AbstractDssLinkReportingPlugi + dataSet.getDatasetCode()); ArrayList<LinkModel.LinkParameter> parameters = new ArrayList<LinkModel.LinkParameter>(); - parameters.add(new LinkModel.LinkParameter(AUTO_RESOLVE, Boolean.TRUE.toString())); + parameters.add(new LinkModel.LinkParameter(FORCE_AUTO_RESOLVE, Boolean.TRUE.toString())); if (regexOrNull != null) { parameters.add(new LinkModel.LinkParameter(MAIN_DATA_SET_PATTERN, regexOrNull)); -- GitLab