`
jimmy.shine
  • 浏览: 394874 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

报表开发方式简要描述

 
阅读更多

最简单的方式,是适合于POJO的需求,通过Annotation的方式来实现。

 

具体可以参见下面的代码范例:

@ReportClass(
		title = "Users",
		reportSheets = {
				@ReportSheet(
						freezed = 1,
						index = false,
						sheetName = "User",
						reportPrimitiveFields = {@ReportPrimitiveField(fieldName="email",width=20),
												 @ReportPrimitiveField(fieldName="name",width=15,
														 url="http://localhost:8080/vaalhaai/framework/identityUserAction!open.do?id=${id}"),
												 @ReportPrimitiveField(fieldName="loginId",width=20),
												 @ReportPrimitiveField(fieldName="nickName")
												 }
				),
		
				@ReportSheet(
						freezed = 2,
						index = true,
						sheetName = "All",
						reportPrimitiveFields = {@ReportPrimitiveField(fieldName="email",width=20),
												 @ReportPrimitiveField(fieldName="name",width=15),
												 @ReportPrimitiveField(fieldName="loginId",width=20),
												 @ReportPrimitiveField(fieldName="nickName",width = 20),
												 @ReportPrimitiveField(fieldName="password",width = 10)
												 },
						reportEntityCollectionFields = {
							@ReportEntityCollectionField(
									className="com.vaalhaai.framework.identity.entity.Group",
									sheetName="Group",
									fieldName="groups")	
						}
				)
			}
		)
public class User extends BaseEntity {

	private static final long serialVersionUID = 83202417663407938L;

	/** password */
	@Column(name = "PASSWORD")
	@Size(min = 6, max = 128)
	private String password;

	/** login id */
	@Column(name = "LOGIN_ID", unique = true)
	@Index(name = "FRAMEWORK_IDENTITY_USER_LOGINID", columnNames = "LOGIN_ID")
	@Size(min = 5, max = 50)
	private String loginId;

	/** email */
	@Column(name = "EMAIL")
	@Email
	@Size(max = 50)
	private String email;

	/** birthday */
	@Column(name = "BIRTHDAY")
	@Temporal(TemporalType.DATE)
	private Date birthday;

	/** gender */
	@Column(name = "GENDER")
	@Size(max = 10)
	private String gender;

	@Column(name = "NICK_NAME")
	@Size(max = 50)
	private String nickName;

	@Column(name = "CELLPHONE")
	@Size(max = 50)
	private String cellphone;

	@Column(name = "TELEPHONE")
	@Size(max = 50)
	private String telephone;

	@ManyToMany(cascade = { CascadeType.ALL })
	@JoinTable(name = "VAALHAAI_IDENTITY_USER_REF_GROUP", joinColumns = { @JoinColumn(name = "GROUP_ID") }, inverseJoinColumns = { @JoinColumn(name = "USER_ID") })
	private Set<Group> groups = new HashSet<Group>();

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getLoginId() {
		return loginId;
	}

	public void setLoginId(String loginId) {
		this.loginId = loginId;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public Date getBirthday() {
		return birthday;
	}

	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}

	/*
	 * public void setBirthday(String birthday) throws ParseException {
	 * this.birthday = DateUtil.parseDate(birthday); }
	 */
	public String getGender() {
		return gender;
	}

	public void setGender(String gender) {
		this.gender = gender;
	}

	public String getNickName() {
		return nickName;
	}

	public void setNickName(String nickName) {
		this.nickName = nickName;
	}

	/**
	 * @return the cellphone
	 */
	public String getCellphone() {
		return cellphone;
	}

	/**
	 * @param cellphone
	 *            the cellphone to set
	 */
	public void setCellphone(String cellphone) {
		this.cellphone = cellphone;
	}

	/**
	 * @return the groups
	 */
	public Set<Group> getGroups() {
		return groups;
	}

	/**
	 * @param groups
	 *            the groups to set
	 */
	public void setGroups(Set<Group> groups) {
		this.groups = groups;
	}

	public String getTelephone() {
		return telephone;
	}

	public void setTelephone(String telephone) {
		this.telephone = telephone;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = super.hashCode();
		result = prime * result + ((loginId == null) ? 0 : loginId.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (!super.equals(obj))
			return false;
		if (getClass() != obj.getClass())
			return false;
		User other = (User) obj;
		if (loginId == null) {
			if (other.loginId != null)
				return false;
		} else if (!loginId.equals(other.loginId))
			return false;
		return true;
	}

}

 定义可以在Annotation上面完成。

至于对于标题的中文支持,可以通过国际化的方式来实现。

User		= 用户

name 		= 姓名
loginId 	= 登录名
password 	= 密码
email		= 邮箱
birthday	= 出生日期
gender		= 性别
nickName	= 别名
cellphone	= 手机
telephone	= 电话
groups		= 群组

#报表
Users		= 用户
All			= 所有信息

 

如果你不喜欢用Annotation的方式,那就期待下一个版本吧,会支持使用数据库定制的方式!

分享到:
评论

相关推荐

    HID设备的报告描述符写法分析

    在深入探讨HID(Human Interface Devices)设备中的报告描述符之前,我们首先简要回顾一下USB描述符的基本概念及其分类。根据《Device Class Definition for Human Interface Devices (HID)》与《HID Usage Tables》...

    安卓图表报表相关-CircleTimerView.zip

    在Android应用开发中,图表和报表通常用于可视化数据,使用户能够更直观地理解应用程序中的信息。这可能包括进度条、饼图、环形图等不同类型的图表,用于显示时间、进度或其他数值指标。 【压缩包子文件的文件名称...

    DevExpress[1].XtraReport动态报表的制作

    报表标题是报表的重要组成部分之一,通常用于简要描述报表内容。设置标题可以通过以下方法实现: ```csharp public void setTitle() { this.xrLabelTitle.Text = this._testPlan.Test_name; } ``` 这里通过修改 `...

    ActiveReports 报表控件软件 V9.0 使用指南

    **ActiveReports** 是一款强大的报表生成工具,适用于多种开发环境,包括但不限于 Windows Forms、ASP.NET 和 WPF 应用程序。它提供了丰富的特性和功能,帮助开发者轻松地创建复杂而美观的报表。 ##### 1.1 ...

    安卓图表报表相关-WilliamChart各种图表效果实现大全.rar

    - "JavaApk源码说明.txt":这个文件很可能包含了对压缩包内源码的简要说明,包括如何理解、使用以及可能存在的问题和注意事项,是初学者入门的重要指导。 - "下载更多打包源码~.url":这是一个链接,可能指向更多...

    JIRA简要使用指南

    在 JIRA 中,核心概念是 Issue(话题),它有很多相关信息,包括话题类型、总结描述、相关项目、相关模块、影响到的版本、话题被解决的版本、发生环境、优先级、指定开发人员、报告人(话题创建者)、当前状态、话题...

    安卓图表报表相关-CircularButton.zip

    在Android开发中,图表报表是展示数据直观且有效的方式,特别是在数据分析、监控或者用户界面设计中。本资源“安卓图表报表相关-CircularButton.zip”似乎包含了一个与圆形按钮相关的项目,名为"CircularButton-...

    软件开发用户使用说明书

    1. **前言**:前言部分简要介绍了任务协同管理软件的基本概念,它是一个基于SOA架构的应用程序,整合了Windows Presentation、Web服务和SQL数据库功能,主要用于跟踪公司各部门的工作任务。任何人都能创建、查看和...

    ammap开源报表地图

    在Web应用开发中,特别是数据分析和展示领域,ammap因其易用性和灵活性而受到广泛关注。 在描述中提到“可以下了看看参考”,这暗示了ammap具有高度的可学习性和实践价值,开发者可以下载源代码,参考其设计和实现...

    安卓图表报表相关-PercentageCircle自定义圆环效果.zip

    【标题】中的“安卓图表报表相关-PercentageCircle自定义圆环效果”指的是一种在Android平台上实现的图形化展示方式,特别适用于展示数据的百分比情况。PercentageCircle是这个特定案例中使用的自定义视图,它创建了...

    一个简要的项目需求文档

    本文档是一份完整的项目需求文档,旨在描述一个简要的会议OA系统的需求规格说明书。该系统旨在提高公司的日常事务高效进行,并在线记录会议纪要及整个会议中的详细过程。 1. 系统概述 本系统是一个基于Web的会议OA...

    毕业设计,基于VB+SqlServer开发的火车站售票管理系统,内含完整源代码,数据库,论文答辩,毕业论文

    现代化的车站售票是集预定车票、售票 、退票、车次查询、报表及其他各种服务,车站售票组织庞大,服务项目多,信息量大,要想提高劳动生产,降低成本,提高服务质量和管理水平,进而促进经济效益,必须借助计算机来...

    06软件开发文档需求规格说明书FIHXRM准备金系统需求规

    例如,准备金计算、报表生成、数据存储和检索、异常处理等,每个功能都应清晰、具体,以便开发人员准确理解。 4. **非功能需求**:这部分涵盖了系统的性能、可靠性、安全性和可维护性等非功能性特性。例如,系统...

    不装FastReport还能使用FastReport设计的演示.

    FastReport是Delphi开发环境中常用的报表生成工具,它支持多种数据库连接,包括SQL SERVER,并提供了强大的报表设计功能。在Delphi中,FastReport的报表设计通常通过设计单元(如Unit1.ddp、Unit1.dfm)和源代码文件...

    PowerDesigner 15.1 简要使用手册 pdf.rar

    PowerDesigner是一款由Sybase公司开发的企业级数据建模工具,广泛应用于数据库设计、数据分析和数据仓库建模等领域。在本教程中,你将深入学习到如何利用PowerDesigner进行概念数据模型(CDM)、逻辑数据模型(LDM)...

    BOS开发指南_控件

    以上只是部分控件的简要介绍,更多详细的使用方法和技术细节,请参考《BOS开发指南_控件》文档。这些控件的灵活应用不仅能够提升应用程序的用户体验,还能够极大地提高开发效率。希望本篇内容能为正在学习和使用金蝶...

Global site tag (gtag.js) - Google Analytics