`
Ben.Sin
  • 浏览: 233482 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

[转]BIRT 2.3.1 IFilenameGenerator

 
阅读更多

[转]http://birtworld.blogspot.com/2008/09/naming-exported-files-from-birt.html

 

The Eclipse Business Intelligence and Reporting Tools project is an open-source project focused on the development and delivery of framework tools for reporting and business intelligence within the Eclipse platform.

Thursday, September 11, 2008

Naming Exported files from the BIRT WebViewer

A common question we get on the BIRT news group is how to change the name of an exported document. For instance, exporting to PDF, the developer may wish to have more control on what filename is used for the export. Currently the name used is just the report name followed by the emitter extension (eg MyReport.pdf).

BIRT 2.3.1 which will be released later this month now supplies a solution to this problem. The example web viewer has a setting that can be added to the web.xml that allows you to specify a Java class that will be responsible for generating the name.



<!-- Filename generator class/factory to use -->
<context-param>
<param-name>BIRT_FILENAME_GENERATOR_CLASS
<param-value>org.eclipse.birt.report.utility.filename.DefaultFilenameGenerator
</context-param>









The class specified must implement the IFilenameGenerator interface, which has one method named getFilename. This method is passed four parameters.

baseName – Contains the base filename for the report, with no extension provided.
fileExtension – The extension for the selected operation (ppt for export to PowerPoint).
outputType – The operation being executed. More on this parameter later.
options – Specific options for the operation.

The instance of the IFilenameGenerator is called in multiple locations within the example viewer. When you export the report:



When you export the report data:



And when you use the /document servlet mapping, for example:

http://localhost:8080/WebViewerExample/document?__report=OrderDetails.rptdesign





This URL will run the report and download the rptdocument.

Suppose you wish to have the date in your filename, when exporting the report. To do this, create a class with the following code:


package my.filename.generator;
import java.util.Date;
import java.util.Map;
import org.eclipse.birt.report.utility.filename.*;
public class MyFilenameGenerator implements IFilenameGenerator{
 
 public static final String DEFAULT_FILENAME = "BIRTReport"; 
 
 public String getFilename( String baseName, String extension, String outputType, Map options )
 {
  return makeFileName( baseName, extension );
 }
 public static String makeFileName( String fileName, String extensionName )
 {
  String baseName = fileName;
  if (baseName == null || baseName.trim().length() <= 0)
  {
   baseName = DEFAULT_FILENAME;
  }
  
  // check whether the file name contains non US-ASCII characters
  for (int i = 0; i < baseName.length(); i++) {
   char c = baseName.charAt(i);
 
   // char is from 0-127
   if (c < 0x00 || c >= 0x80) {
    baseName = DEFAULT_FILENAME;
    break;
   }
  }
  
  // append extension name
  if (extensionName != null && extensionName.length() > 0) {
   baseName += (new Date()).toString() + "." + extensionName; 
  }
  return baseName;
 }
}





If you check the source, you will notice this is just the default class with one modification.

   baseName += (new Date()).toString() + "." + extensionName; 



Which just inserts the date into the output.

You can also check the operation type if you wish to set the name based on the operation. Currently the available options for outputType are:

IFilenameGenerator.OUTPUT_TYPE_EXPORT – When exporting report to one of the supported formats.
IFilenameGenerator.OUTPUT_TYPE_DATA_EXTRACTION – When exporting report data.
IFilenameGenerator.OUTPUT_TYPE_REPORT_DOCUMENT – When using the document servlet mapping.

This example is located here .

Vincent Petry from the dev team has also uploaded a Birt Viewer 2.3 User Reference, which describes the settings and parameters available with the example web viewer. This document is informative and is located here .

If you wish to build your own version of the filename generator, make sure to include viewservlets.jar from the WebViewerExample\WEB_INF\lib directory in your build path.

16 comments:

Yasin Mallı said...

Hi.
I want to cancel 'ppt' exporting option and some other changing from default options.
Where can I find configuration files about that points.
Please help me.

Jason Weathersby said...

Yasin,

If you want to delete the ppt export option remove the ppt emitter plugin
org.eclipse.birt.report.engine.emitter.ppt_version.jar from the WEB-INF/platform/plugins directory.

Jason

Manish said...

Hi,

I want to use this class to construct report name based on report parameters. How could I possibly access report parameters from within the class MyFileNameGenerator.

Please clarify.

Jason Weathersby said...

Manish,

Look at the options in
public String getFilename( String baseName, String extension, String outputType, Map options )

I believe the HttpRequest is stored in the options as httpRequest which should contain your parameter values.

Manish said...

Thanks Jason. Your suggestion worked for me.

Corrado said...

Please Help to install plugin...

i Try with your bulded class and a rebuilded by me (i verify the correct reference).

When i copy the class in WebViewerExample\WEB-INF\lib\my\filename\generator\MyFilenameGenerator.class

in birt 2.3.2 runtime, and add the line you specified in the web.xml, the viewer response with an error:

HTTP Status 404 -

--------------------------------------------------------------------------------

type Status report

message

description The requested resource () is not available.


--------------------------------------------------------------------------------

Apache Tomcat/5.5.27

what i can do to solve this problem? excuse me but i'm nibble on plugin for birt!

CP

Jason Weathersby said...

Corrado,

If your class is not jarred try moving it to
WebViewerExample\WEB-INF\classes\my\filename\generator\MyFilenameGenerator.class

Also did you set the web.xml entry
BIRT_FILENAME_GENERATOR_CLASS to
my.filename.generator.MyFilenameGenerator

al91206 said...

Jason,

You said "BIRT 2.3.1 which will be released later this month now supplies a solution to this problem."

When I export from the interactive viewer, the filename is simply iv.extension - not even the reportname.

If this is fixed - can you let us know where the option is set - or where to configure this?

Thanks!

Al

Jason Weathersby said...

This feature should make it in the Actuate 11 version. Or at least the name that corresponds to the report name.

Suresh said...

is it possible in BIRT 2.2.1

Jason Weathersby said...

Suresh,

I believe this is only supported with 2.3.1 and above.

Jason

Bernhard said...

Hi,

I know, the original post is > 2 years old now, but I wonder if this is supposed to work with BIRT 2.6.1, Java 6 and Tomcat 6.0 ?

I'm struggling getting this to work. I've tried the following so far:

1. change web.xml entry
BIRT_FILENAME_GENERATOR_CLASS to
my.filename.generator.MyFilenameGenerator, restart Tomcat => report viewer still works, thus I assume the viewer will use the default routine if the class is not found
2. create a "classes" dir below the WEB-INF dir and copy from the example files the structure below the bin dir into classes (=> WEB-INF\classes\my\filename\generator\MyFilenameGenerator.class), restart tomcat => error 404 as in Corrado's post
3. check the Tomcat Web Application manager; report viewer is not running. Try starting the report viewer. Message: FAIL - Application at context path /birt-viewer261 could not be started
4. remove MyFilenameGenerator.class, report viewer starts => so there must be something wrong with the class?
5. create a new java project in Eclipse and import all example files. Edit the Build Path Library entry for viewservlets.jar to the file in WEB-INF\lib.
6. In MyFilenameGenerator.java, the line starting with "public String getFilename" shows 2 warnings: "- implements org.eclipse.birt.report.utility.filename.IFilenameGenerator.getFilename
- Map is a raw type. References to generic type Map should be parameterized" => not sure what this means (I am not familiar with JAVA)
7. Ignore warnings, export generated class files to MyFileNameGenerator.jar. JAR Export finished with warnings.
8. Copy MyFileNameGenerator.jar to WEB-INF\lib. Try starting the report viewer. Message: FAIL - Application at context path /birt-viewer261 could not be started

I've seen this solution in 2009 and it worked. Since my requirement is different to the example and I did not figure out how to achieve this without learning JAVA first, I've postponed it hoping this feature would make it into the report viewer. I've no idea what I could have done different those days, except that it was a different BIRT/JAVA/Tomcat environment.

So far, I could use BIRT without knowing much about JAVA - using the Report designer, some javascript, mysql and php was sufficient. My requirement is pretty simple, as in Manish's post: I want to use this class to construct report name based on report parameters. E.g. __filename=xxx just as there is a parameter __title. I could even accept __title as a default filename rather than the name of the rptdesign file. Your answer "Look at the options..." worked fine for Manish - obviously it's easy with JAVA skills.

Any help / hint / clue is highly appreciated.

Jason Weathersby said...

Can you try jarring the package and put the jar in the WEB-INF/lib directory. If you need the jar I can send it to you. I tried this with 2.6.1 and it works fine. My email address is jasonweathersby at windstream dot net. Send me an email.

Jason

Jason Weathersby said...

BTW I modified the code to use a __filename parameter. The source and jar to deploy it can be downloaded here:
http://www.birt-exchange.org/org/devshare/deploying-birt-reports/1322-filename-generator-that-uses-a-url-parameter-to-name-export/

Jason

Bernhard said...

Hi Jason,

thank you very much for the fast response. The provided .jar file works fine. The reason why my .jar file did not work was because of different Java versions in Eclipse (JVM 1.6) and my Tomcat Installation (JVM 1.5). It seems the original .class file was also compiled with 1.6 while the new one is 1.5.
At least, after changing the compiler compliance level to 1.5 in Eclipse, I was able to build the project and export "my own" .jar.

Also lots of thanks for showing how to access the report parameter - I'm sure I would have spent some more hours to figure this out by myself.

abhijit said...

I want to cancel 'ppt' exporting option.I am using "org.eclipse.birt.runtime_3.7.0.v20110615-1818.jar" file. How to do that.

分享到:
评论

相关推荐

    birt 汉化包 多国语言包 2.3.1

    解压到安装birt的eclipse对应文件夹中(plugins) 装好汉化包后 删除eclipse下的configuration目录里org.eclipse.update文件夹 再重启,选择Window-&gt;Preferences-&gt;BIRT-&gt;Preview选择你所需要的语言,再重启就可以了。

    birt报表页面显示汉化文件及过程说明

    在本文中,我们将深入探讨如何实现BIRT报表的页面显示汉化,这涉及到对BIRT原有jar包中的英文资源文件进行替换,以显示中文界面。BIRT(Business Intelligence and Reporting Tools)是Eclipse基金会下的一个开源...

    Birt汉化版本适用于4.2到4.6

    **Birt汉化版本适用于4.2到4.6** Birt(Business Intelligence and Reporting Tools)是一款开源的报告和商业智能平台,它允许开发者创建复杂的报表和数据可视化应用。这个汉化版本是针对Birt 4.2.2至4.6版本的,...

    birt-runtime2.3.1/2.3.2汉化包

    本资源是针对BIRT运行时环境的2.3.1和2.3.2版本的汉化语言包,旨在帮助中文用户更方便地使用BIRT进行报表设计和查看。 "birt-runtime2.3.1/2.3.2汉化包" 是针对BIRT运行时环境的中文语言支持,它包含了所有界面元素...

    转:Birt接收JSP传递的参数值

    在IT行业中,BIRT(Business Intelligence and Reporting Tools)是一款开源的报表系统,广泛应用于Web应用程序中,用于生成复杂的业务报告。而JSP(JavaServer Pages)是Java平台上的动态网页技术,常用于构建用户...

    birt公用CSS样式

    在IT行业中,BIRT(Business Intelligence and Reporting Tools)是一款开源的报表系统,它允许开发者创建丰富的数据可视化和报告。在创建BIRT报表时,CSS(Cascading Style Sheets)样式起到了至关重要的作用,它们...

    Pentaho cde整合Birt

    【标题】:“Pentaho CDE 整合 Birt” 【描述】: Pentaho CDE(Component Development Environment)是Pentaho BI平台中的一个工具,用于构建交互式的Web仪表板。它允许开发者通过拖放的方式创建数据可视化应用,...

    Java Web项目集成开源报表工具BIRT

    Java Web项目集成开源报表工具BIRT 本文将指导读者如何将BIRT开源报表工具集成到已有的Java Web项目中,以Birt4.4.2为例。下面是具体的步骤和知识点: 步骤1:下载BIRT 首先,读者需要下载BIRT的最新版本。在BIRT...

    Birt一步步开发教程

    #### 2.3.1 新建数据集 在“Data Explorer”中,右键单击“Data Sets”并选择“New Data Set”。选择数据源,编写SQL查询或使用Wizard来生成查询,添加需要显示的字段。 #### 2.3.2 创建表 同样,在设计区域拖放...

    Eclipse Birt源码4.5.0

    Eclipse BIRT(Business Intelligence and Reporting Tools)是开源的报告生成平台,主要用于开发复杂的报表和数据可视化应用。它被设计成可嵌入到各种应用程序中,支持Java和Web环境,提供了一个灵活的、基于组件的...

    birt的jar包

    BIRT(Business Intelligence and Reporting Tools)是Eclipse基金会下的一个开源报表系统项目,主要用于生成复杂的商业报告和数据可视化。在Java环境下,BIRT提供了一套API和可扩展的框架,使得开发者可以轻松地将...

    eclipse3.7 birt 汉化包

    Eclipse 3.7 Birt 汉化包是一个针对Eclipse集成开发环境(IDE)中的Business Intelligence and Reporting Tools(BIRT)插件进行本地化的软件包。BIRT是一款开源的报告生成工具,允许开发者创建复杂的报表并嵌入到...

    在birt中添加js日期控件

    在BIRT(Business Intelligence and Reporting Tools)中添加JavaScript日期控件是提高报表交互性和用户体验的重要步骤。本教程将详细介绍如何在BIRT报告中集成My97DatePicker,一个流行的JavaScript日期选择器,以...

    birt_api.CHM

    《BIRT API CHM》是关于BIRT(Business Intelligence and Reporting Tools)开发工具的重要参考资料,主要涵盖BIRT API的详细信息。BIRT是一款开源的报表系统,由Eclipse基金会维护,广泛应用于数据可视化和商业智能...

    birt 报表教程 中文

    ### BIRT报表设计基础知识点详解 #### 一、BIRT报表设计概览 **BIRT (Business Intelligence and Reporting Tools)** 是一款开源的商务智能和报表工具,主要用于开发和部署复杂的数据报表。它提供了丰富的功能来...

    birt api动态创建表格

    在IT行业中,BIRT(Business Intelligence and Reporting Tools)是一个开源的报表系统,它提供了一种强大的方式来设计、创建和展示各种数据报表。本话题主要关注如何利用BIRT API动态创建表格,这是一个在数据可视...

    birt中文帮助文档

    BIRT(Business Intelligence and Reporting Tools)是开源的报表系统,主要设计用于开发嵌入到Web应用程序中的报告。这个“birt中文帮助文档”压缩包包含了关于BIRT的详细信息,旨在帮助用户更好地理解和使用该工具...

    web项目集成birt

    **标题:Web项目集成BIRT** BIRT(Business Intelligence and Reporting Tools)是Eclipse基金会开发的一个开源报表系统,主要用于生成动态、交互式的报告。在Web项目中集成BIRT,可以帮助开发者提供强大的数据可视...

    BIRT 3.7 Report Design

    1. 打开 Eclipse 并转到“Help”&gt;“Software Updates…”。 2. 在“Available Software”选项卡中,点击“Add Site...”按钮。 3. 输入 BIRT 更新站点的 URL([http://download.eclipse.org/tools/birt/updates]...

Global site tag (gtag.js) - Google Analytics