8f1b63cd4362923d8cfe90cfcda82ecd42724a64.svn-base 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package xin.glue.ui.common;
  2. //import java.lang.reflect.Array;
  3. import com.posdata.glue.biz.constants.PosBizControlConstants;
  4. import com.posdata.glue.context.PosContext;
  5. import com.posdata.glue.dao.vo.PosRowSet;
  6. public class PosMultiSearch extends PosDBEngine {
  7. public String runActivity(PosContext ctx) {
  8. /*
  9. * 传入参数说明:
  10. * 1. class: 类名(com.xin.ui.PosInitParam)
  11. * 2. dao : dao 名(testdao)
  12. * 3. sqlkey-count: sqlkey 数量
  13. * 4. sqlkey 命名规则:'sqlkey' + 序号(0, 1, ...),如 sqlkey0, sqlkey1, ...
  14. * 5. param 参数规则:
  15. * 1) 参数命名规则:'param' + 参数序号
  16. * 2) 与 sqlkey 对应关系:通过序号实现
  17. * 6. resultkey:返回结果集前缀
  18. * 1) 结果集命名规则:resultkey + '_' + 序号,如:
  19. * resultkey 设置为 ListResult,返回结果集为 ListResult_0, ListResult_1, ...
  20. */
  21. int count = 1;
  22. if (getProperty("sqlkey-count") != null)
  23. count = Integer.parseInt(getProperty("sqlkey-count").trim());
  24. if (count == 0) return PosBizControlConstants.SUCCESS;
  25. Initialize("true".equalsIgnoreCase(getProperty("writeLog")));
  26. String resultkey = getProperty("resultkey");
  27. if (resultkey == null) {
  28. resultkey = "ListResult";
  29. for(int i = 0; i < count; i++) {
  30. String resultkeys = resultkey + "_" + i;
  31. setParamMap(ctx, "sqlkey" + i, "param" + i);
  32. Execute(resultkeys, ctx, "sqlkey" + i, "param" + i);
  33. }
  34. } else {
  35. String[] resultkeys = resultkey.split("\\|");
  36. int length = resultkeys.length;
  37. for(int i = 0; i < count; i++) {
  38. setParamMap(ctx, "sqlkey" + i, "param" + i);
  39. Execute((i<length)?resultkeys[i]:resultkeys[length-1], ctx, "sqlkey" + i, "param" + i);
  40. }
  41. }
  42. return PosBizControlConstants.SUCCESS;
  43. }
  44. protected void Execute(String resultkey, PosContext context, String sqlKey, String paramKey) {
  45. PosRowSet rowset = (PosRowSet)super.Execute(context, sqlKey, paramKey);
  46. if ((rowset != null && rowset.hasNext()) || context.get(resultkey) == null)
  47. context.put(resultkey, rowset);
  48. }
  49. /*
  50. private Object expand(Object array, int newSize) {
  51. if (array == null) return null;
  52. Class cls = array.getClass();
  53. if (cls.isArray()) {
  54. int len = Array.getLength(array);
  55. if (len >= newSize) {
  56. return array;
  57. } else {
  58. Class clsElement = cls.getComponentType();
  59. Object newArray = Array.newInstance(clsElement, newSize);
  60. System.arraycopy(array, 0, newArray, 0, len);
  61. return newArray;
  62. }
  63. } else {
  64. throw new ClassCastException("need array");
  65. }
  66. }
  67. private boolean containsKey(Object key, Object array) {
  68. if (array == null) return false;
  69. Class cls = array.getClass();
  70. if (cls.isArray()) {
  71. int len = Array.getLength(array);
  72. for (int i=0; i<len; i++) {
  73. if (key.equals([i])) return true;
  74. }
  75. }
  76. return false;
  77. }
  78. */
  79. }