038ccfbc83385e02bd0f13d149930f4e8ce48968.svn-base 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package xin.glue.ui.common;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import com.posdata.glue.biz.constants.PosBizControlConstants;
  5. import com.posdata.glue.context.PosContext;
  6. public class PosMultiGridSave extends PosDBEngine {
  7. public String runActivity(PosContext ctx) {
  8. /*
  9. * grid-count:需要存贮的风格数目
  10. * rowStatus :网格状态属性
  11. * writeLog :是否需要记录到日志
  12. * dao :所使用的 DAO
  13. * 更新语句 :'sqlkey-u' + 序号,如 sqlkey-u0,sqlkey-u1,...
  14. * 参数 :'param-u' + 序号,多个参数以竖线分隔,如 REG_ID|REG_DATE
  15. * 插入语句 :'sqlkey-i' + 序号
  16. * 参数 :'param-i' + 序号
  17. * 删除语句 :'sqlkey-d' + 序号
  18. * 参数 :'param-d' + 序号
  19. */
  20. int count = 2;
  21. if (getProperty("grid-count") != null)
  22. count = Integer.parseInt(getProperty("grid-count").trim());
  23. if (count == 0) return PosBizControlConstants.SUCCESS;
  24. List rowStatus = new ArrayList();
  25. if (getProperty("rowStatus") == null) {
  26. for (int i = 0; i < count; i++) {
  27. String rsName = "rowStatus_" + String.valueOf(i);
  28. rowStatus.add(ctx.get(rsName));
  29. }
  30. } else {
  31. String[] rsStatus = getProperty("rowStatus").trim().split("\\|");
  32. int len = rsStatus.length;
  33. if (len == 0) return PosBizControlConstants.SUCCESS;
  34. count = (len < count) ? len : count;
  35. for (int i = 0; i < count; i++) {
  36. String rsName = rsStatus[i].trim();
  37. if ("".equals(rsName)) continue;
  38. rowStatus.add(ctx.get(rsName));
  39. }
  40. }
  41. if (rowStatus.size() == 0) return PosBizControlConstants.SUCCESS;
  42. Initialize();
  43. // 2. Get Parameter( 各语句参数名获取 )
  44. for (int i = 0; i < count; i++) {
  45. String[] rsStatus = (String[]) rowStatus.get(i);
  46. if (rsStatus == null) continue;
  47. int length = rsStatus.length;
  48. setParamMap(ctx, "sqlkey-u" + i, "param-u" + i, length, true);
  49. setParamMap(ctx, "sqlkey-i" + i, "param-i" + i, length);
  50. setParamMap(ctx, "sqlkey-d" + i, "param-d" + i, length);
  51. }
  52. // 设定索引号
  53. setParamIndex();
  54. int startIdx = 0, endIdx = 0;
  55. String lastUpdate = "";
  56. String lastUpdateKey = "";
  57. String lastInsert = "";
  58. String lastInsertKey = "";
  59. String lastDelete = "";
  60. String lastDeleteKey = "";
  61. int length = count;
  62. for (int i = 0; i < length; i++) {
  63. String[] rsStatus = (String[]) rowStatus.get(i);
  64. if (rsStatus == null || rsStatus.length == 0) {
  65. continue;
  66. }
  67. startIdx = endIdx;
  68. count = rsStatus.length; // 该网格变动行数
  69. endIdx += count;
  70. String sqlkey = getProperty("sqlkey-u" + i);
  71. if (sqlkey != null && !"".equals(sqlkey)) {
  72. lastUpdate = "sqlkey-u" + i;
  73. lastUpdateKey = "param-u" + i;
  74. }
  75. sqlkey = getProperty("sqlkey-i" + i);
  76. if (sqlkey != null && !"".equals(sqlkey)) {
  77. lastInsert = "sqlkey-i" + i;
  78. lastInsertKey = "param-i" + i;
  79. }
  80. sqlkey = getProperty("sqlkey-d" + i);
  81. if (sqlkey != null && !"".equals(sqlkey)) {
  82. lastDelete = "sqlkey-d" + i;
  83. lastDeleteKey = "param-d" + i;
  84. }
  85. for (int j = startIdx; j < endIdx; j++) {
  86. if ("u".equals(rsStatus[j-startIdx]))
  87. Execute(ctx,lastUpdate, lastUpdateKey, 'u');
  88. else if ("i".equals(rsStatus[j-startIdx]))
  89. Execute(ctx,lastInsert, lastInsertKey, 'i');
  90. else if ("d".equals(rsStatus[j-startIdx]))
  91. Execute(ctx,lastDelete, lastDeleteKey, 'd');
  92. // 参数索引向上递增
  93. adjustParamIndex();
  94. }
  95. }
  96. return PosBizControlConstants.SUCCESS;
  97. }
  98. }