report9d

2009年3月4日 #

特大喜讯: 简表(JOR),国内唯一开源的java报表工具隆重启航!

简表(JOR),是一款开源的报表工具,完全java实现,核心代码来自于国内一线报表工具品牌杰表.2008 。

提起开源的报表工具,不能不说说jaspereport,jasperreport作为著名的开源报表工具,在java程序员中一直享有盛名。但由于其设计主要是针对西式的简单报表,设计起复杂的中式报表来,有点力不从心,所以,在国内的项目中能成功应用的例子并不多。JOR,作为能做复杂报表的开源报表工具,可以弥补jasperreport的不足。

下载地址:

http://www.jatools.com/jor

posted @ 2009-10-15 16:09 report9d 阅读(330) | 评论 (0)编辑 收藏

原创olap引擎,纯java实现的

java实现的olap服务器,完全自主产权,纯java实现. cube架构,性能优,占用空间小.


 

分析模型设计器

 


posted @ 2009-09-25 18:47 report9d 阅读(359) | 评论 (0)编辑 收藏

换个角度来晒晒杰表.2008

闲话少说,晒几个杰表.2008的ppt截图,希望有助于大家对报表工具的选择.













 


posted @ 2009-09-02 13:02 report9d 阅读(939) | 评论 (0)编辑 收藏

jni 学习笔记一(原创)

jni 类型

简单类型 primitive type

jni有8大基本类型, jboolean,jbyte,jchar,jshort,jint,jfloat,jlong,,jdouble
8位,16位,32位,64位,各两个(在win32平台中,其他平台不一定)

java类型与c++数据类型的映射关系是如下:
jboolean <--> unsigned char
jchar   <--> unsigned short
jshort  <--> short
jfloat  <-->  float
jdouble <--> double

这是在 jni.h里定义的,为啥缺了jbyte,jint,jlong的映射呢?
答案是:sun在实现java虚拟机时,考虑到虚拟机可能运行在不同的操作系统和不同的硬件平台上,比如,硬件平台有8位,16位,32位,64位的区别,为了更好地与硬件平台匹配,发挥最好的性能,将一些类型抽取出来,允许在不同的平台上有不同的表示(位数),我们姑且称之为硬件相关类型,jbyte,jint,jlong就属于硬件相关类型。

举列来说,如果你在32位机上,jint表示的是32bit的,而在64位机上,一般是64位即8个字节表示,也就是说,jbyte,jint,jlong在sun的虚拟机上,位数是不定的。

那位数不一定,怎么编译?   sun的方法是增加一个机器相关的jni_md.h文件,这里的md是machine dependent(机器相关)的意思。在win32平台中,这三个类型的定义如下:

typedef long jint;
typedef __int64 jlong;
typedef signed char jbyte;

由此可见,在win32平台中,jint是32位的,jlong是64位,jbyte是8位的.

指针类型  reference type
reference 准确的译法,应该是引用,但引用实际上就是指针的一种伪装,只不过更接近人的思维罢了。如果说,"爸爸的爸爸"是一种指针概念,那"爷爷"就是一种引用概念。

jni把类型分为两大类,一个是简单类型,一个是引用类型,下面是引用类型



从上图似乎可以看出,所有引用类型,都从jobject 继承,jarray又被几个简单类型的数组继承.
但实际上这个对象层次,是一种假象,跟我们c++与java中看到的对象层次是有区别的,jobject与LPSTR(字符串指针),本质上没有区别:
1.  jobject, jclass,jstring,...等,所有对象,是指针,不是对象本身,而指针是不存在继承关系的,“小狗”的指针,从“动物”的指针继承,这种说法不成立。
2. jobject,jclass,jstring 是一种指针,不存在任何操作方法,好比你不能 LPCSTR->strlen(),在jni中,也没有提供任何  jobject->something() 这种调用。
3. 对这些对象的操作必须依赖于 env对象的操作方法.

看一下,jni.h中对 这些引用对象的定义

class _jobject {};
class _jclass : public _jobject {};
class _jstring : public _jobject {};
...
typedef _jobject *jobject;     //_jobject才是类定义,jobject 是否_jobject的指针
typedef _jclass *jclass;
typedef _jstring *jstring;
...

在这些下划线对象中,有什么成员变量,成员函数呢? 答案是你什么也不能得到,比如,你想知道,_jstring对象的字符串长度,你不能 _jstring.length(),得到,而必须env->GetStringLength(jstring) 来得到.

