2010年3月30日星期二

OLAP(On_line Analytical Processing联机分析处理) 和 OLTP(On_line Transaction Processing联机事务处理)

OLAP(On_line Analytical Processing联机分析处理) 和 OLTP(On_line Transaction Processing联机事务处理)

OLTP:On_line Transaction Processing 联机事务处理 ,以业务处理为主

OLAP:On_line Analytical Processing     联机分析处理,则是专门为支持复杂的分析操作而设计的,侧重于对决策人员和高层管理人员的决策支持

2010年3月29日星期一

2010年3月11日星期四

GWT GXT探索

因为客户不满意界面设计,人家看中了兄弟单位用的系统的样子,可他却不知那时cs程序,要想用bs做成那样的效果还是先天不足,就这样开始了GWT GXT的探索,一边摸索一边用GXT重写这个系统
现在想想 经历了三个阶段
刚开始是demo阶段,因为不知道路走不走的通,全面摸索GXT能实现的效果,也没注意模块的规划,甚至就一个类
而后发现还是能走通的,就开始添砖加瓦,发现代码越加越乱,决心重构,定义了多个包,多个类负责不同的功能模块,定义了一些Panel,一下子清晰多了,也遇到了不同模块间互相调用的问题,自己想当然的办法就是在一个类中声明每个模块作为属性,就像一个总管,每个屋子的钥匙我都有了,也认识到了这样的缺点,一些模块中的事件不等不在这个主管中定义
现在Now,用一天时间再次改写,仿照Gxt中的例子Explorer
1、将各个模块定义成com.extjs.gxt.ui.client.mvc.View,View中必须实现方法handleEvent(AppEvent event),负责处理发给自己的事件
2、为每个View定义com.extjs.gxt.ui.client.mvc.Controller,每个Controller中包含View,在这里定义View要处理的事件
3、在Dispatcher中注册每个Controller

这样,每个View各司其职,他们各自有各自的功能,会接收为他们定义的所有事件并处理,发送事件Dispatcher.forwardEvent(appEvent);

感觉这次改写后 速度还没有改写前的快,现在每次操作url会自动添加Hash,想把它去掉,一直没找到根结

2010年3月3日星期三

Gwt中为加载中的Frame加上wait

Gwt中调用panel的setUrl方法嵌入一个网页
在网页加载过程中加入wait
在页面中加入javascript
var ready = false;
$j(document).ready(function(){
ready = true;
});//这里用了jquery

然后再java中声明
public native boolean ready(Element frame)/*-{
return frame.contentWindow.ready?true:false;
}-*/;

然后在设置Frame的url时
olapFrame = centerCp.setUrl(GWT.getHostPageBaseURL()
+ com.google.gwt.http.client.URL.encode("jsp/showOlap.jsp?dim="
+ dims + "&dimname=" + colLabels + ""));
final MessageBox box = MessageBox.wait("等待", "正在查询数据,请稍后...", "查询中...");
final Element frame = olapFrame.getElement();
final Timer t = new Timer() {
@Override
public void run() {
if (ready(frame)) {
this.cancel();
box.close();
}
}
};
t.scheduleRepeating(100);

eclipse中的add import organize imports

organize imports应该是ctrl+shift+o的操作
add import导入指定的类
organize imports导入所有需要导入的类,并且如果有些import是没用的,那么eclipse会自动删除

gwt中JavaScript访问java代码

javascript 调用java代码
//调用JAVA静态方法
//规则: @全路径类名::静态方法名(方法签名)(传入参数)
//@com.capinfo.cdss.gwt.olap.client.ui.PartOlapCenterTab::saveOlapState

(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava

/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)

(saveName,dims,rowDims,colDims,sql,colLabels,expandInfo,hideInfo,exp,field,remark);
//调用JAVA非静态方法
//规则:实例对象.@全路径类名::方法名(方法签名)(传入参数)
//this.@com.capinfo.cdss.gwt.olap.client.ui.PartOlapCenterTab::saveOlapState

(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava

/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)

(saveName,dims,rowDims,colDims,sql,colLabels,expandInfo,hideInfo,exp,field,remark);


//调用JAVA的非静态属性
//规则:实例对象.@全路径类名::属性名
//var field=this.@com.capinfo.cdss.gwt.olap.client.ui.PartOlapCenterTab::field;

参考:http://java.sun.com/j2se/1.4.2/docs/guide/jni/spec/types.html#wp16432
http://yonglin4605.javaeye.com/blog/568045
http://yonglin4605.javaeye.com/blog/564829

访问gwt嵌入页面中的元素

调用panel的setUrl方法嵌入一个网页
要访问这个网页中的js变量 var abc
setUrl返回一个Frame

public native void jsGetVar(Element element)/*-{
var abc = element.contentWindow.abc;
//element.contentWindow.document.getElementById("name");访问element
}-*/;

调用 jsGetVar(frame.getElement());

参考:http://tailorcai.javaeye.com/blog/186897

gwt 设置国际化

在*.gwt.xml中加入 显示中文
<inherits name="com.google.gwt.i18n.I18N"/>
<extend-property name="locale" values="zh" />
在页面中加入
<meta name="gwt:property" content="locale=zh" >

gxt 日期控件设置日期格式

ext-gwt 设置日期格式

DateField date = new DateField();
date.setPropertyEditor(new DateTimePropertyEditor("yyyy-MM-dd"));