acc

/**
* Copyright (c) HIDGroup All rights reserved.
* created by arwen at 2011
*/
package com.hid.action.base;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.zkoss.zk.ui.Component;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.Textbox;

import com.hid.exception.UIException;
import com.hid.util.ReflectUtil;
import com.thinkway.framework.po.BasePO;

/**
* DataBinder
*/
public class DataBinder {

private Map<String, DataBinderEntry> com2DataMap = new HashMap<String, DataBinderEntry>();

public void add(Component com, String dbKey, Class dataClazz) {

if (com.getId() == null) {
throw new UIException("binding component have no id value");
}
com2DataMap.put(com.getId(), new DataBinderEntry(com.getId(), com, dbKey, dataClazz));

}

public List<Component> getComponents() {
Set<String> keyset = com2DataMap.keySet();
List<Component> coms = new ArrayList();
for (String key : keyset) {
DataBinderEntry entry = com2DataMap.get(key);
coms.add(entry.getComponent());
}
return coms;
}

public DataBinderEntry getDataBinderEntry(String uiKey) {
return com2DataMap.get(uiKey);
}

public void loadData2Component(BasePO po) throws Exception {
Set<String> keyset = com2DataMap.keySet();
for (String key : keyset) {
DataBinderEntry entry = com2DataMap.get(key);
Component com = entry.getComponent();

String dbKey = entry.getDbKey();

Object data = ReflectUtil.invokeGetter(po, dbKey);

if (com instanceof Textbox) {
((Textbox) com).setValue((String)data);
} else if (com instanceof Intbox) {
((Intbox) com).setValue((Integer)data);
} else if (com instanceof Doublebox) {
((Doublebox) com).setValue((Double)data);
} else if (com instanceof Datebox) {
((Datebox) com).setValue((Date)data);
} else if (com instanceof Combobox) {
if (data == null) {
((Combobox)com).setSelectedIndex(-1);
} else {
List<Comboitem> items = ((Combobox)com).getItems();
String v = (String)data;
for (Comboitem item : items) {
if (item.getValue().equal(v)) {
((Combobox)com).setSelectedItem(item);
}
}
}
}
}
}

public void storeCompoent2Data(BasePO po) throws Exception{
Set<String> keyset = com2DataMap.keySet();
for (String key : keyset) {
DataBinderEntry entry = com2DataMap.get(key);
Component com = entry.getComponent();
String dbKey = entry.getDbKey();
Class dataClazz = entry.getDataClazz();
if (com instanceof Textbox) {
String value = ((Textbox) com).getValue();
ReflectUtil.invokeSetter(po, dbKey, dataClazz, value);
} else if (com instanceof Intbox) {
int value = ((Intbox)com).intValue();
ReflectUtil.invokeSetter(po, dbKey, dataClazz, value);
} else if (com instanceof Doublebox) {
double value = ((Doublebox)com).doubleValue();
ReflectUtil.invokeSetter(po, dbKey, dataClazz, value);
} else if (com instanceof Datebox) {
Date value = ((Datebox)com).getValue();
ReflectUtil.invokeSetter(po, dbKey, dataClazz, value);
} else if (com instanceof Combobox) {
Comboitem item = ((Combobox)com).getSelectedItem();
String value = null;
if (item != null) {
value = item.getValue();
}
ReflectUtil.invokeSetter(po, dbKey, dataClazz, value);
}


}
}



}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值