059894b9ae91266732a1a5a2adab458bbccd9bc2.svn-base 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package xin.glue.ui.B.B02;
  2. import com.posdata.glue.biz.activity.PosActivity;
  3. import com.posdata.glue.biz.constants.PosBizControlConstants;
  4. import com.posdata.glue.context.PosContext;
  5. import com.posdata.glue.dao.PosGenericDao;
  6. import com.posdata.glue.dao.PosJdbcDao;
  7. import com.posdata.glue.dao.manager.PosQueryDefinition;
  8. import com.posdata.glue.dao.manager.PosQueryManager;
  9. import com.posdata.glue.dao.vo.PosParameter;
  10. import com.posdata.glue.dao.vo.PosRowSet;
  11. /**
  12. *
  13. * @Description 多条件查询
  14. * @author 梅贵平{meiguiping}
  15. * @date 2009-1-5 下午01:12:06
  16. * @JDK Version jdk1.4.2
  17. */
  18. public class MutilConditionFind extends PosActivity
  19. {
  20. public String runActivity(PosContext context)
  21. {
  22. PosGenericDao dao = this.getDao("mesdao");
  23. PosParameter param = new PosParameter();
  24. PosRowSet rowset = null;
  25. //参数:sql、subsql-count、subsqli、parami、resultkey
  26. StringBuffer sql = this.getQuerySql(this.getProperty("sql"));//sql查询
  27. int sqlCount= Integer.parseInt(this.getProperty("subsql-count"));//条件个数
  28. int len = 0;//每条SUBSQL的参数个数
  29. int jj = 0;
  30. String subsqli = "";
  31. String parami = "";
  32. for(int i=0; i < sqlCount; i++)
  33. {
  34. subsqli = this.getQuerySql(this.getProperty("subsql"+i)).toString();
  35. parami = this.getProperty("param"+i);
  36. // sql.append("\n"+subsqli);
  37. if(parami != null)
  38. {
  39. String[] sqlParam = parami.split("\\|");
  40. len = sqlParam.length;
  41. for(int j = 0; j < len; j++)
  42. {
  43. String[] sss = (String[])context.get(sqlParam[j]);
  44. if("".equals(sss[0]))//注意,这里只做了条件不为空的判断
  45. {
  46. continue;
  47. }
  48. if(j==0)
  49. {
  50. sql.append(subsqli+" \n ");
  51. }
  52. param.setWhereClauseParameter(jj++, sss[0]);
  53. }
  54. }//if end
  55. }//for end
  56. // System.out.println("###################################################\n"+sql.toString());
  57. String resultkey = this.getProperty("resultKey");
  58. rowset = dao.findByQueryStatement(sql.toString() , param);
  59. context.put(resultkey, rowset);
  60. return PosBizControlConstants.SUCCESS;
  61. }
  62. //获取query.xml文件中的SQL语句
  63. public StringBuffer getQuerySql(String id)
  64. {
  65. PosJdbcDao dao = (PosJdbcDao)this.getDao("mesdao");
  66. PosQueryManager ppt = dao.getQueryManager();
  67. PosQueryDefinition x = ppt.getQueryDefinition(id);
  68. return new StringBuffer(x.getQueryStatement());
  69. }
  70. }