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; } }