只给你一个对象的指针,不告诉你里面有什么,这样做的好处是实现与接口分离。

jvalue 这个类型,是一个union ,感觉很想com里的variant对象,不过没有指明类型的field
 typedef union jvalue {
    jboolean z;
    jbyte    b;
    jchar    c;
    jshort   s;
    jint     i;
    jlong    j;
    jfloat   f;
    jdouble  d;
    jobject  l;
} jvalue;
我现在还不知道,这个数据类型,什么时候用.

jfieldID是一个java类成员变量的id,这个id在c++中,实际是一个指向结构的一个指针, jmethodID  是成员方法的id,  不管是成员变量还是方法的id,在java类被加载进虚拟机后,是保持不变的。所以从考虑性能计,可以使用静态缓存的方法,先取出来,后面会讲到

字符串类型
这里说的字符串类型,是jni中char * 的格式,不是指 jstring/_jstring,jni也使用 char * 字符串指针,
好下所示:
    jmethodID GetMethodID (JNIEnv *env, jclass clazz, const char *name, const char *sig);

但需要注意的是,这里的name,必须是UTF-8的编码,utf-8对于ascii字符,只占一个字节,最多不超过3个字节

posted @ 2009-06-22 10:12 report9d 阅读(2261) | 评论 (1)编辑 收藏

java报表图例大全

通过图片介绍java报表开发过程中,经常遇到的一些报表类型,统计图,及可视化的设计等.下面以 杰表.2008 为例介绍之.

 

一、支持报表类型

主从报表

套打报表

标签报表

分栏报表

计算比去年增长数

计算比去年同期增长数

补足空行的表格报表

多表合并.不同的数据集,做成一个相连的报表.

公式分组报表.按字段值,进行分类,分级

排行榜(Top N)报表

按汇总值大小排序的分组

多级分组

计算占比

显示排名

交叉表折页处理



层次不等的交叉表

行列并行分组的交叉表

多数据集的交叉表

静态表格中的公式计算

 

二、javabean数据源

使用java数组

假设项目组其他成员已经编写了一个Student类,如下图(a),该类定义四个方法,分别获取其姓名,年龄,性别,分数。由脚本构造一个包含三个Student对象的数组,如图(b),要求你做成下图(c)所示报表。

嵌套的java对象数据源

假设你有下图(a)所示的两个类Student和Person,你可以使用Student的getMembers()方法,取得该学生的家庭成员列表,每个家庭成员用一个Person对象表示,该对象包含与该学生的关系、姓名、性别等信息。

ResultSet数据源

指定sql查询一个报表


三、统计图与条码

插入统计图对象

设置统计图背景及立体效果

设置统计图输出格式为Flash

从统计图钻取另一个明细报表

你可以在统计图的某一个数据区放置一个超链接,使用户双击该区时,跳转到另一个子报表或网页,如,有一个柱形图,显示各产品的库存量,点击某个产品的柱面,就可以打开该产品相关的销售记录。

饼图

以时间为横轴的统计图

混合类型统计图

双轴统计图

创建甘特图

特殊统计图








创建条形码对象

日常生活中条形码随处可见,条形码用几何图形表示数据,并可以被专门设备识别。杰表可支持的13种条形码,分别是codabar、code39、code128、2of5、postnet、ean-128、ean-13、ean-8、upc-a、upc-e、royal-mail-cbc、pdf417、datamatrix,其中最后两种是二维条形码。

一维码   二维码  

设置图片背景

显示数据库字段上的图片


三、特殊的报表效果

冻结窗口效果

点击表头排序

使用超链接子报表

当你浏览报表时,可能需要了解更详细的信息,比如,我们在浏览一个订单列表时,希望了解该订单中各货物的销售数量。这时,你可以在订单列表中,加一个超链接,使用户在点击该链接后,可以跳转到显示该订单明细的一个报表。
你可以在主表中,点击订单ID,即可浏览该订单出售的所有货物明细,如下图所示:

热点提示

复杂汇总

颜色警告

斑马条

创建页小计、页累计报表

 

四、可视化设计器

设计参数表单

杰表.2008配备了一个可视化参数表单设计器,使用这个设计器,你可以不离开报表设计器环境,轻松制作查询表单。表单设计器有丰富的web控件,检验,事件侦听,css样式机制,你也可以使用javascript脚本扩展表单功能,同时,也实现了常用的多个下拉框联动功能。

可视化的报表设计器

报表预览面板

 

posted @ 2009-03-04 17:58 report9d 阅读(5823) | 评论 (5)编辑 收藏