| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- package xin.glue.ui.common;
- import java.util.ArrayList;
- import java.util.List;
- import com.posdata.glue.biz.constants.PosBizControlConstants;
- import com.posdata.glue.context.PosContext;
- public class PosMultiGridSave extends PosDBEngine {
- public String runActivity(PosContext ctx) {
- /*
- * grid-count:需要存贮的风格数目
- * rowStatus :网格状态属性
- * writeLog :是否需要记录到日志
- * dao :所使用的 DAO
- * 更新语句 :'sqlkey-u' + 序号,如 sqlkey-u0,sqlkey-u1,...
- * 参数 :'param-u' + 序号,多个参数以竖线分隔,如 REG_ID|REG_DATE
- * 插入语句 :'sqlkey-i' + 序号
- * 参数 :'param-i' + 序号
- * 删除语句 :'sqlkey-d' + 序号
- * 参数 :'param-d' + 序号
- */
- int count = 2;
- if (getProperty("grid-count") != null)
- count = Integer.parseInt(getProperty("grid-count").trim());
- if (count == 0) return PosBizControlConstants.SUCCESS;
- List rowStatus = new ArrayList();
- if (getProperty("rowStatus") == null) {
- for (int i = 0; i < count; i++) {
- String rsName = "rowStatus_" + String.valueOf(i);
- rowStatus.add(ctx.get(rsName));
- }
- } else {
- String[] rsStatus = getProperty("rowStatus").trim().split("\\|");
- int len = rsStatus.length;
- if (len == 0) return PosBizControlConstants.SUCCESS;
- count = (len < count) ? len : count;
- for (int i = 0; i < count; i++) {
- String rsName = rsStatus[i].trim();
- if ("".equals(rsName)) continue;
- rowStatus.add(ctx.get(rsName));
- }
- }
- if (rowStatus.size() == 0) return PosBizControlConstants.SUCCESS;
- Initialize();
- // 2. Get Parameter( 各语句参数名获取 )
- for (int i = 0; i < count; i++) {
- String[] rsStatus = (String[]) rowStatus.get(i);
- if (rsStatus == null) continue;
- int length = rsStatus.length;
- setParamMap(ctx, "sqlkey-u" + i, "param-u" + i, length, true);
- setParamMap(ctx, "sqlkey-i" + i, "param-i" + i, length);
- setParamMap(ctx, "sqlkey-d" + i, "param-d" + i, length);
- }
- // 设定索引号
- setParamIndex();
- int startIdx = 0, endIdx = 0;
- String lastUpdate = "";
- String lastUpdateKey = "";
- String lastInsert = "";
- String lastInsertKey = "";
- String lastDelete = "";
- String lastDeleteKey = "";
- int length = count;
- for (int i = 0; i < length; i++) {
- String[] rsStatus = (String[]) rowStatus.get(i);
- if (rsStatus == null || rsStatus.length == 0) {
- continue;
- }
- startIdx = endIdx;
- count = rsStatus.length; // 该网格变动行数
- endIdx += count;
- String sqlkey = getProperty("sqlkey-u" + i);
- if (sqlkey != null && !"".equals(sqlkey)) {
- lastUpdate = "sqlkey-u" + i;
- lastUpdateKey = "param-u" + i;
- }
- sqlkey = getProperty("sqlkey-i" + i);
- if (sqlkey != null && !"".equals(sqlkey)) {
- lastInsert = "sqlkey-i" + i;
- lastInsertKey = "param-i" + i;
- }
- sqlkey = getProperty("sqlkey-d" + i);
- if (sqlkey != null && !"".equals(sqlkey)) {
- lastDelete = "sqlkey-d" + i;
- lastDeleteKey = "param-d" + i;
- }
- for (int j = startIdx; j < endIdx; j++) {
- if ("u".equals(rsStatus[j-startIdx]))
- Execute(ctx,lastUpdate, lastUpdateKey, 'u');
- else if ("i".equals(rsStatus[j-startIdx]))
- Execute(ctx,lastInsert, lastInsertKey, 'i');
- else if ("d".equals(rsStatus[j-startIdx]))
- Execute(ctx,lastDelete, lastDeleteKey, 'd');
- // 参数索引向上递增
- adjustParamIndex();
- }
- }
- return PosBizControlConstants.SUCCESS;
- }
- }
|