OpenJUMP
Scripting with BeanShell


PUBLIC ‘waveset.dtd’ ‘waveset.dtd’>




import java.sql.PreparedStatement;

/ 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();
}