- 浏览: 78544 次
- 来自: ...
最近访客 更多访客>>
最新评论
-
Triffic:
相见恨晚啊,坚持看完
四个开源商业智能平台比较(三) -
java-007:
Thank you, the landlord, a good ...
商业智能平台研究(九) ETL 中的数据质量控制 -
zouming_3:
感觉jaspersoft做的要好看些。
四个开源商业智能平台比较(三)
以下这个例子来自birt 的官方教材,我没有改动任何的信息.
这个例子演示了从建立DataSource ,然后建立DataSet , 动态的根据输入数据输出report template .
关于Birt 的 API , 在 eclipse 的 help content 里面有,3.3 支持新的基于topic 的search ,可以帮我们简化搜索的topic , 其中有五个API (一共是5个) : Report Object Model API , Report Engine API , Birt Report Scripting API , Open Data Access API , Data Engine API .另外也提供详细的讲解每一个report 的元素的意思.非常好的一份资料 .
DECreateDynamicTable.java 例子code :
import java.io.IOException;
import java.util.ArrayList;
import org.eclipse.birt.core.framework.Platform;
import org.eclipse.birt.report.model.api.CellHandle;
import org.eclipse.birt.report.model.api.DataItemHandle;
import org.eclipse.birt.report.model.api.DesignConfig;
import org.eclipse.birt.report.model.api.ElementFactory;
import org.eclipse.birt.report.model.api.IDesignEngine;
import org.eclipse.birt.report.model.api.IDesignEngineFactory;
import org.eclipse.birt.report.model.api.LabelHandle;
import org.eclipse.birt.report.model.api.OdaDataSetHandle;
import org.eclipse.birt.report.model.api.OdaDataSourceHandle;
import org.eclipse.birt.report.model.api.PropertyHandle;
import org.eclipse.birt.report.model.api.ReportDesignHandle;
import org.eclipse.birt.report.model.api.RowHandle;
import org.eclipse.birt.report.model.api.SessionHandle;
import org.eclipse.birt.report.model.api.StructureFactory;
import org.eclipse.birt.report.model.api.TableHandle;
import org.eclipse.birt.report.model.api.activity.SemanticException;
import org.eclipse.birt.report.model.api.elements.structures.ComputedColumn;
import com.ibm.icu.util.ULocale;
/**
* Dynamic Table BIRT Design Engine API (DEAPI) demo.
*/
public class DECreateDynamicTable
{
ReportDesignHandle designHandle = null;
ElementFactory designFactory = null;
StructureFactory structFactory = null;
public static void main( String[] args )
{
try
{
DECreateDynamicTable de = new DECreateDynamicTable();
ArrayList al = new ArrayList();
al.add("OFFICECODE");
al.add("CITY");
al.add("COUNTRY");
de.buildReport(al, "From Offices" );
}
catch ( IOException e )
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch ( SemanticException e )
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
void buildDataSource( ) throws SemanticException
{
OdaDataSourceHandle dsHandle = designFactory.newOdaDataSource(
"Data Source", "org.eclipse.birt.report.data.oda.jdbc" );
dsHandle.setProperty( "odaDriverClass",
"org.eclipse.birt.report.data.oda.sampledb.Driver" );
dsHandle.setProperty( "odaURL", "jdbc:classicmodels:sampledb" );
dsHandle.setProperty( "odaUser", "ClassicModels" );
dsHandle.setProperty( "odaPassword", "" );
designHandle.getDataSources( ).add( dsHandle );
}
void buildDataSet(ArrayList cols, String fromClause ) throws SemanticException
{
OdaDataSetHandle dsHandle = designFactory.newOdaDataSet( "ds",
"org.eclipse.birt.report.data.oda.jdbc.JdbcSelectDataSet" );
dsHandle.setDataSource( "Data Source" );
String qry = "Select ";
for( int i=0; i < cols.size(); i++){
qry += " " + cols.get(i);
if( i != (cols.size() -1) ){
qry += ",";
}
}
qry += " " + fromClause;
dsHandle.setQueryText( qry );
designHandle.getDataSets( ).add( dsHandle );
}
void buildReport(ArrayList cols, String fromClause ) throws IOException, SemanticException
{
//Configure the Engine and start the Platform
DesignConfig config = new DesignConfig( );
config.setProperty("BIRT_HOME", "C:/birt-runtime-2_1_1/birt-runtime-2_1_1/ReportEngine");
IDesignEngine engine = null;
try{
Platform.startup( config );
IDesignEngineFactory factory = (IDesignEngineFactory) Platform
.createFactoryObject( IDesignEngineFactory.EXTENSION_DESIGN_ENGINE_FACTORY );
engine = factory.createDesignEngine( config );
}catch( Exception ex){
ex.printStackTrace();
}
SessionHandle session = engine.newSessionHandle( ULocale.ENGLISH ) ;
try{
//open a design or a template
designHandle = session.openDesign("c:/tmp/testdeapi.rptdesign");
designFactory = designHandle.getElementFactory( );
buildDataSource();
buildDataSet(cols, fromClause);
TableHandle table = designFactory.newTableItem( "table", cols.size() );
table.setWidth( "100%" );
table.setDataSet( designHandle.findDataSet( "ds" ) );
PropertyHandle computedSet = table.getColumnBindings( );
ComputedColumn cs1 = null;
for( int i=0; i < cols.size(); i++){
cs1 = StructureFactory.createComputedColumn();
cs1.setName((String)cols.get(i));
cs1.setExpression("dataSetRow[\"" + (String)cols.get(i) + "\"]");
computedSet.addItem(cs1);
}
// table header
RowHandle tableheader = (RowHandle) table.getHeader( ).get( 0 );
for( int i=0; i < cols.size(); i++){
LabelHandle label1 = designFactory.newLabel( (String)cols.get(i) );
label1.setText((String)cols.get(i));
CellHandle cell = (CellHandle) tableheader.getCells( ).get( i );
cell.getContent( ).add( label1 );
}
// table detail
RowHandle tabledetail = (RowHandle) table.getDetail( ).get( 0 );
for( int i=0; i < cols.size(); i++){
CellHandle cell = (CellHandle) tabledetail.getCells( ).get( i );
DataItemHandle data = designFactory.newDataItem( "data_"+(String)cols.get(i) );
data.setResultSetColumn( (String)cols.get(i));
cell.getContent( ).add( data );
}
designHandle.getBody( ).add( table );
// Save the design and close it.
designHandle.saveAs( "c:/temp/sample.rptdesign" ); //$NON-NLS-1$
designHandle.close( );
System.out.println("Finished");
}catch (Exception e){
e.printStackTrace();
}
}
}
这个例子一共有四个函数 :
1 . Main 函数: 这个例子简单之处在与它可以直接的运行,只要你修改了
config.setProperty("BIRT_HOME", "C:/birt-runtime-2_1_1/birt-runtime-2_1_1/ReportEngine"); 指向你自己的Birt Runtime 解压后的ReportEngine 目录.
designHandle = session.openDesign("c:/tmp/testdeapi.rptdesign"); 你可以从Birt 里面建立一个新的Report template.然后指向这个report 就可以了
designHandle.saveAs( "c:/temp/sample.rptdesign" ); //$NON-NLS-1$ 指定一个你想保存的位置,c:/temp 目录存在你才能够保存到c:/temp 目录下.
2 . buildDataSource 函数把一个ReportDesignHandle 的 Data Source 初始化, setProperties 左边的String 是不能变的,Data Source 的名字可以随便取,取DataSet 的时候要根据这个名字来取.
3 . buildDataSet 通过拼sql 的方式 ,来build DataSet, 注意sql 别拼错了.
4 . buildReport 注意element 的初始化顺序.在所有的DataItem 外面都是一层Cell,Cell 外面才是row .这个例子使用的row 来拼成table 的,也可以用column 来拼,相对应的数据处理也是一个column 一个 column 的处理的了.
这个例子演示了从建立DataSource ,然后建立DataSet , 动态的根据输入数据输出report template .
关于Birt 的 API , 在 eclipse 的 help content 里面有,3.3 支持新的基于topic 的search ,可以帮我们简化搜索的topic , 其中有五个API (一共是5个) : Report Object Model API , Report Engine API , Birt Report Scripting API , Open Data Access API , Data Engine API .另外也提供详细的讲解每一个report 的元素的意思.非常好的一份资料 .
DECreateDynamicTable.java 例子code :
import java.io.IOException;
import java.util.ArrayList;
import org.eclipse.birt.core.framework.Platform;
import org.eclipse.birt.report.model.api.CellHandle;
import org.eclipse.birt.report.model.api.DataItemHandle;
import org.eclipse.birt.report.model.api.DesignConfig;
import org.eclipse.birt.report.model.api.ElementFactory;
import org.eclipse.birt.report.model.api.IDesignEngine;
import org.eclipse.birt.report.model.api.IDesignEngineFactory;
import org.eclipse.birt.report.model.api.LabelHandle;
import org.eclipse.birt.report.model.api.OdaDataSetHandle;
import org.eclipse.birt.report.model.api.OdaDataSourceHandle;
import org.eclipse.birt.report.model.api.PropertyHandle;
import org.eclipse.birt.report.model.api.ReportDesignHandle;
import org.eclipse.birt.report.model.api.RowHandle;
import org.eclipse.birt.report.model.api.SessionHandle;
import org.eclipse.birt.report.model.api.StructureFactory;
import org.eclipse.birt.report.model.api.TableHandle;
import org.eclipse.birt.report.model.api.activity.SemanticException;
import org.eclipse.birt.report.model.api.elements.structures.ComputedColumn;
import com.ibm.icu.util.ULocale;
/**
* Dynamic Table BIRT Design Engine API (DEAPI) demo.
*/
public class DECreateDynamicTable
{
ReportDesignHandle designHandle = null;
ElementFactory designFactory = null;
StructureFactory structFactory = null;
public static void main( String[] args )
{
try
{
DECreateDynamicTable de = new DECreateDynamicTable();
ArrayList al = new ArrayList();
al.add("OFFICECODE");
al.add("CITY");
al.add("COUNTRY");
de.buildReport(al, "From Offices" );
}
catch ( IOException e )
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch ( SemanticException e )
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
void buildDataSource( ) throws SemanticException
{
OdaDataSourceHandle dsHandle = designFactory.newOdaDataSource(
"Data Source", "org.eclipse.birt.report.data.oda.jdbc" );
dsHandle.setProperty( "odaDriverClass",
"org.eclipse.birt.report.data.oda.sampledb.Driver" );
dsHandle.setProperty( "odaURL", "jdbc:classicmodels:sampledb" );
dsHandle.setProperty( "odaUser", "ClassicModels" );
dsHandle.setProperty( "odaPassword", "" );
designHandle.getDataSources( ).add( dsHandle );
}
void buildDataSet(ArrayList cols, String fromClause ) throws SemanticException
{
OdaDataSetHandle dsHandle = designFactory.newOdaDataSet( "ds",
"org.eclipse.birt.report.data.oda.jdbc.JdbcSelectDataSet" );
dsHandle.setDataSource( "Data Source" );
String qry = "Select ";
for( int i=0; i < cols.size(); i++){
qry += " " + cols.get(i);
if( i != (cols.size() -1) ){
qry += ",";
}
}
qry += " " + fromClause;
dsHandle.setQueryText( qry );
designHandle.getDataSets( ).add( dsHandle );
}
void buildReport(ArrayList cols, String fromClause ) throws IOException, SemanticException
{
//Configure the Engine and start the Platform
DesignConfig config = new DesignConfig( );
config.setProperty("BIRT_HOME", "C:/birt-runtime-2_1_1/birt-runtime-2_1_1/ReportEngine");
IDesignEngine engine = null;
try{
Platform.startup( config );
IDesignEngineFactory factory = (IDesignEngineFactory) Platform
.createFactoryObject( IDesignEngineFactory.EXTENSION_DESIGN_ENGINE_FACTORY );
engine = factory.createDesignEngine( config );
}catch( Exception ex){
ex.printStackTrace();
}
SessionHandle session = engine.newSessionHandle( ULocale.ENGLISH ) ;
try{
//open a design or a template
designHandle = session.openDesign("c:/tmp/testdeapi.rptdesign");
designFactory = designHandle.getElementFactory( );
buildDataSource();
buildDataSet(cols, fromClause);
TableHandle table = designFactory.newTableItem( "table", cols.size() );
table.setWidth( "100%" );
table.setDataSet( designHandle.findDataSet( "ds" ) );
PropertyHandle computedSet = table.getColumnBindings( );
ComputedColumn cs1 = null;
for( int i=0; i < cols.size(); i++){
cs1 = StructureFactory.createComputedColumn();
cs1.setName((String)cols.get(i));
cs1.setExpression("dataSetRow[\"" + (String)cols.get(i) + "\"]");
computedSet.addItem(cs1);
}
// table header
RowHandle tableheader = (RowHandle) table.getHeader( ).get( 0 );
for( int i=0; i < cols.size(); i++){
LabelHandle label1 = designFactory.newLabel( (String)cols.get(i) );
label1.setText((String)cols.get(i));
CellHandle cell = (CellHandle) tableheader.getCells( ).get( i );
cell.getContent( ).add( label1 );
}
// table detail
RowHandle tabledetail = (RowHandle) table.getDetail( ).get( 0 );
for( int i=0; i < cols.size(); i++){
CellHandle cell = (CellHandle) tabledetail.getCells( ).get( i );
DataItemHandle data = designFactory.newDataItem( "data_"+(String)cols.get(i) );
data.setResultSetColumn( (String)cols.get(i));
cell.getContent( ).add( data );
}
designHandle.getBody( ).add( table );
// Save the design and close it.
designHandle.saveAs( "c:/temp/sample.rptdesign" ); //$NON-NLS-1$
designHandle.close( );
System.out.println("Finished");
}catch (Exception e){
e.printStackTrace();
}
}
}
这个例子一共有四个函数 :
1 . Main 函数: 这个例子简单之处在与它可以直接的运行,只要你修改了
config.setProperty("BIRT_HOME", "C:/birt-runtime-2_1_1/birt-runtime-2_1_1/ReportEngine"); 指向你自己的Birt Runtime 解压后的ReportEngine 目录.
designHandle = session.openDesign("c:/tmp/testdeapi.rptdesign"); 你可以从Birt 里面建立一个新的Report template.然后指向这个report 就可以了
designHandle.saveAs( "c:/temp/sample.rptdesign" ); //$NON-NLS-1$ 指定一个你想保存的位置,c:/temp 目录存在你才能够保存到c:/temp 目录下.
2 . buildDataSource 函数把一个ReportDesignHandle 的 Data Source 初始化, setProperties 左边的String 是不能变的,Data Source 的名字可以随便取,取DataSet 的时候要根据这个名字来取.
3 . buildDataSet 通过拼sql 的方式 ,来build DataSet, 注意sql 别拼错了.
4 . buildReport 注意element 的初始化顺序.在所有的DataItem 外面都是一层Cell,Cell 外面才是row .这个例子使用的row 来拼成table 的,也可以用column 来拼,相对应的数据处理也是一个column 一个 column 的处理的了.
发表评论
-
JFreeReport 0.9 的特性预览
2007-09-12 15:13 2170在Pentaho的官方论坛里,我看到了JFreeReport ... -
在Tomcat上部署和运行Pentaho示例1.2版本
2007-09-12 15:10 2520下载pentaho_j2ee_deploy ... -
在Tomcat上如何集成Pentaho和Liferay
2007-09-12 15:08 1732... -
商业智能(十八) 安装BIRT
2007-09-12 15:04 1967安装Birt 其实非常的简单.只需要下载Birt-Runtim ... -
Mondrian 如何使用 materialized view
2007-09-12 15:03 1959第十四篇文章中,我把 ... -
用materialized view + dimension 来提高mondrian 的性能2
2007-09-12 15:01 1946接着上一篇的定义我们定义如下两个dimension : CRE ... -
materialized view+dimension提高mondrian性能1
2007-09-12 15:00 1858着上一篇的步骤部署好了mondrian 之后 进入数据库,修改 ... -
mondrian + oracle 部署foodmart demo
2007-09-12 14:59 3458mondrian作为开源世界的OL ... -
商业智能研究(十二) OLAP 相关的一些开源项目
2007-09-12 14:53 2301联机分析(OLAP)处理专门设计用于支持复杂的分析操作,侧重对 ... -
在tomcat上部署pentaho 1.5.3
2007-09-12 14:51 1880在tomcat上部署pentaho 1.5.3 最近一直在做m ... -
商业智能平台研究(十一) BI基本概念
2007-09-12 14:47 2707商业智能对每个不同的公司都有不同的定义. 如果你对这些公司的定 ... -
商业智能平台研究 (十) ETL 选型
2007-09-12 14:42 3568ETL (Extract-Transform-Load的缩写, ... -
商业智能平台研究(九) ETL 中的数据质量控制
2007-09-12 14:40 1710数据质量一直是ETL工具 ... -
商业智能平台研究(八)
2007-09-12 14:36 2009... -
商业智能平台研究(七)
2007-09-12 14:34 1386五一期间哪里都没有去 ... -
四个开源商业智能平台比较(六)
2007-09-12 14:30 2115roadmap是一个项目的计划表,个人认为任何一个项目都应该有 ... -
四个开源商业智能平台比较(五)
2007-09-12 14:28 2215lumi 问JPivot能否单独使用,不能,根据其主页上的描述 ... -
四个开源商业智能平台比较(四)
2007-09-12 14:26 1861我想问,如果贵公司是 ... -
四个开源商业智能平台比较(三)
2007-09-12 11:58 2599先回答一下各位的评论,blogjava上的江南白衣 朋友(主 ... -
四个开源商业智能平台比较(二)
2007-09-12 11:53 1937一个好的项目总是有很多的文档,一个失败的项目总是有各种理由没有 ...
相关推荐
1. `env.py`:游戏环境的实现,可能包含与Flappy Bird游戏API的接口。 2. `model.py`:DQN网络模型的定义,可能使用TensorFlow或PyTorch等深度学习框架。 3. `agent.py`:智能体的实现,包括经验回放缓冲区、策略...
PyTorch是Facebook开源的一个强大的深度学习库,以其动态计算图和易于使用的API而备受青睐。在实现DQN时,PyTorch可以轻松构建和训练神经网络模型,同时提供便捷的工具进行数据处理和模型优化。 在这个项目中,我们...
《使用Keras与Python实现强化学习:Flappy Bird游戏》 在当今的AI领域,强化学习(Reinforcement Learning,RL)已经成为了重要的研究方向,它通过与环境的交互学习最优策略,尤其在游戏控制方面表现出色。本项目...
学习并熟练掌握Bluebird,能极大地提升JavaScript异步编程的效率和质量。在实际项目中,可以根据需求选择适合的方法,实现高效、可靠的异步控制。在阅读`bluebird-api-master`这个压缩包中的内容,我们可以期待找到...
综上所述,"OpenCv制作的FlappyBird"项目展示了OpenCV在游戏开发中的创新应用,结合了图像处理、物体检测、机器学习等多个方面的知识,是学习和实践OpenCV技术的一个有趣案例。通过深入研究项目源码、观看成果视频并...
在FlappyBird的cocos2dx版本中,游戏场景、角色动画、碰撞检测等功能都通过cocos2dx的API实现。 2. 游戏对象:游戏中的Bird对象和管道(Pipes)对象是核心。Bird的移动和跳跃通过物理引擎模拟,而Pipes则动态生成,...
在这里,我们拥有的是自己制作的Flappy Bird游戏的完整源码以及相关的素材,这为我们提供了一个学习和理解游戏开发的绝佳机会。 首先,我们来看看"Swing"这个标签。Swing是Java的一种图形用户界面(GUI)工具包,...
8. **游戏环境模拟**:FlappyBird游戏环境通常使用Python的Gym库或者自定义环境模拟,智能体通过API与环境进行交互,获取状态、执行动作并接收奖励。 9. **模型训练与评估**:在训练过程中,智能体会逐步学习到如何...
通过研究这个FlappyBird(SDL版)项目,我们可以学习到游戏开发的基本流程,了解SDL库的使用方法,同时提升C++编程技能。这是一个很好的实践项目,对于想进入游戏开发领域的初学者来说,既能提供理论知识,又能提供...
1. **Canvas API**:FlappyBird的图形渲染主要依赖HTML5的Canvas API,这是一个用于在网页上绘制图形的画布。开发者需要熟悉`context`对象的使用,如`fillRect`用于填充矩形(管道和地面)、`beginPath`和`stroke`...
《Flappy Bird源代码解析与学习指南》 Flappy Bird,这款曾经风靡全球的手机游戏,以其简单却又极具挑战性的玩法吸引了无数玩家。而它的源代码,对于想要深入理解游戏开发,特别是Java编程和2D游戏制作的开发者来说...
在Window自己实现的版本中,开发者可能使用了Windows API来处理图形绘制和用户输入,这需要对操作系统底层的编程有深入理解。这个版本可以作为学习系统编程和游戏开发基础知识的好教材。同时,设计模式的运用使得...
总的来说,canvas-flappybird项目是一个很好的学习案例,展示了如何利用HTML5 canvas和JavaScript构建一个完整的互动游戏。对于想要学习游戏开发或增强canvas技能的开发者来说,这个项目提供了一个直观且有趣的实践...
Swing是Java的标准库之一,它提供了一套丰富的组件和API,用于构建图形用户界面(GUI)。在Java Swing中,我们可以创建窗口、按钮、文本框等各种界面元素,非常适合用来开发像Flappy Bird这样的2D游戏。 在Swing中...
《Flappy Bird 试验版》是一款基于MFC框架开发的2D游戏,旨在为初学者提供一个学习和实践编程的好机会。MFC,全称Microsoft Foundation Classes,是微软提供的一套面向对象的C++库,它封装了Windows API,使得开发者...
通过学习文档,了解如何初始化设备连接,调用API进行数据采集和传输。在开发过程中,可以利用示例代码快速启动项目,并根据需求进行自定义修改。 6. **应用领域**:利用此SDK开发的应用程序广泛应用于零售、医疗、...
在创建FlappyBird游戏时,Python的Turtle库被广泛用于图形绘制,这个库提供了简单的API,可以方便地绘制出游戏中的角色和背景。 1. **Turtle库**:Turtle库是Python的一个标准库,主要用于绘图。在这个游戏中,...
10. **学习资源**:网上有许多关于用HTML5制作Flappy Bird的教程和源代码,初学者可以通过学习这些资源快速入门HTML5游戏开发。 总的来说,Flappy Bird的HTML5实现不仅展示了HTML5的强大功能,也为开发者提供了一个...
Flappy Bird这类2D游戏非常适合使用SpriteKit来开发,因为它提供了丰富的API来实现游戏逻辑和交互。 5. **物理引擎** 在SpriteKit中,物理引擎是通过`SKPhysicsWorld`类来实现的。小鸟的飞行、管道的移动以及碰撞...
总的来说,通过分析Flappy Bird的C语言源代码,我们可以学习到游戏开发的基本原理,如图形渲染、事件处理、游戏循环、动画制作和碰撞检测等。这对于想深入理解游戏开发,特别是对C语言感兴趣的程序员来说,是一个极...