Skip to content
Snippets Groups Projects
Commit 2035a8d7 authored by cramakri's avatar cramakri
Browse files

LMS-1793 Added code to force auto resolve.

SVN: 18179
parent d7a18e70
No related branches found
No related tags found
No related merge requests found
......@@ -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
{
......
......@@ -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));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment