package xin.glue.ui.common; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import xin.glue.ui.common.component.PosMessageMap; import com.posdata.glue.biz.constants.PosBizControlConstants; import com.posdata.glue.context.PosContext; import com.posdata.glue.dao.vo.PosRowSet; import com.posdata.glue.msg.PosMESMessageImpl; import com.posdata.glue.msg.PosMessage; public class PosMsgInterface extends PosDBEngine { public String runActivity(PosContext ctx) { String msgID = getProperty("msgID"); Map map = PosMessageMap.getMessageMap(msgID, getProperty("layout")); if (map == null || map.size() == 0) return PosBizControlConstants.SUCCESS; Initialize(); PosMessage message = new PosMESMessageImpl(); Map fields = new HashMap(); fields.putAll(map); setParamMap(ctx, "sqlkey", "param"); PosRowSet rowSet = (PosRowSet) Execute(ctx, "sqlkey", "param"); if (rowSet != null) { for (Iterator iterator = rowSet.next().getAttributes().entrySet().iterator(); iterator.hasNext();) { Map.Entry entry = (Map.Entry) iterator.next(); message.setObject(entry.getKey().toString(), entry.getValue()); fields.remove(entry.getKey()); } } for (Iterator iterator = fields.entrySet().iterator(); iterator.hasNext();) { Map.Entry entry = (Map.Entry) iterator.next(); Object key = entry.getKey(); Object value = ctx.get(key); if (value instanceof String[]) message.setObject(key.toString(), ((String[])value)[0]); else message.setObject(key.toString(), value); } if ("true".equals(getProperty("parseMessage"))) { StringBuffer sb = new StringBuffer(1024); int length = 0; for (Iterator iterator = fields.entrySet().iterator(); iterator.hasNext();) { Map.Entry entry = (Map.Entry) iterator.next(); sb.append(message.get(entry.getKey().toString())); length += Integer.parseInt(entry.getValue().toString()); sb.setLength(length); } message.setTC(sb.toString()); message.setTCID(msgID); } ctx.setMessage(message); return PosBizControlConstants.SUCCESS; } }