53b6127814b4375779bef455ea5adfb0b0889343.svn-base 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package xin.glue.ui.common;
  2. import com.posdata.glue.biz.constants.PosBizControlConstants;
  3. import com.posdata.glue.context.PosContext;
  4. public class PosGridMultiSave extends PosDBEngine {
  5. /*
  6. * rowStatus:网格状态属性
  7. * writeLog :是否需要记录到日志
  8. * sqlkey-count:需要执行更新的表格数目
  9. * allkey-count:级联执行更新的表格数目
  10. * dao :所使用的DAO
  11. * 更新语句 :'sqlkey-u' + 序号,如 sqlkey-u0,sqlkey-u1,...
  12. * 参数 :'param-u' + 序号,多个参数以竖线分隔,如 REG_ID|REG_DATE
  13. * 插入语句 :'sqlkey-i' + 序号
  14. * 参数 :'param-i' + 序号
  15. * 删除语句 :'sqlkey-d' + 序号
  16. * 参数 :'param-d' + 序号
  17. */
  18. public String runActivity(PosContext ctx) {
  19. int count = 1;
  20. if (getProperty("sqlkey-count") != null)
  21. count = Integer.parseInt(getProperty("sqlkey-count").trim());
  22. int allcount = 1;
  23. if (getProperty("allkey-count") != null)
  24. allcount = Integer.parseInt(getProperty("allkey-count").trim());
  25. String[] rowStatus = null;
  26. if (getProperty("rowStatus") == null)
  27. rowStatus = (String[]) ctx.get("rowStatus");
  28. else
  29. rowStatus = (String[]) ctx.get(getProperty("rowStatus"));
  30. if (rowStatus == null || rowStatus.length == 0)
  31. return PosBizControlConstants.SUCCESS;
  32. Initialize();
  33. int rowCount = rowStatus.length;
  34. // 2. Get Parameter( 各语句参数名获取 )
  35. for (int i = 0; i < count; i++) {
  36. setParamMap(ctx, "sqlkey-u" + i, "param-u" + i, rowCount);
  37. setParamMap(ctx, "sqlkey-i" + i, "param-i" + i, rowCount);
  38. setParamMap(ctx, "sqlkey-d" + i, "param-d" + i, rowCount);
  39. }
  40. for (int i = 0; i < allcount; i++) {
  41. setParamMap(ctx, "sqlkey-au" + i, "param-au" + i, rowCount);
  42. setParamMap(ctx, "sqlkey-ai" + i, "param-ai" + i, rowCount);
  43. setParamMap(ctx, "sqlkey-ad" + i, "param-ad" + i, rowCount);
  44. }
  45. setParamIndex();
  46. String allStatus = getProperty("allStatus");
  47. if (allStatus == null || "".equals(allStatus))
  48. allStatus = "uid";
  49. for (int i = 0; i < rowCount; i++) {
  50. if (allStatus.indexOf(rowStatus[i]) > -1) {
  51. for (int j = 0; j < allcount; j++) {
  52. Execute(ctx, "sqlkey-au" + j, "param-au" + j, 'u');
  53. Execute(ctx, "sqlkey-ai" + j, "param-ai" + j, 'i');
  54. Execute(ctx, "sqlkey-ad" + j, "param-ad" + j, 'd');
  55. }
  56. }
  57. if ("u".equals(rowStatus[i])) {
  58. for (int j = 0; j < count; j++)
  59. Execute(ctx, "sqlkey-u" + j, "param-u" + j, 'u');
  60. } else if ("i".equals(rowStatus[i])) {
  61. for (int j = 0; j < count; j++)
  62. Execute(ctx, "sqlkey-i" + j, "param-i" + j, 'i');
  63. } else if ("d".equals(rowStatus[i])) {
  64. for (int j = 0; j < count; j++)
  65. Execute(ctx, "sqlkey-d" + j, "param-d" + j, 'd');
  66. }
  67. adjustParamIndex();
  68. }
  69. return PosBizControlConstants.SUCCESS;
  70. }
  71. }