dorado中的工具类xxxHelper

dorado中的工具类xxxHelper
PagingHelper
dorado的CustomDataset,DODataset,MarmotDataset等实现分批数据下载功能时,需要按照dataset的需要提供其相应的数据以及要告诉dataset本次查询结果的总页数信息,典型代码(如Hibernate)如下:
int pageSize = dataset.getPageSize();
int pageIndex = dataset.getPageIndex();
List employees = query.list();//获取所有的数据
...根据pageSize,pageIndex计算employees中符合条件的数据
dataset.fromDO(employees.subList(pageSize*(pageIndex-1), pageSize*pageIndex));//这里还要考虑pageIndex,pageSize为零的处理,整数处理
dataset.setPageCount(employees.size()/pageSize);//这里需要考虑为零的处理,整数处理
com.bstek.dorado.data.PagingHelper用于对List类型的数据提供分页计算的工具类。
构造函数如下:
PagingHelper(int pageSize, int pageIndex) //构造器
PagingHelper(int pageSize, int pageIndex, int totalRow) //构造器
根据给定的pageSize,pageIndex可以计算出起始序号与结束序号,以及根据总记录数计算总页数等功能。
常用功能:
int getFromIndex() //返回当前页记录的起始序号。
int getPageCount() //返回总页数。
int getToIndex() //返回当前页记录的结束序号。
采用PagingHelper之后,范例代码如下:
List employees = query.list(); // 通过逻辑层获得完整的结果集
PagingHelper paging = new PagingHelper(dataset.getPageSize(), dataset.getPageIndex(), employees.size());
List employees = employees.subList(paging.getFromIndex(), paging.getToIndex()); // 当页的记录
dataset.fromDO(employees);
dataset.setPageCount(paging.getPageCount());
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"?>
<datasources>
<datasource name="doradosample" type="JDBC">
<minEvictableIdleTimeMillis>30000</minEvictableIdleTimeMillis>
<timeBetweenEvictionRunsMillis>30000</timeBetweenEvictionRunsMillis>
<driver>com.mysql.jdbc.Driver</driver>
<url>jdbc:mysql://127.0.0.1:3306/doradosample</url>
<dialect>com.bstek.dorado.data.db.dialect.MySQLDialect</dialect>
<user>root</user>
<password>dorado</password>
<minIdle>0</minIdle>
<maxIdle>0</maxIdle>
<maxActive>0</maxActive>
<loginTimeout>0</loginTimeout>
<maxWait>0</maxWait>
</datasource>
</datasources>
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,
java.lang.String key,
java.lang.Object object)
其中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();
HttpServletRequest request = context.getRequest();
Log
dorado的系统日志类,位于com.bstek.dorado.common.log包下。
使用
与log4j的使用基本类似。
Log.error(java.lang.Object o);
Log.debug(java.lang.Object o);
Log.fatal(java.lang.Object o);
Log.info(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(), "密码错误!");
MessageHelper.addMessage(DoradoContext.getContext(), "用户登陆失败!");
第二步在JSP中添加如下的标签:
<d:MessageIterator>
<li><d:Message /></li>
</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();
v.setValue("ANLIN");
String empId = v.getString();
v.setValue(3000);
int num = v.getInt();
基本管理函数
另外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();
m.put("empId", "ANLIN");
String empId = (String)map.get("empId");
使用VariantSet可以用如下的代码访问:
VariatnSet v = new VariantSet();
v.setString("empId", "ANLIN");
String empId = v.getString("empId");
另外,VariantSet还支持索引访问:
VariatnSet v = new VariantSet();
v.setString("empId", "ANLIN");
v.setInt("num", 3000);
String empId = v.getString(0);
int num = v.getInt(1);
主键差异
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();

你可能感兴趣的:(dorado)