f566d6ec942aa7790f44bd9b8c33b470d9b9a4f7.svn-base 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. package xin.glue.ui.common.component;
  2. import java.util.HashMap;
  3. import java.util.Iterator;
  4. import java.util.List;
  5. import java.util.Map;
  6. import java.util.Set;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. import com.posdata.glue.context.PosContext;
  10. import com.posdata.glue.dao.vo.PosRowSet;
  11. import com.posdata.glue.web.control.PosWebConstants;
  12. import common.Logger;
  13. import kr.co.comsquare.rwXmlLib.RwXml;
  14. public class PosTrustForm {
  15. protected HttpServletRequest request;
  16. protected HttpServletResponse response;
  17. private Map property = new HashMap();
  18. private boolean doGetAllow = false;
  19. // private Logger logger = new Loger();
  20. public PosTrustForm setDoGetAllow(boolean doGetAllow) {
  21. this.doGetAllow = doGetAllow;
  22. return this;
  23. }
  24. public PosTrustForm(HttpServletRequest request) {
  25. this(request, null);
  26. }
  27. public PosTrustForm(HttpServletRequest request, HttpServletResponse response) {
  28. super();
  29. this.request = request;
  30. this.response = response;
  31. }
  32. public PosTrustForm addProperty(String name, String value) {
  33. property.put(name, value);
  34. return this;
  35. }
  36. public String toString() {
  37. if (!(doGetAllow || request.getQueryString() == null)) return null;
  38. StringBuffer buffer = new StringBuffer();
  39. RwXml rx = new RwXml();
  40. rx.setEncoding("UTF-8");
  41. int rootNodeID = RwXml.rootNodeID;
  42. int resNode = rx.add(rootNodeID, "resData", "");
  43. if ("true".equalsIgnoreCase(request.getParameter("SystemProperty")) && property.size() > 0)
  44. setXml(rx, property, resNode, "Property");
  45. if (request != null) {
  46. try {
  47. PosContext ctx = (PosContext)request.getAttribute(PosWebConstants.CONTEXT);
  48. if (ctx == null) {
  49. String service = request.getParameter("ServiceName");
  50. String message = "Context is null, because Service [" + service + "] did not execute or has a problem.";
  51. throw new Exception(message);
  52. // logger.logInfo("");
  53. }
  54. Throwable ex = ctx.getException();
  55. //if (ex != null) {
  56. // throw new Exception(ex.getMessage());
  57. //}
  58. String[] resultKeys = (String[]) ctx.get("ResultKeyList");
  59. if (resultKeys != null && resultKeys.length > 0) {
  60. int length = resultKeys.length;
  61. for (int i = 0; i < length; i++) {
  62. Object data = ctx.get(resultKeys[i]);
  63. int voNode = rx.add(resNode, resultKeys[i] + "_VO", "");
  64. setXml(rx, data, voNode, resultKeys[i] + "_Row");
  65. }
  66. } else {
  67. throw new Exception("Context do not have [ResultKeyList].");
  68. }
  69. ex = ctx.getException();
  70. if (ex != null) {
  71. rx.add(resNode, "errorData", "<![CDATA[" + ex.getMessage() + "]]>");
  72. }
  73. } catch (Exception ex) {
  74. buffer.append(ex.toString());
  75. rx.add(resNode, "errorData", ex.getMessage());
  76. ex.printStackTrace();
  77. }
  78. }
  79. buffer.append(rx.xmlFlush());
  80. buffer.append(rx.xmlEndFlush());
  81. return buffer.toString();
  82. }
  83. protected void setXml(RwXml rx, Object data, int voNode, String resultKey) {
  84. if (data instanceof PosRowSet) setXml(rx, (PosRowSet)data, voNode, resultKey);
  85. else if (data instanceof List) setXml(rx, (List)data, voNode, resultKey);
  86. else if (data instanceof Map) setXml(rx, (Map)data, voNode, resultKey);
  87. else if (data != null) rx.add(voNode, resultKey, data.toString());
  88. }
  89. private void setXml(RwXml rx, Map mapData, int voNode, String resultKey) {
  90. Set keySet = mapData.keySet();
  91. Iterator keyItr = keySet.iterator();
  92. Object key = null;
  93. int rowNode = rx.add(voNode, resultKey, "");
  94. while (keyItr.hasNext()) {
  95. key = keyItr.next();
  96. Object keyData = mapData.get(key);
  97. if (keyData == null) rx.add(rowNode, key.toString(), "");
  98. else rx.add(rowNode, key.toString(), keyData.toString().replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;"));
  99. }
  100. }
  101. private void setXml(RwXml rx, PosRowSet rowSet, int voNode, String resultKey) {
  102. rowSet.reset();
  103. while (rowSet.hasNext()) {
  104. setXml(rx, rowSet.next().getAttributes(), voNode, resultKey);
  105. }
  106. }
  107. private void setXml(RwXml rx, List listSet, int voNode, String resultKey) {
  108. int listSize = listSet.size();
  109. for (int i = 0; i < listSize; i++) {
  110. setXml(rx, listSet.get(i), voNode, resultKey);
  111. }
  112. }
  113. }