PagingHelper
dorado的CustomDataset,DODataset,MarmotDataset等实现分批数据下载功能时,需要按照dataset的需要提供其相应的数据以及要告诉dataset本次查询结果的总页数信息,典型代码(如Hibernate)如下:
int pageSize = dataset.getPageSize(); |
com.bstek.dorado.data.PagingHelper用于对List类型的数据提供分页计算的工具类。
构造函数如下:
PagingHelper(int pageSize, int pageIndex) //构造器 |
根据给定的pageSize,pageIndex可以计算出起始序号与结束序号,以及根据总记录数计算总页数等功能。
常用功能:
int getFromIndex() //返回当前页记录的起始序号。 |
采用PagingHelper之后,范例代码如下:
List employees = query.list(); // 通过逻辑层获得完整的结果集 |
ConnectionHelper
dorado中在datasource.xml中配置常用的数据连接可以通过工具类
com.bstek.dorado.common.ds.ConnectionHelper访问
Connection conn = ConnectionHelper.getConnection(String datasoruce); |
指定datasource.xml文件中配置的datasource获得相应的Connection对象,datasource.xml文件配置如下:
<?xml version="1.0" encoding="UTF-8"?> |
ConnectionHelper还提供了getDefaultConnection方法获取Connection:
Connection conn = ConnectionHelper.getDefaultConnection(); |
该方法自动从setting.xml文件的common.defaultDataSource获取默认的数据源:
<property name="common.defaultDataSource" value="doradosample"/> |
DoradoContext
com.bstek.dorado.common.DoradoContext:Dorado上下文对象。
此对象用于屏蔽用户的逻辑代码对Http的依赖, 保证代码的可移植性.
对于基于Http的应用, 我们建议您在逻辑代码中尽可能使用此对象替代对Request对象的访问.可以 使用如下代码获取DoradoContext:
DoradoContext context = DoradoContext.getContext(); |
注意:DoradoContext内部通过线程来标识不同的Context,以保证每个线程在调用 DoradoContext.getContext()时可以获的正确的Context对象. 该机制在绝大多数的Web应用的服务端代码中都不会有任何问题.
但是如果在一个多线程任务中使用DoradoContext.getContext()将无法获得预期的效果, 因此我们建议在启动多线程任务之前应首先将要访问的资源从Context中取出并传入到线程中.
但是通过DoradoContext也可以存取HTTP中的相关信息,分别提供了对HttpServletRequest, HttpSession, HttpServletContext等对象的属性存取工作。
DoradoConext提供了以几个方法存取HTTP中的信息:
根据指定的作用域从上下文中获取一个属性的值:
public java.lang.Object getAttribute(int scope, java.lang.String key) |
为指定的作用域中的某个属性设定一个值:
public abstract void setAttribute(int scope, |
其中scope属性的取值:
取值范围 |
等值于 |
DoradoContext.REQUEST |
Request范围(HttpServletRequest) |
DoradoContext.SESSION |
Session范围(HttpSession) |
DoradoContext.APPLICATION |
Application范围(ServletConext) |
DoradoContext.View |
View范围 |
以及方法:
public java.lang.Object getAttribute(java.lang.String key) |
从上下文的Request作用域中获取一个属性的值.对于基于Http的应用而言, 可以通过此方法来获取HttpServletRequest中的参数(Attribute)。
方法:
public java.lang.String getParameter(java.lang.String key) |
从上下文中获取一个参数的值.对于基于Http的应用而言, 可以通过此方法来获取HttpServletRequest中的参数(Parameter)。
HttpDoradoContext
dorado中用com.bstek.dorado.common.DoradoContext屏蔽用户的逻辑代码对Http的依赖,但我们还是可以通过HttpDoradoContext获得HttpServletRequest对象,使用方法如下:
HttpDoradoContext context = (HttpDoradoContext)DoradoContext.getContext(); |
Log
dorado的系统日志类,位于com.bstek.dorado.common.log包下。
使用
与log4j的使用基本类似。
Log.error(java.lang.Object o); |
集成到Log4J中
在log4j.properties中可以通过如下方式设置dorado的log日志等级设定:
Com.bstek.dorado.common.log.Log=DEBUG |
MessageHelper
com.bstek.dorado.common.MessageHelper是用于处理Message的工具类.
对于普通的Http请求而言,利用MessageHelper设置的消息可以通过 <d:MessageIterator>和<d:Message>显示到JSP中。使用方法如下:
第一步在action中加入相关信息
MessageHelper.addMessage(DoradoContext.getContext(), "密码错误!"); |
第二步在JSP中添加如下的标签:
<d:MessageIterator> |
对于Dorado的RPC调用而言(包含Dataset的动态数据加载和数据提交的Server段逻辑代码), 利用MessageHelper设置的消息将自动在RPC调用成功之后在Client端以弹出提示的方式显示给用户. 而其他其它消息会被Client端忽略。使用范例如:
MessageHelper.addMessage(DoradoContext.getContext(), "记录保存成功!"); |
VariantSet
可支持多种类型的对象集合。其功能类似于一个功能增强了的Map。dorado中的DBStatement,DOUtils等工具类的编程中会用到该对象,另外在dorado的一些参数集合中也会用到,例如View的properties(), Dataset的parameters()以及Field的properties()等都是以com.bstek.dorado.utils.variant.VariantSet为基类处理的。
与Map不同的是:
类型处理
VariantSet提供了类型的处理,如下的Map代码:
String empId = (String)map.get("empId"); |
使用VariantSet之后就可以用如下的代码访问:
String empId = variantSet.getString("empId"); |
VariantSet支持的数据类型有:
java.math.BigDecimal
boolean
byte
int
java.util.Date
double
float
long
short
java.lang.String
java.lang.Object
com.bstek.dorado.utils.variant.Variant
以上类型中Variant是dorado提供的一种用于包装以上列表中其他数据类型的特殊类型。也提供了数据类型处理功能:
Variant v = new Variant(); |
基本管理函数
另外VariantSet还提供了其他几个函数用与Map的对应表如下:
VariantSet |
Map |
count(); |
size(); |
clear(); |
clear(); |
equasl(Object o); |
equals(Object o); |
exists(String name); |
containsKey(Object key); |
VariantSet值存取操作
Map获取一个键值的代码:
Map m = new HashMap(); |
使用VariantSet可以用如下的代码访问:
VariatnSet v = new VariantSet(); |
另外,VariantSet还支持索引访问:
VariatnSet v = new VariantSet(); |
主键差异
Map对主键没有类型要求,VariantSet要求主键必须为String类型。
Setting
com.bstek.dorado.common.Setting 为dorado项目中存取setting.xml文件的工具类。
可以通过如下的代码访问和修改:
int maxCount = Setting.getInt("i18n.cache.maxCount"); |
修改:
Setting.setInt("i18n.cache.maxCount", "250"); |
Setting工具类一般来说属于系统使用,项目中不会轻易的接触该工具类,由于Setting.xml文件一般来说都属于整个工程中通用的,并且一般不需要动态的变动修改,因此建议Setting类以getXXX()的使用方式为主,只读不存。
UniqueKey
GUID(全球唯一标识)是微软使用的一个术语,由一个特定的算法,给某一个实体,如Word文档,创建一个唯一的标识,GUID值就是这个唯一的标识码。
com.bstek.dorado.utils.UniqueKey是生成全球唯一的GUID的工具类:
String key = UniqueKey.getKey(); |
(完)