Skip to content
Snippets Groups Projects
Commit 770e8cb7 authored by anttil's avatar anttil
Browse files

SSDM-4839: Show information message instead of error in dataset detail view...

SSDM-4839: Show information message instead of error in dataset detail view when there's no file metadata stored in pathinfo db.

SVN: 37992
parent 494b94d0
No related branches found
No related tags found
No related merge requests found
Showing
with 141 additions and 3 deletions
......@@ -72,6 +72,8 @@ public class DatasetDownloadServlet extends AbstractDatasetDownloadServlet
static final String DISABLE_LINKS = "disableLinks";
static final String IS_LINK_DATASET = "is_link_data";
private static String DOWNLOAD_URL;
static void setDownloadUrl(String downloadUrl)
......@@ -121,10 +123,13 @@ public class DatasetDownloadServlet extends AbstractDatasetDownloadServlet
private final boolean forceReferrerDomainOnEmptyDownloadURL;
private final boolean isLinkData;
public RequestParams(String dataSetCode, String pathInfo, String sessionIdOrNull,
String urlPrefixWithDataset, String displayMode, boolean autoResolve,
String mainDataSetPathOrNull, String mainDataSetPatternOrNull,
boolean forceAutoResolve, boolean disableLinks, String referrerDomain, boolean forceReferrerDomainOnEmptyDownloadURL)
boolean forceAutoResolve, boolean disableLinks, String referrerDomain, boolean forceReferrerDomainOnEmptyDownloadURL,
boolean isLinkData)
{
this.dataSetCode = dataSetCode;
this.pathInfo = pathInfo;
......@@ -138,6 +143,7 @@ public class DatasetDownloadServlet extends AbstractDatasetDownloadServlet
this.disableLinks = disableLinks;
this.referrerDomain = referrerDomain;
this.forceReferrerDomainOnEmptyDownloadURL = forceReferrerDomainOnEmptyDownloadURL;
this.isLinkData = isLinkData;
}
public boolean isAutoResolve()
......@@ -200,6 +206,11 @@ public class DatasetDownloadServlet extends AbstractDatasetDownloadServlet
return forceReferrerDomainOnEmptyDownloadURL;
}
public boolean isLinkData()
{
return isLinkData;
}
}
@Override
......@@ -207,9 +218,11 @@ public class DatasetDownloadServlet extends AbstractDatasetDownloadServlet
throws ServletException, IOException
{
IRendererFactory rendererFactory = null;
boolean isLinkData = false;
try
{
RequestParams requestParams = parseRequestURL(request, DATA_STORE_SERVER_WEB_APPLICATION_NAME);
isLinkData = requestParams.isLinkData();
rendererFactory = createRendererFactory(requestParams.getDisplayMode());
HttpSession session = tryGetOrCreateSession(request, requestParams.tryGetSessionId());
......@@ -232,12 +245,16 @@ public class DatasetDownloadServlet extends AbstractDatasetDownloadServlet
if (!isPathInfoEnabled)
{
printEmptyPage(rendererFactory, request, response);
} else if (isLinkData)
{
printMessage("No content information is stored with this linked dataset.", rendererFactory, response);
} else
{
printError(rendererFactory, request, response, e);
}
}
}
private void printResponse(final HttpServletResponse response,
......@@ -381,9 +398,11 @@ public class DatasetDownloadServlet extends AbstractDatasetDownloadServlet
}
//
boolean isLinkData = request.getParameter(IS_LINK_DATASET).equals("true");
return new RequestParams(dataSetCode, pathInfo, sessionIDOrNull, urlPrefixWithDataset,
displayMode, autoResolve, mainDataSetPathOrNull, mainDataSetPatternOrNull,
forceAutoResolve, disableLinks, referrerDomain, forceReferrerDomainOnEmptyDownloadURL);
forceAutoResolve, disableLinks, referrerDomain, forceReferrerDomainOnEmptyDownloadURL, isLinkData);
}
private static String getDisplayMode(HttpServletRequest request)
......@@ -405,6 +424,18 @@ public class DatasetDownloadServlet extends AbstractDatasetDownloadServlet
writer.close();
}
private void printMessage(String message, IRendererFactory rendererFactory,
final HttpServletResponse response) throws IOException
{
response.setContentType(rendererFactory.getContentType());
PrintWriter writer = response.getWriter();
IMessageRenderer renderer = rendererFactory.createMessageRenderer();
renderer.setWriter(writer);
renderer.printMessage(message);
writer.flush();
writer.close();
}
private void printError(IRendererFactory rendererFactory, final HttpServletRequest request,
final HttpServletResponse response, Exception exception) throws IOException
{
......
/*
* Copyright 2010 ETH Zuerich, CISD
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package ch.systemsx.cisd.openbis.dss.generic.server;
import java.io.PrintWriter;
/**
* {@link IErrorRenderer} displaying error as HTML page.
*
* @author Izabela Adamczyk
*/
public class HTMLMessageRenderer implements IMessageRenderer
{
private PrintWriter writer;
@Override
public void setWriter(PrintWriter writer)
{
this.writer = writer;
}
@Override
public void printMessage(String message)
{
writer.println("<html><body>");
writer.println(message);
writer.println("</body></html>");
}
}
\ No newline at end of file
/*
* Copyright 2008 ETH Zuerich, CISD
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package ch.systemsx.cisd.openbis.dss.generic.server;
public interface IMessageRenderer extends IWriterInjector
{
public void printMessage(String message);
}
......@@ -28,4 +28,6 @@ public interface IRendererFactory
public IDirectoryRenderer createDirectoryRenderer(RenderingContext context);
public IErrorRenderer createErrorRenderer();
public IMessageRenderer createMessageRenderer();
}
......@@ -100,4 +100,25 @@ public class PlainTextRendererFactory implements IRendererFactory
}
}
@Override
public IMessageRenderer createMessageRenderer()
{
return new IMessageRenderer()
{
private PrintWriter writer;
@Override
public void printMessage(String message)
{
writer.println(message);
}
@Override
public void setWriter(PrintWriter writer)
{
this.writer = writer;
}
};
}
}
......@@ -41,4 +41,11 @@ public class SimpleHTMLRendererFactory implements IRendererFactory
return new HTMLErrorRenderer();
}
@Override
public IMessageRenderer createMessageRenderer()
{
return new HTMLMessageRenderer();
}
}
......@@ -21,6 +21,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericVie
import ch.systemsx.cisd.openbis.generic.shared.basic.GenericSharedConstants;
import ch.systemsx.cisd.openbis.generic.shared.basic.URLMethodWithParameters;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetKind;
/**
* @author Franz-Josef Elmer
......@@ -37,6 +38,8 @@ public class DataSetUtils
private static final String DISABLE_LINKS = "disableLinks";
private static final String IS_LINK_DATASET = "is_link_data";
public static String createDataViewUrl(AbstractExternalData dataSet, GenericViewModel model,
String modeOrNull, boolean autoResolve, boolean disableLinks)
{
......@@ -64,6 +67,9 @@ public class DataSetUtils
.getMainDataSetPath());
}
}
methodWithParameters.addParameter(IS_LINK_DATASET, DataSetKind.LINK.equals(dataSet.getDataSetKind()));
String url = methodWithParameters.toString();
return url;
}
......
......@@ -20,4 +20,6 @@ public class ContentCopyRecord extends CodeRecord
public String path;
public String hash;
public Long edms_id;
}
......@@ -1191,11 +1191,14 @@ public class DatasetLister extends AbstractLister implements IDatasetLister
if (copyRecord.external_code != null)
{
copies.add(new UrlContentCopy(copyRecord.edms_code, copyRecord.edms_label, copyRecord.edms_address, copyRecord.external_code));
linkDataSet.setExternalCode(copyRecord.external_code);
} else
{
copies.add(new FileSystemContentCopy(copyRecord.edms_code, copyRecord.edms_label, copyRecord.edms_address, copyRecord.edms_address,
copyRecord.hash, copyRecord.path));
}
linkDataSet.setExternalDataManagementSystem(externalDataManagementSystems
.get(copyRecord.edms_id));
}
linkDataSet.setCopies(copies);
......
......@@ -355,7 +355,7 @@ public interface IDatasetListingQuery extends BaseQuery, IPropertyListingQuery
LongSetMapper.class }, fetchSize = FETCH_SIZE)
public List<MetaProjectWithEntityId> getMetaprojects(LongSet entityIds, Long userId);
@Select(sql = "SELECT edms.code AS edms_code, edms.label AS edms_label, edms.address AS edms_address, "
@Select(sql = "SELECT edms.id AS edms_id, edms.code AS edms_code, edms.label AS edms_label, edms.address AS edms_address, "
+ " cc.external_code AS external_code, cc.path as path, cc.git_commit_hash AS hash "
+ " FROM content_copies cc, external_data_management_systems edms "
+ " WHERE cc.edms_id = edms.id AND cc.data_id = ?{1}")
......
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