/** * 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
猜你喜欢
转载自arwenchen.iteye.com/blog/1189937
今日推荐
周排行