PUBLIC ‘waveset.dtd’ ‘waveset.dtd’>
/ First, define helper methods /
Object setDescr(String columnType, String columnName, String columnValue) {
String colType = columnType;
String colName = columnName;
Object val = columnValue;
return this;
}
String getSQLSetStrings(java.util.List pairList) {
StringBuffer buf = new StringBuffer();
for(int i = 0; pairList != null @and i @lt pairList.size(); i++) {
pair = pairList.get(i);
if (i @gt 0) {
buf.append(”, “);
}
if (i == 0) {
buf.append(“SET “);
}
buf.append(pair.colName + ” = ? “);
}
return buf.toString();
}
int setParameters(PreparedStatement st, java.util.List list, int startIndex ) {
for(int i = 0; i @lt list.size(); i++) {
pair = list.get(i);
String evalStr = “st.set” pair.colType “(” (startIndex+i) ”,pair.val)”;
eval(evalStr);
}
return startIndex + list.size();
}
// START HERE
id = actionContext.get(“id”);
newId = actionContext.get(“newId”);
conn = actionContext.get(“conn”);
action = actionContext.get(“action”);
errors = actionContext.get(“errors”);
trace = actionContext.get(“trace”);
password = actionContext.get(“password”);
Map attrs = actionContext.get(“attributes”);
PreparedStatement st = null;
try { / Turn off auto-commit so that all succeeds or fails atomically within the same transaction / conn.setAutoCommit(false);
if (newId != null) {
/ Handle a possible rename /
String sql = "UPDATE systwodb_users SET USERCODE = ? WHERE USERCODE = ?";
st = conn.prepareStatement(sql);
st.setString(1, newId);
st.setString(2, id);
st.executeUpdate();
}
String sql = "UPDATE systwodb_stns SET STATIONID = ? WHERE STATIONID = ?";
st = conn.prepareStatement(sql);
st.setString(1, newId);
st.setString(2, id);
st.executeUpdate();
/
Also update the user_aautorizacija and user_secur table
/
sql = "UPDATE user_autorizacija SET USERCODE = ? WHERE USERCODE = ?";
st = conn.prepareStatement(sql);
st.setString(1, newId);
st.setString(2, id);
st.executeUpdate();
sql = "UPDATE user_secur SET USERCODE = ? WHERE USERCODE = ?";
st = conn.prepareStatement(sql);
st.setString(1, newId);
st.setString(2, id);
st.executeUpdate();
conn.commit();
return;
StringBuffer sql = new StringBuffer();
sql.append("UPDATE systwodb_users ");
java.util.List setList = new java.util.ArrayList();
/ systwodb_users
Add a new set clause to setList for each updated attribute.
Later, we will execute a single UPDATE statement to update
all the changing columns.
/
if (attrs.containsKey("ACCESSGRP")) {
setList.add(setDescr("String", "ACCESSGRP", attrs.get("ACCESSGRP")));
}
if (attrs.containsKey("ALLOW_FT")) {
setList.add(setDescr("String", "ALLOW_FT", attrs.get("ALLOW_FT")));
}
if (attrs.containsKey("BRANCH")) {
setList.add(setDescr("String", "BRANCH", attrs.get("BRANCH")));
}
if (attrs.containsKey("DEALER")) {
setList.add(setDescr("String", "DEALER", attrs.get("DEALER")));
}
if (attrs.containsKey("EXPIRY_REL")) {
setList.add(setDescr("String", "EXPIRY_REL", attrs.get("EXPIRY_REL")));
}
if (attrs.containsKey("GLB_DTIME")) {
setList.add(setDescr("String", "GLB_DTIME", attrs.get("GLB_DTIME")));
}
if (attrs.containsKey("LANG")) {
setList.add(setDescr("String", "LANG", attrs.get("LANG")));
}
if (attrs.containsKey("LEND_AUTH")) {
setList.add(setDescr("String", "LEND_AUTH", attrs.get("LEND_AUTH")));
}
if (attrs.containsKey("MAINT")) {
setList.add(setDescr("String", "MAINT", attrs.get("MAINT")));
}
if (attrs.containsKey("OD_AUTH")) {
setList.add(setDescr("String", "OD_AUTH", attrs.get("OD_AUTH")));
}
if (attrs.containsKey("PORTFOLIO")) {
setList.add(setDescr("String", "PORTFOLIO", attrs.get("PORTFOLIO")));
}
if (attrs.containsKey("PWORD_FLG")) {
setList.add(setDescr("String", "PWORD_FLG", attrs.get("PWORD_FLG")));
}
if (attrs.containsKey("REINSTATE")) {
setList.add(setDescr("String", "REINSTATE", attrs.get("REINSTATE")));
}
if (attrs.containsKey("SEC_LEVEL")) {
setList.add(setDescr("String", "SEC_LEVEL", attrs.get("SEC_LEVEL")));
}
if (attrs.containsKey("SENS_ACT")) {
setList.add(setDescr("String", "SENS_ACT", attrs.get("SENS_ACT")));
}
if (attrs.containsKey("STARTSCRN")) {
setList.add(setDescr("String", "STARTSCRN", attrs.get("STARTSCRN")));
}
if (attrs.containsKey("STATIONID")) {
setList.add(setDescr("String", "STATIONID", attrs.get("STATIONID")));
}
if (attrs.containsKey("XTIMEOUT")) {
setList.add(setDescr("String", "XTIMEOUT", attrs.get("XTIMEOUT")));
}
if (attrs.containsKey("USERNAME")) {
setList.add(setDescr("String", "USERNAME", attrs.get("USERNAME")));
}
if (attrs.containsKey("USERPWORDE")) {
setList.add(setDescr("String", "USERPWORDE", attrs.get("USERPWORDE")));
}
if (setList.size() > 0) {
/
At least one column is being updated, so update the SQL
and set the parameters appropriately to acccomplish
the update.
/
sql.append(getSQLSetStrings(setList));
sql.append(" WHERE USERCODE = ?");
st = conn.prepareStatement(sql.toString());
int nextIndex = setParameters(st, setList, 1);
st.setString(nextIndex, id);
st.executeUpdate();
}
StringBuffer sql = new StringBuffer();
sql.append("UPDATE systwodb_stns ");
java.util.List setList = new java.util.ArrayList();
/ systwodb_stns
Add a new set clause to setList for each updated attribute.
Later, we will execute a single UPDATE statement to update
all the changing columns.
/
if (attrs.containsKey("ADDRS")) {
setList.add(setDescr("String", "ADDRS", attrs.get("ADDRS")));
}
if (attrs.containsKey("AS_OF_REL")) {
setList.add(setDescr("String", "AS_OF_REL", attrs.get("AS_OF_REL")));
}
if (attrs.containsKey("ATTEMPTS")) {
setList.add(setDescr("String", "ATTEMPTS", attrs.get("ATTEMPTS")));
}
if (attrs.containsKey("BATCH_NO")) {
setList.add(setDescr("String", "BATCH_NO", attrs.get("BATCH_NO")));
}
if (attrs.containsKey("BRANCH")) {
setList.add(setDescr("String", "BRANCH", attrs.get("BRANCH")));
}
if (attrs.containsKey("CNFM_PRNTR")) {
setList.add(setDescr("String", "CNFM_PRNTR", attrs.get("CNFM_PRNTR")));
}
if (attrs.containsKey("DBATCH_NO")) {
setList.add(setDescr("String", "DBATCH_NO", attrs.get("DBATCH_NO")));
}
if (attrs.containsKey("DISABLED")) {
setList.add(setDescr("String", "DISABLED", attrs.get("DISABLED")));
}
if (attrs.containsKey("MAINT")) {
setList.add(setDescr("String", "MAINT", attrs.get("MAINT")));
}
if (attrs.containsKey("GLB_DTIME")) {
setList.add(setDescr("String", "GLB_DTIME", attrs.get("GLB_DTIME")));
}
if (attrs.containsKey("NEWDATE")) {
setList.add(setDescr("String", "NEWDATE", attrs.get("NEWDATE")));
}
if (attrs.containsKey("PRINTER_ID")) {
setList.add(setDescr("String", "PRINTER_ID", attrs.get("PRINTER_ID")));
}
if (attrs.containsKey("PYMT_PRNTR")) {
setList.add(setDescr("String", "PYMT_PRNTR", attrs.get("PYMT_PRNTR")));
}
if (attrs.containsKey("RBATCH_NO")) {
setList.add(setDescr("String", "RBATCH_NO", attrs.get("RBATCH_NO")));
}
if (attrs.containsKey("STATPWORDE")) {
setList.add(setDescr("String", "STATPWORDE", attrs.get("STATPWORDE")));
}
if (attrs.containsKey("SYS_STATUS")) {
setList.add(setDescr("String", "SYS_STATUS", attrs.get("SYS_STATUS")));
}
if (attrs.containsKey("USERCODE")) {
setList.add(setDescr("String", "USERCODE", attrs.get("USERCODE")));
}
if (setList.size() > 0) {
/
At least one column is being updated, so update the SQL
and set the parameters appropriately to acccomplish
the update.
/
sql.append(getSQLSetStrings(setList));
sql.append(" WHERE STATIONID = ?");
st = conn.prepareStatement(sql.toString());
int nextIndex = setParameters(st, setList, 1);
st.setString(nextIndex, id);
st.executeUpdate();
}
/
This is a lazy and inefficient way to update the user_autorizacija table
/
String sqlStr = "DELETE FROM user_autorizacija WHERE USERCODE = ?";
st = conn.prepareStatement(sqlStr);
st.setString(1, id);
st.execute();
java.util.List autorList = null;
Object autors = attrs.get("autorizacije");
if (autorsIds != null) {
if (autorsIds instanceof String) {
autorList = new java.util.ArrayList();
autorList.add(autorsIds);
}
else if ( autorsIds instanceof java.util.List) {
autorList = autorsIds;
}
}
if (autorList != null) {
for(int i =0; i @lt autorList.size(); i++) {
String myautor = (String)autorList.get(i);
String[] autor = {myautor.split('|')};
}
/ Insert new row into user_autorizacija table /
sqlStr = "INSERT INTO user_autorizacija (USERCODE,APLIKACIJA,GRUPA_EKR,PRISTUP,POSAO,PRIVILEGIJA) VALUES(?,?,?,?,?,?)";
st = conn.prepareStatement(sqlStr);
st.setString(1, id);
}
for(int j=2; j<7; j++) {
if (autor[j-2] != null) {
st.setString(j, autorizacija[j-2]);
}
else {
st.setString(j, " ");
}
}
st.execute();
/
This is a lazy and inefficient way to update the user_secur table
/
String sqlStr = "DELETE FROM user_secur WHERE USERCODE = ?";
st = conn.prepareStatement(sqlStr);
st.setString(1, id);
st.execute();
java.util.List securList = null;
Object secureIds = attrs.get("secure");
if (secureIds != null) {
if (secureIds instanceof String) {
securList = new java.util.ArrayList();
securList.add(secureIds);
}
else if ( secureIds instanceof java.util.List) {
securList = secureIds;
}
}
if (securList != null) {
for(int i =0; i @lt securList.size(); i++) {
String mysecur = (String)securList.get(i);
String[] secur = mysecur.split('|');
}
/ Insert new row into user_secur table /
sqlStr = "INSERT INTO user_secur (USERCODE,APLIKACIJA,GRUPA_EKR,PRISTUP) VALUES(?,?,?,?)";
st = conn.prepareStatement(sqlStr);
st.setString(1, id);
}
for(int j=2; j<5; j++) {
if (secur[j-2] != null) {
st.setString(j, secur[j-2]);
}
else {
st.setString(j, " ");
}
}
st.execute();
/ Now commit all changes */
conn.commit();
} finally {
if (st != null)
st.close();
}