package xin.glue.scheduling; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Map; import com.posdata.glue.biz.activity.PosActivity; import com.posdata.glue.biz.constants.PosBizControlConstants; import com.posdata.glue.biz.control.PosBizProvider; import com.posdata.glue.component.layout.PosXmlMessageLayout; import com.posdata.glue.context.PosContext; import com.posdata.glue.dao.PosGenericDao; import com.posdata.glue.dao.manager.PosQueryDefinition; import com.posdata.glue.dao.manager.PosQueryManager; import com.posdata.glue.dao.vo.PosParameter; import com.posdata.glue.msg.PosMESMessageImpl; import com.posdata.glue.msg.PosMessage; import com.posdata.glue.msg.util.PosMessageUtil; public abstract class XinHandleDataL2 extends PosActivity { private static byte[] lock = new byte[0]; // ÌØÊâµÄinstance±äÁ¿ protected PosGenericDao getDao() { String testdao = getProperty("dao"); if (testdao == null) testdao = "mesdao"; else testdao = testdao.trim(); return getDao(testdao); } protected boolean UpdateRec(String sqlKey, Object[] args) { try { PosParameter param = new PosParameter(); for (int i = 0; i < args.length; i++) param.setWhereClauseParameter(i, args[i]); if (getDao().update(sqlKey, param) == 1) return true; else { StringBuffer sb = new StringBuffer("Record update failure!!\n"); sb.append("SqlKey: ").append(sqlKey).append("\n"); PosQueryManager queryManager = (PosQueryManager)PosContext.getBeanFactory().getBeanObject("queryManager"); PosQueryDefinition queryDefinition = queryManager.getQueryDefinition(sqlKey); if (queryDefinition != null) { String sql = queryDefinition.getQueryStatement(); for (int i = 0; i < args.length; i++) sql.replaceFirst("?", args[i].toString()); sb.append(sql); } logger.logError(sb.toString()); } } catch (Exception e) { logger.logError(e); } return false; } protected void TC_SEND(String sMsg, String TcId) { PosContext context = new PosContext(); PosMessage message = new PosMESMessageImpl(); context.setMessage(message); message.setTC(sMsg); message.setTCID(TcId); context.put(PosBizControlConstants.SERVICE_NAME, TcId + "-service"); synchronized(lock) { PosBizProvider.getController().doSubController(context, false); } } private String setLength(int len) { if (len < 10) return "000" + len; else if (len < 100) return "00" + len; else if (len < 1000) return "0" + len; return "" + len; } private String setLength(String sMsg, int len) { for (int i = sMsg.length(); i < len; i++) sMsg += ' '; return sMsg.substring(0, len); } protected String getMessage(String sMsg, String TcId) { StringBuffer msg = new StringBuffer(); try { List attributes = new PosXmlMessageLayout().getAttributes(TcId).getAttributes(); Collections.sort(attributes, new Comparator() { public int compare(Object o1, Object o2) { return (Integer.parseInt(PosMessageUtil.getSource(o1, "seq").toString()) - Integer.parseInt(PosMessageUtil.getSource(o2, "seq").toString())); }}); int mLen = sMsg.length(); int iLen = 0; for (int i = 0, size = attributes.size(); i < size; i++) { Map attribute = (Map) attributes.get(i); String key = (String) attribute.get("id"); msg.append(setLength(key, 20)).append('[').append(setLength(iLen)).append(" "); int len = Integer.parseInt(attribute.get("length").toString()); msg.append(setLength(len)).append("] "); if (iLen + len <= mLen) msg.append(sMsg.substring(iLen, iLen + len)); else if (iLen < mLen) msg.append(sMsg.substring(iLen, mLen - iLen)); else msg.append('*'); msg.append('\n'); iLen += len; } msg.insert(0, "[Message Length: " + sMsg.length() + "]\t[Request Length: " + iLen + "]\n"); msg.insert(0, sMsg + '\n'); } catch (Exception e) { return TcId + ": " + sMsg; } return msg.toString(); } }