/**
* 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);
}
}
}
}
acc
最新推荐文章于 2024-08-12 16:47:32 发布