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

BIS-224 / SP-333 : Simplified, Flexible Graph Generation

SVN: 28461
parent 540366f9
No related branches found
No related tags found
No related merge requests found
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
package ch.systemsx.cisd.openbis.dss.generic.server; package ch.systemsx.cisd.openbis.dss.generic.server;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.Date; import java.util.Date;
import java.util.Enumeration; import java.util.Enumeration;
...@@ -27,9 +28,12 @@ import javax.servlet.http.HttpServletResponse; ...@@ -27,9 +28,12 @@ import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.common.exceptions.UserFailureException;
import ch.systemsx.cisd.common.spring.ExposablePropertyPlaceholderConfigurer;
import ch.systemsx.cisd.openbis.dss.generic.server.graph.ITabularDataGraph; import ch.systemsx.cisd.openbis.dss.generic.server.graph.ITabularDataGraph;
import ch.systemsx.cisd.openbis.dss.generic.server.graph.TabularDataGraphCollectionConfiguration; import ch.systemsx.cisd.openbis.dss.generic.server.graph.TabularDataGraphCollectionConfiguration;
import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider;
import ch.systemsx.cisd.openbis.dss.generic.shared.utils.ITabularData; import ch.systemsx.cisd.openbis.dss.generic.shared.utils.ITabularData;
import ch.systemsx.cisd.openbis.dss.generic.shared.utils.SessionWorkspaceUtil;
/** /**
* @author Chandrasekhar Ramakrishnan * @author Chandrasekhar Ramakrishnan
...@@ -77,7 +81,7 @@ public abstract class AbstractTabularDataGraphServlet extends AbstractDatasetDow ...@@ -77,7 +81,7 @@ public abstract class AbstractTabularDataGraphServlet extends AbstractDatasetDow
public RequestParams(HttpServletRequest request) public RequestParams(HttpServletRequest request)
{ {
sessionId = getRequiredParameter(request, Utils.SESSION_ID_PARAM); sessionId = getRequiredParameter(request, Utils.SESSION_ID_PARAM);
datasetCode = getRequiredParameter(request, DATASET_CODE_PARAM); datasetCode = getOptionalParameter(request, DATASET_CODE_PARAM);
filePathOrNull = getOptionalParameter(request, FILE_PATH_PARAM); filePathOrNull = getOptionalParameter(request, FILE_PATH_PARAM);
graphName = getOptionalParameter(request, GRAPH_TYPE_CODE, "dynamic"); graphName = getOptionalParameter(request, GRAPH_TYPE_CODE, "dynamic");
width = getIntParam(request, WIDTH_PARAM, 0); width = getIntParam(request, WIDTH_PARAM, 0);
...@@ -179,6 +183,30 @@ public abstract class AbstractTabularDataGraphServlet extends AbstractDatasetDow ...@@ -179,6 +183,30 @@ public abstract class AbstractTabularDataGraphServlet extends AbstractDatasetDow
String datasetCode = params.datasetCode; String datasetCode = params.datasetCode;
String filePathOrNull = params.filePathOrNull; String filePathOrNull = params.filePathOrNull;
if (datasetCode == null)
{
ExposablePropertyPlaceholderConfigurer config =
(ExposablePropertyPlaceholderConfigurer) ServiceProvider
.getApplicationContext()
.getBean(
ExposablePropertyPlaceholderConfigurer.PROPERTY_CONFIGURER_BEAN_NAME);
String workspace =
config.getResolvedProps().getProperty(
SessionWorkspaceUtil.SESSION_WORKSPACE_ROOT_DIR_KEY);
if (workspace == null)
{
workspace = SessionWorkspaceUtil.SESSION_WORKSPACE_ROOT_DIR_DEFAULT;
}
File sessionWorkspace =
new SessionWorkspaceProvider(new File(workspace), sessionId)
.getSessionWorkspace();
filePathOrNull = sessionWorkspace.getAbsolutePath() + "/" + filePathOrNull;
}
// Get the session and user from the request // Get the session and user from the request
HttpSession session = tryGetOrCreateSession(request, sessionId); HttpSession session = tryGetOrCreateSession(request, sessionId);
if (session == null) if (session == null)
...@@ -189,7 +217,18 @@ public abstract class AbstractTabularDataGraphServlet extends AbstractDatasetDow ...@@ -189,7 +217,18 @@ public abstract class AbstractTabularDataGraphServlet extends AbstractDatasetDow
// Check that the user has view access to the data // Check that the user has view access to the data
// NOTE: This throws an exception -- it may be nicer to return an image for a // NOTE: This throws an exception -- it may be nicer to return an image for a
// non-accessible dataset... // non-accessible dataset...
ensureDatasetAccessible(datasetCode, session, sessionId); if (datasetCode != null)
{
ensureDatasetAccessible(datasetCode, session, sessionId);
} else
{
if (filePathOrNull == null || new File(filePathOrNull).exists() == false)
{
throw new UserFailureException("File '" + filePathOrNull
+ "' is not accessible.");
}
}
// Get the tabular data // Get the tabular data
ITabularData fileLines = getDatasetLines(request, datasetCode, filePathOrNull); ITabularData fileLines = getDatasetLines(request, datasetCode, filePathOrNull);
......
...@@ -67,8 +67,6 @@ public class DynamicFileTabularDataGraphServlet extends FileTabularDataGraphServ ...@@ -67,8 +67,6 @@ public class DynamicFileTabularDataGraphServlet extends FileTabularDataGraphServ
DynamicTabularDataGraphCollectionConfiguration config = DynamicTabularDataGraphCollectionConfiguration config =
new DynamicTabularDataGraphCollectionConfiguration(); new DynamicTabularDataGraphCollectionConfiguration();
config.setColumnDelimiter(commonConfig.getColumnDelimiter());
Properties props = new Properties(); Properties props = new Properties();
if (name != null) if (name != null)
...@@ -85,6 +83,7 @@ public class DynamicFileTabularDataGraphServlet extends FileTabularDataGraphServ ...@@ -85,6 +83,7 @@ public class DynamicFileTabularDataGraphServlet extends FileTabularDataGraphServ
config.setImageHeight(graphConfig.getImageHeight()); config.setImageHeight(graphConfig.getImageHeight());
config.setImageWidth(graphConfig.getImageWidth()); config.setImageWidth(graphConfig.getImageWidth());
config.setColumnDelimiter(commonConfig.getColumnDelimiter());
} else } else
{ {
name = DYNAMIC_GRAPH_NAME; name = DYNAMIC_GRAPH_NAME;
...@@ -195,6 +194,7 @@ public class DynamicFileTabularDataGraphServlet extends FileTabularDataGraphServ ...@@ -195,6 +194,7 @@ public class DynamicFileTabularDataGraphServlet extends FileTabularDataGraphServ
protected synchronized void doSpecificInitialization(Enumeration<String> parameterNames, protected synchronized void doSpecificInitialization(Enumeration<String> parameterNames,
ServletConfig servletConfig) ServletConfig servletConfig)
{ {
if (commonConfig == null) if (commonConfig == null)
{ {
String propertiesFilePath = servletConfig.getInitParameter(PROPERTIES_FILE_KEY); String propertiesFilePath = servletConfig.getInitParameter(PROPERTIES_FILE_KEY);
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
package ch.systemsx.cisd.openbis.dss.generic.server; package ch.systemsx.cisd.openbis.dss.generic.server;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
...@@ -49,16 +50,32 @@ public class FileTabularDataGraphServlet extends AbstractTabularDataGraphServlet ...@@ -49,16 +50,32 @@ public class FileTabularDataGraphServlet extends AbstractTabularDataGraphServlet
RequestParams requestParams = new RequestParams(request); RequestParams requestParams = new RequestParams(request);
IHierarchicalContentProvider contentProvider = File file;
applicationContext.getHierarchicalContentProvider(requestParams.getSessionId()); IHierarchicalContent content = null;
IHierarchicalContent content = contentProvider.asContent(dataSetCode); try
IHierarchicalContentNode node = content.getNode(pathOrNull); {
if (dataSetCode == null)
ITabularData data = {
CsvFileReaderHelper.getDatasetFileLines(node.getFile(), getConfiguration(request)); file = new File(pathOrNull);
} else
content.close(); {
IHierarchicalContentProvider contentProvider =
applicationContext.getHierarchicalContentProvider(requestParams
.getSessionId());
content = contentProvider.asContent(dataSetCode);
IHierarchicalContentNode node = content.getNode(pathOrNull);
file = node.getFile();
}
return data; ITabularData data =
CsvFileReaderHelper.getDatasetFileLines(file, getConfiguration(request));
return data;
} finally
{
if (content != null)
{
content.close();
}
}
} }
} }
...@@ -23,14 +23,14 @@ import ch.systemsx.cisd.common.filesystem.QueueingPathRemoverService; ...@@ -23,14 +23,14 @@ import ch.systemsx.cisd.common.filesystem.QueueingPathRemoverService;
/** /**
* Utility functions for session workspace. * Utility functions for session workspace.
* *
* @author Franz-Josef Elmer * @author Franz-Josef Elmer
*/ */
public class SessionWorkspaceUtil public class SessionWorkspaceUtil
{ {
private static final String SESSION_WORKSPACE_ROOT_DIR_KEY = "session-workspace-root-dir"; public static final String SESSION_WORKSPACE_ROOT_DIR_KEY = "session-workspace-root-dir";
private static final String SESSION_WORKSPACE_ROOT_DIR_DEFAULT = "data/sessionWorkspace"; public static final String SESSION_WORKSPACE_ROOT_DIR_DEFAULT = "data/sessionWorkspace";
public static File getSessionWorkspace(Properties properties) public static File getSessionWorkspace(Properties properties)
{ {
......
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