String outputFormat = request.getParameter("outputType");
logger.debug("outputType -- [" + outputFormat + "]");
logger.debug( "runReport(): report design opened successfully.");
// Create task to run and render the report,
IRunAndRenderTask task = birtReportEngine.createRunAndRenderTask(design);
task.setLocale(locale);
logger.debug( "runReport(): RunAndRenderTask created successfully.");
// Set parameters for the report
Map reportParams = findReportParams(request, design);
String requestConnectionName = (String) request.getParameter(CONNECTION_NAME);
logger.debug("requestConnectionName:" + requestConnectionName);
IDataSource ds = findDataSource(request.getSession(), userId, documentId,requestConnectionName);
if (ds != null) {
logger.debug("DataSource founded.");
if (ds.checkIsJndi() ) {
if (ds.checkIsMultiSchema()){
String schema=null;
try {
String attrname=ds.getSchemaAttribute();
if (attrname!=null) schema = (String)profile.getUserAttribute(attrname);
} catch (EMFInternalError e) {
logger.error("Cannot retrive ENTE", e);
}
reportParams.put("connectionName", ds.getJndi()+schema);
}else{
reportParams.put("connectionName", ds.getJndi());
}
} else {
reportParams.put("driver", ds.getDriver());
reportParams.put("url", ds.getUrlConnection());
reportParams.put("user", ds.getUser());
reportParams.put("pwd", (ds.getPwd().equals("")) ? " " : ds.getPwd());
}
}
reportParams.put("KpiDSXmlUrl", kpiUrl);
//gets static resources with SBI_RESOURCE_PATH system's parameter
String resPathJNDI = EnginConf.getInstance().getResourcePath();
String resourcePath = resPathJNDI+"/img/";
String entity=(String)reportParams.get(SpagoBIConstants.SBI_ENTITY);
// IF exist an ENTITY parameter concat to resourcePath
if (entity!=null && entity.length()>0){
resourcePath=resourcePath.concat(entity+"/");
}
logger.debug("SetUp resourcePath:"+resourcePath);
reportParams.put("SBI_RESOURCE_PATH", resourcePath);
task.setParameterValues(reportParams);
task.validateParameters();
String templateFileName = request.getParameter("template_file_name");
logger.debug("templateFileName -- [" + templateFileName + "]");
if (templateFileName == null || templateFileName.trim().equals(""))
templateFileName = "report";
IRenderOption renderOption = null;
if (outputFormat != null && outputFormat.equalsIgnoreCase(IBirtConstants.PDF_RENDER_FORMAT)) {
renderOption = new PDFRenderOption();
renderOption.setOutputFormat(IBirtConstants.PDF_RENDER_FORMAT);
//renderOption.setSupportedImageFormats("JPG;jpg;PNG;png;BMP;bmp;SVG;svg;GIF;gif");
response.setContentType("application/pdf");
response.setHeader("Content-disposition", "inline; filename=" + templateFileName + ".pdf");
} else if (outputFormat != null && outputFormat.equalsIgnoreCase(IBirtConstants.HTML_RENDER_FORMAT)) {
renderOption = prepareHtmlRenderOption(servletContext, request);
renderOption.setOutputFormat(IBirtConstants.HTML_RENDER_FORMAT);
response.setHeader("Content-Type", "text/html");
response.setContentType("text/html");
} else if (outputFormat != null && outputFormat.equalsIgnoreCase(IBirtConstants.DOC_RENDER_FORMAT)) {
renderOption = prepareHtmlRenderOption(servletContext, request);
renderOption.setOutputFormat(IBirtConstants.DOC_RENDER_FORMAT);
// renderOption.setOutputFileName(templateFileName + ".doc");
response.setContentType("application/msword");
response.setHeader("Content-disposition", "inline; filename=" + templateFileName + ".doc");
} else if (outputFormat != null && outputFormat.equalsIgnoreCase(RTF_FORMAT)) {
renderOption = prepareHtmlRenderOption(servletContext, request);
renderOption.setOutputFormat(RTF_FORMAT);
response.setContentType("application/rtf");
response.setHeader("Content-disposition", "inline; filename=" + templateFileName + ".rtf");
} else if (outputFormat != null && outputFormat.equalsIgnoreCase("xls")) {
renderOption = prepareHtmlRenderOption(servletContext, request);
renderOption.setOutputFormat("xls");
// renderOption.setOutputFileName(templateFileName + ".xls");
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "inline; filename=" + templateFileName + ".xls");
} else if (outputFormat != null && outputFormat.equalsIgnoreCase("ppt")) {
renderOption = prepareHtmlRenderOption(servletContext, request);
renderOption.setOutputFormat("ppt");
// renderOption.setOutputFileName(templateFileName + ".ppt");
response.setContentType("application/vnd.ms-powerpoint");
response.setHeader("Content-disposition", "inline; filename=" + templateFileName + ".ppt");
} else if (outputFormat != null && outputFormat.equalsIgnoreCase(IBirtConstants.POSTSCRIPT_RENDER_FORMAT)) {
renderOption = new PDFRenderOption();
renderOption.setOutputFormat(IBirtConstants.POSTSCRIPT_RENDER_FORMAT);
// renderOption.setOutputFileName(templateFileName + ".ps");
response.setHeader("Content-disposition", "inline; filename=" + templateFileName + ".ps");
} else if (outputFormat != null && outputFormat.equalsIgnoreCase(DataExtractionParameterUtil.EXTRACTION_FORMAT_CSV)) {
logger.debug(" Output format parameter is CSV. Create document obj .");
prepareCSVRender(reportParams, request, design, userId, documentId, profile, kpiUrl, response);
return;
}else {
logger.debug(" Output format parameter not set or not valid. Using default output format: HTML.");
outputFormat = IBirtConstants.HTML_RENDER_FORMAT;
renderOption = prepareHtmlRenderOption(servletContext, request);
renderOption.setOutputFormat(IBirtConstants.HTML_RENDER_FORMAT);
response.setContentType("text/html");
response.setHeader("Content-Type", "text/html");
}
Map userProfileAttrs = UserProfileUtils.getProfileAttributes( profile );
Map context = getTaskContext(userId, params, request, resPathJNDI, userProfileAttrs);
//Map context = BirtUtility.getAppContext(request);
task.setAppContext(context);
renderOption.setOutputStream((OutputStream) response.getOutputStream());
task.setRenderOption(renderOption);
// setting HTML header if output format is HTML: this is necessary in order to inject the document.domain directive
// commented by Davide Zerbetto on 12/10/2009: there are problems with MIF (Ext ManagedIFrame library) library
/*
if (outputFormat.equalsIgnoreCase(IBirtConstants.HTML_RENDER_FORMAT)) {
((HTMLRenderOption) renderOption).setEmbeddable(true);
injectHTMLHeader(response);
}
*/
try {
task.run();
} catch(Exception e) {
logger.error("Error while running the report: " + e);
}
task.close();
// commented by Davide Zerbetto on 12/10/2009: there are problems with MIF (Ext ManagedIFrame library) library
/*
if (outputFormat.equalsIgnoreCase(IBirtConstants.HTML_RENDER_FORMAT)) {
injectHTMLFooter(response);