public ValueHolder execute(DefaultWebEvent event) throws NDSException, RemoteException { manager = helper.getTableManager(); Table table = manager.findTable(event.getParameterValue("table", true)); int tableId = table.getId(); String[] itemidStr = event.getParameterValues("itemid", true); User user = helper.getOperator(event); String operatorDesc = user.getDescription(); String tableName = table.getRealTableName(); String tableDesc = table.getDescription(event.getLocale()); if (itemidStr == null) itemidStr = new String[0]; java.sql.Connection con = null; QueryEngine engine = QueryEngine.getInstance(); con = engine.getConnection(); try { // logger.debug(" parent table of " + table + " is " + parent); int[] oids = new int[itemidStr.length]; for (int i = 0; i < oids.length; i++) oids[i] = Integer.parseInt(itemidStr[i]); ValueHolder v = new ValueHolder(); // 由于界面上无法控制所有的对象都具有相同层次的权限,故需要在此进行权限认证 // check permissions on all objects if (!SecurityUtils.hasPermissionOnAll( user.getId().intValue(), user.getName(), table.getName(), itemidStr, Directory.WRITE, event.getQuerySession())) { v.put("message", "@no-void-permission-on-all-pls-do-one-by-one@"); return v; } String res = "", s; int errCount = 0; for (int i = 0; i < itemidStr.length; i++) { int itemid = Tools.getInt(itemidStr[i], -1); s = voidOne(table, itemid, user.getId().intValue(), con); if (s != null) { res += s + "<br>"; errCount++; } else { logger.info( "Invalidate table=" + table + ", id=" + itemid + " by " + user.name + " of id " + user.id); } } String message = null; message = itemidStr.length + "@line@ @request-to-void@"; if (errCount > 0) message += ", @failed-count@:" + errCount + ", @detail-msg@:" + res; else message += ",@complete@"; v.put("message", message); return v; } catch (Exception t) { if (t instanceof NDSException) throw (NDSException) t; else { logger.error("Failed", t); throw new NDSException(t.getMessage(), t); } } finally { try { con.close(); } catch (Exception e) { } } }