- 浏览: 232828 次
- 性别:
- 来自: 广东
文章分类
最新评论
-
wangmuchang:
解压需要密码
CAS单点登录之测试应用 -
ayang722:
首先就要在运行报表birt的IEngineTask中加入, J ...
birt配置动态数据源 -
lihong11:
very good!
js常用方法 -
qtlkw:
你共享出来为什么要密码?要密码为何要共享出来?汗
CAS单点登录之测试应用 -
lishouxinghome:
请问如何获得用户的Id呢,往指点
使用 CAS 在 Tomcat 中实现单点登录
在使用Birt 的时候需要动态处理一些参数问题,所以使用API 来处理参数是Birt 很重要的一部分.所有以 'I' 开头的都是Interface ,
Birt 有三种parameter 分别对应 IParameterGroupDefn , ICascadingParameterGroup , IScalarParameterDefn , 对应的三个Handler 分别就是
ParameterGroupHandle, CascadingParameterGroupHandle , ScalarParameterHandle
Engine.shutdown() 已经过时了,应该使用新的Engine.destory(). 不过例子是Birt 官方的,所以我没有修改.
Birt 有三种parameter 分别对应 IParameterGroupDefn , ICascadingParameterGroup , IScalarParameterDefn , 对应的三个Handler 分别就是
ParameterGroupHandle, CascadingParameterGroupHandle , ScalarParameterHandle
Engine.shutdown() 已经过时了,应该使用新的Engine.destory(). 不过例子是Birt 官方的,所以我没有修改.
import java.io.Serializable; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.logging.Level; import org.eclipse.birt.core.framework.Platform; import org.eclipse.birt.report.engine.api.EngineConfig; import org.eclipse.birt.report.engine.api.EngineException; import org.eclipse.birt.report.engine.api.IGetParameterDefinitionTask; import org.eclipse.birt.report.engine.api.IParameterDefnBase; import org.eclipse.birt.report.engine.api.IParameterGroupDefn; import org.eclipse.birt.report.engine.api.IParameterSelectionChoice; import org.eclipse.birt.report.engine.api.IReportEngine; import org.eclipse.birt.report.engine.api.IReportEngineFactory; import org.eclipse.birt.report.engine.api.IReportRunnable; import org.eclipse.birt.report.engine.api.IScalarParameterDefn; import org.eclipse.birt.report.model.api.CascadingParameterGroupHandle; import org.eclipse.birt.report.model.api.ReportDesignHandle; import org.eclipse.birt.report.model.api.ScalarParameterHandle; public class ParametersTask { static void executeReport() throws EngineException { HashMap<String, HashMap<String, Serializable>> parmDetails = new HashMap<String, HashMap<String, Serializable>>(); IReportEngine engine=null; EngineConfig config = null; try{ config = new EngineConfig( ); config.setEngineHome( "C:/birt-runtime-2_1_1/birt-runtime-2_1_1/ReportEngine" ); config.setLogConfig(null, Level.FINE); Platform.startup( config ); IReportEngineFactory factory = (IReportEngineFactory) Platform .createFactoryObject( IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY ); engine = factory.createReportEngine( config ); engine.changeLogLevel( Level.WARNING ); }catch( Exception ex){ ex.printStackTrace(); } IReportRunnable design = null; //Open a report design design = engine.openReportDesign("C:/test/2.1/parameters/Parameters.rptdesign"); //Create Parameter Definition Task and retrieve parameter definitions IGetParameterDefinitionTask task = engine.createGetParameterDefinitionTask( design ); Collection params = task.getParameterDefns( true ); //Iterate over each parameter Iterator iter = params.iterator( ); while ( iter.hasNext( ) ) { IParameterDefnBase param = (IParameterDefnBase) iter.next( ); if ( param instanceof IParameterGroupDefn ) { IParameterGroupDefn group = (IParameterGroupDefn) param; //System.out.println( "Parameter Group: " + group.getName( ) ); // Do something with the parameter group. // Iterate over group contents. Iterator i2 = group.getContents( ).iterator( ); while ( i2.hasNext( ) ) { IScalarParameterDefn scalar = (IScalarParameterDefn) i2.next( ); //System.out.println("\t" + scalar.getName()); //Get details on the parameter parmDetails.put( scalar.getName(), loadParameterDetails( task, scalar, design, group)); } } else { IScalarParameterDefn scalar = (IScalarParameterDefn) param; //System.out.println(param.getName()); //get details on the parameter parmDetails.put( scalar.getName(),loadParameterDetails( task, scalar, design, null)); } } //Destroy the engine and shutdown the Platform //Note - If the program stays resident do not shutdown the Platform or the Engine engine.shutdown(); Platform.shutdown(); System.out.println("Finished"); } //Function to load parameter details in a map. private static HashMap<String, Serializable> loadParameterDetails(IGetParameterDefinitionTask task, IScalarParameterDefn scalar, IReportRunnable report, IParameterGroupDefn group) { HashMap<String, Serializable> parameter = new HashMap<String, Serializable>(); if( group == null){ parameter.put("Parameter Group", "Default"); }else{ parameter.put("Parameter Group", group.getName()); } parameter.put("Name", scalar.getName()); parameter.put("Help Text", scalar.getHelpText()); parameter.put("Display Name", scalar.getDisplayName()); //this is a format code such as > for UPPERCASE parameter.put("Display Format", scalar.getDisplayFormat()); if( scalar.isHidden() ){ parameter.put("Hidden", "Yes"); }else{ parameter.put("Hidden", "No"); } if( scalar.allowBlank() ){ parameter.put("Allow Blank", "Yes"); }else{ parameter.put("Allow Blank", "No"); } if( scalar.allowNull() ){ parameter.put("Allow Null", "Yes"); }else{ parameter.put("Allow Null", "No"); } if( scalar.isValueConcealed() ){ parameter.put("Conceal Entry", "Yes"); //ie passwords etc }else{ parameter.put("Conceal Entry", "No"); } switch (scalar.getControlType()) { case IScalarParameterDefn.TEXT_BOX: parameter.put("Type", "Text Box"); break; case IScalarParameterDefn.LIST_BOX: parameter.put("Type", "List Box"); break; case IScalarParameterDefn.RADIO_BUTTON: parameter.put("Type", "List Box"); break; case IScalarParameterDefn.CHECK_BOX: parameter.put("Type", "List Box"); break; default: parameter.put("Type", "Text Box");break; } switch (scalar.getDataType()) { case IScalarParameterDefn.TYPE_STRING: parameter.put("Data Type", "String"); break; case IScalarParameterDefn.TYPE_FLOAT: parameter.put("Data Type", "Float"); break; case IScalarParameterDefn.TYPE_DECIMAL: parameter.put("Data Type", "Decimal"); break; case IScalarParameterDefn.TYPE_DATE_TIME: parameter.put("Data Type", "Date Time"); break; case IScalarParameterDefn.TYPE_BOOLEAN: parameter.put("Data Type", "Boolean"); break; default: parameter.put("Data Type", "Any"); break; } //Get report design and find default value, prompt text and data set expression using the DE API ReportDesignHandle reportHandle = ( ReportDesignHandle ) report.getDesignHandle( ); ScalarParameterHandle parameterHandle = ( ScalarParameterHandle ) reportHandle.findParameter( scalar.getName() ); parameter.put("Default Value", parameterHandle.getDefaultValue()); parameter.put("Prompt Text", parameterHandle.getPromptText()); parameter.put("Data Set Expression", parameterHandle.getValueExpr()); if(scalar.getControlType() != IScalarParameterDefn.TEXT_BOX) { //retrieve selection list for cascaded parameter if ( parameterHandle.getContainer( ) instanceof CascadingParameterGroupHandle ){ Collection sList = Collections.EMPTY_LIST; if ( parameterHandle.getContainer( ) instanceof CascadingParameterGroupHandle ) { int index = parameterHandle.getContainerSlotHandle( ) .findPosn( parameterHandle ); Object[] keyValue = new Object[index]; for ( int i = 0; i < index; i++ ) { ScalarParameterHandle handle = (ScalarParameterHandle) ( (CascadingParameterGroupHandle) parameterHandle.getContainer( ) ).getParameters( ) .get( i ); //Use parameter default values keyValue[i] = handle.getDefaultValue(); } String groupName = parameterHandle.getContainer( ).getName( ); task.evaluateQuery( groupName ); sList = task.getSelectionListForCascadingGroup( groupName, keyValue ); HashMap<Object, String> dynamicList = new HashMap<Object, String>(); for ( Iterator sl = sList.iterator( ); sl.hasNext( ); ) { IParameterSelectionChoice sI = (IParameterSelectionChoice) sl.next( ); Object value = sI.getValue( ); Object label = sI.getLabel( ); System.out.println( label + "--" + value); dynamicList.put(value,(String) label); } parameter.put("Selection List", dynamicList); } }else{ //retrieve selection list Collection selectionList = task.getSelectionList( scalar.getName() ); if ( selectionList != null ) { HashMap<Object, String> dynamicList = new HashMap<Object, String>(); for ( Iterator sliter = selectionList.iterator( ); sliter.hasNext( ); ) { IParameterSelectionChoice selectionItem = (IParameterSelectionChoice) sliter.next( ); Object value = selectionItem.getValue( ); String label = selectionItem.getLabel( ); //System.out.println( label + "--" + value); dynamicList.put(value,label); } parameter.put("Selection List", dynamicList); } } } //Print out results Iterator iter = parameter.keySet().iterator(); System.out.println("======================Parameter =" + scalar.getName()); while (iter.hasNext()) { String name = (String) iter.next(); if( name.equals("Selection List")){ HashMap selList = (HashMap)parameter.get(name); Iterator selIter = selList.keySet().iterator(); while (selIter.hasNext()) { Object lbl = selIter.next(); System.out.println( "Selection List Entry ===== Key = " + lbl + " Value = " + selList.get(lbl)); } }else{ System.out.println( name + " = " + parameter.get(name)); } } return parameter; } /** * @param args */ public static void main(String[] args) { try { executeReport( ); } catch ( Exception e ) { e.printStackTrace(); } } }
发表评论
-
ssh框架加入atomikos分布式事务管理
2015-01-06 18:48 1470一、概念 分布式事务分布式事务是指事务 ... -
Spring 动态切换数据源
2014-05-09 14:30 3640一、开篇 这里整合分别采用了Hibernate和MyB ... -
Spring切入点表达式常用写法
2014-05-09 14:25 818自从使用AspectJ风格切面配置,使得Spring的切面配 ... -
Spring中线程池的应用
2014-03-24 11:03 899多线程并发处理起来通常比较麻烦,如果你使用spring容器来 ... -
Spring线程池开发实战
2014-03-24 11:02 756本文提供了三个Spring多线程开发的例子,由浅入深,由于例 ... -
JSch - Java实现的SFTP(文件上传详解篇)
2013-11-21 09:36 901JSch是Java Secure Channel的缩写。J ... -
JAVA线程池ThreadPoolExecutor
2013-07-17 14:45 899java.util.concurrent.ThreadPoo ... -
log4j.properties 使用说明
2013-05-29 10:54 812一、Log4j简介Log4j有三个主要的组件:Logger ... -
eclipse安装反编译插件(附jad下载)
2012-12-12 10:45 826一、eclipse反编译插件Jadclipse jadclip ... -
web.xml 配置404和500错误的自定义页面
2012-12-07 11:47 816web.xml <error-page>< ... -
java内存溢出
2012-06-28 18:57 871一、常见的Java内存溢出 ... -
List Set Map区别
2012-12-25 17:54 918List有序key和value都能重 ... -
Java 自定义Annotation(元数据、注解)
2011-08-05 11:50 1910Annotation在java的世界正铺天盖地展开,有空写这一 ... -
LOG4J properties 配置文件
2011-06-29 16:31 1174一、参数意义说明1、输出级别的种类 ERROR、 ... -
servlet输出一个文件
2010-11-10 18:33 1170String fileName= file.getName() ... -
关于RSS、RDF、ATOM和Feed
2010-11-02 09:48 1226RSS被不同的技术团体做不同的解释,分别有 Rich Site ... -
正确理解Traceback的含义
2010-11-02 09:44 1010Traceback是Blog的一个重要 ... -
关于Serializable的serialVersionUID
2010-10-26 09:10 1758众所周知,当某class实现了Serializable接口 ... -
获得CLASSPATH之外路径的方法
2010-10-14 10:37 961URL base = this.getClass().getR ... -
操作properties文件
2010-10-14 10:30 807发个例子大家自己看哈.package control; im ...
相关推荐
Bluebird以其高性能、丰富的API和全面的错误处理机制著称。本篇文章将深入探讨Bluebird API及其应用场景。 1. **Promise的基本概念** Promise是ES6引入的特性,它代表一个异步操作的最终完成或失败,其状态不可变...
《使用canvas技术构建Flappy Bird游戏》 在IT领域,HTML5是现代网页开发的核心标准,其中canvas元素作为一项重要特性,为动态图形和交互式应用程序提供了强大的支持。本项目"canvas-flappybird"就是利用canvas来...
《使用Pytorch与Q学习实现FlappyBird游戏详解》 FlappyBird是一款广受欢迎的休闲游戏,其简单却又极具挑战性的玩法吸引了众多玩家。在本文中,我们将深入探讨如何利用深度强化学习(Deep Q-Network,简称DQN)以及...
《自己编写的Flappy Bird游戏解析》 Flappy Bird,这款简单却又极具挑战性的游戏,由越南开发者Dong Nguyen在2013年推出,迅速在全球范围内引发了热潮。本文将深入探讨我自己编写的Flappy Bird游戏,分析其背后的...
总结,通过分析这个Cocos2dx 3.0的FlappyBird改编版源码,我们可以学习到游戏开发中的基本元素,如图形渲染、音频处理、物理引擎、游戏状态管理和用户输入响应等。这对于提升游戏开发技能和理解Cocos2dx框架有着极大...
AndEngine是基于OpenGL ES 2.0的,提供了一套面向对象的API,简化了图形渲染、物理模拟、动画处理等复杂任务。它包括了精灵、纹理、粒子系统、碰撞检测、音乐和音效播放等功能,为开发者提供了完整的2D游戏开发解决...
本文将以"FlappyBird.zip"为例,详细探讨如何利用js技术实现一款类似Flappy Bird的网页小游戏,并教你如何修改游戏参数以适应不同的玩法需求。 首先,我们要理解Flappy Bird的基本机制。这是一款基于物理模拟的2D...
在本PPT中,我们探讨了如何开发一个简单的Flappy Bird游戏,主要涉及了图片导入、使用以及声音处理。以下是对这些知识点的详细说明: 1. **图片导入与使用**: - 在C++编程中,`<graphics.h>` 和 `<conio.h>` ...
在开发游戏时,图像处理和音频管理是至关重要的部分,特别是在创建类似Flappy Bird这样的简单但视觉和听觉效果丰富的游戏中。以下是从给定的文件中提取的关键知识点: 1. **图片导入与使用**: - `#include ...
本项目“Paper-Bird-master_lua_”正是一个使用Lua语言和Corona SDK开发的Flappy Bird克隆版,名为“Paper Bird”。通过这个项目,我们可以深入学习如何利用Lua进行游戏逻辑编程以及Corona SDK提供的图形和交互功能...
开发者需要了解如何使用`wxParse`的API,如`wxParse.wxParse('article', 'html', htmlStr, that, 3)`,其中参数分别代表绑定的字段、解析类型、HTML字符串、当前页面引用及层级。同时,安全问题不可忽视,确保不执行...
在使用`bluebird`时,要了解其特性和与小程序原生Promise的差异,以便更高效地处理网络请求和数据加载。 通过研究这些案例源码,开发者不仅可以深入理解微信小程序的开发模式,还能掌握到富文本解析、图形绘制、...
首先,需要将数据结构化,然后调用这些库提供的API配置图表参数,最后在小程序页面中嵌入图表组件,实时更新数据,以便用户直观地查看新闻资讯中的数据变化。 3. **MD5加密**: MD5(Message-Digest Algorithm 5)...
1. **Canvas API**:如何使用JavaScript在Canvas上绘制图形、移动对象、处理碰撞和更新游戏状态。 2. **事件监听**:如何响应用户的触摸或点击事件,控制游戏中的动作。 3. **动画制作**:利用requestAnimationFrame...
在微信小程序的开发中,富文本解析、折线图绘制以及MD5加密和Bluebird Promise库的使用是几个重要的技术点。以下将详细介绍这些知识点。 首先,富文本解析是小程序中处理HTML或Markdown等格式文本的关键。在微信小...
3. **文档**:可能包含平台的安装指南、使用教程、API参考和开发者的贡献指南。 4. **示例**:可能有示例设备配置、数据模拟脚本或者简单的应用示例,帮助用户快速了解如何与蜂鸟平台进行交互。 5. **测试用例**:...
使用像Thunderbird、Outlook这样的邮件客户端,或者专门的邮件测试工具,可以帮助开发者调试和验证邮件发送代码。 以上知识点涵盖了JavaMail开发的基本要素和常见问题处理。通过深入理解和实践,开发者能够熟练地...
本篇文章将深入探讨一个基于JavaScript编写的名为“笨拙的小鸟”(Clumsy Bird)的游戏,通过对源代码的分析,我们将揭示游戏背后的编程原理和技巧。 1. **JavaScript基础**: JavaScript是一种解释型、弱类型的...
通过这个小游戏,我们可以学习到C语言的基本语法、条件语句、循环结构以及函数的使用,还能深入理解图形绘制和事件处理的概念。EasyX库提供了一种简单易学的方式,让初学者也能快速上手,实现自己的创意。同时,这个...
本项目中,开发者可能使用了JavaFX或者Swing库来创建游戏界面,这两个库提供了丰富的组件和API,能够方便地构建窗口、按钮、图像等元素。 在游戏逻辑层面,"飞翔的小鸟"需要处理的主要有以下几个方面: 1. **游戏...