ucUpsertUserRecord

Purpose

Applies To

User Account Display

Signature

public ArrayList ucUpsertUserRecord( 
                Connection dbconn, 
                SesameSession session, 
                SecurityUser su, 
                HashMap suHm, 
                ArrayList UFIColumnDope ) 

Notes

Example

public ArrayList ucUpsertUserRecord(
                   Connection dbconn, 
                   SesameSession session, 
                   SecurityUser su, 
                   HashMap suHm, 
                   ArrayList UFIColumnDope ) 
                       throws Exception {
      
      //Loop through the UFIDope array list, for each table, pick up the column name
      //then grab the values, if any, from the suHm and do that insert
      ArrayList uarSecGroupIdList = new ArrayList();
      ArrayList uarAreaIdList = new ArrayList();
      ArrayList ugUserGroupIdList = new ArrayList();
      String tempVal = new String();
      for (int x=0; x< UFIColumnDope.size(); x++) {
        tempVal = "";
        UFIColumnDope ufi = (UFIColumnDope)UFIColumnDope.get(x);
        String columnName = ufi.getColumnName();

        //UC_USER_AREA_ROLE.SECURITY_GROUP_ID is a column name
        //ADMIN is the value OP_SPECIALE

        //UC_USER_AREA_ROLE.AREA_ID is a column name
        //Fault Tracking is the value
        //Conformance is the value
        if (suHm.containsKey(columnName)) {

          if (suHm.get(columnName) instanceof ArrayList){
             //grab each arrayList and keep it until the end of the columnDope loop
             if ("UC_USER_AREA_ROLE.SECURITY_GROUP_ID".equalsIgnoreCase(columnName)) {
               uarSecGroupIdList = (ArrayList)suHm.get(columnName);
             } else if ("UC_USER_AREA_ROLE.AREA_ID".equalsIgnoreCase(columnName)) {
               uarAreaIdList = (ArrayList) suHm.get(columnName);
             } else if ("USER_GROUP_ID".equalsIgnoreCase(columnName)) {
               ugUserGroupIdList = (ArrayList) suHm.get(columnName);
             }
          } else {
            if ("UC_USER_AREA_ROLE.SECURITY_GROUP_ID".equalsIgnoreCase(columnName)){
              tempVal = (String)suHm.get(columnName);
              uarSecGroupIdList.add(tempVal);
            } else if ("UC_USER_AREA_ROLE.AREA_ID".equalsIgnoreCase(columnName)) {
              tempVal = (String)suHm.get(columnName);
              uarAreaIdList.add(tempVal);
            } else if ("USER_GROUP_ID".equalsIgnoreCase(columnName)){
              tempVal = (String)suHm.get(columnName);
              ugUserGroupIdList.add(tempVal);
            }
          }
        }
      }

      //now that we've looped through all of the columns for this user, we should
      //have a handful of ArrayLists that we can pull data out of and insert appropriate
      //values into the system for the current user.

      //first we'll work on the UC_USER_AREA_ROLE table
      ArrayList areaRoleList = new ArrayList();

      for (int y=0; y<uarAreaIdList.size(); y++) {
        String areaVal = new String();
        String roleVal = new String();

        areaVal = (String)uarAreaIdList.get(y);

        if (uarSecGroupIdList.size()>0 && uarSecGroupIdList.size()<=y) {
          roleVal = (String)uarSecGroupIdList.get(y);
        }
        if (TextManager.isStringVisible(areaVal) && TextManager.isStringVisible(roleVal) ) {
          areaRoleList.add(areaVal + "|" + roleVal);
        }
      }

      //when inserting users into user area roles, we'll also use the standard
      //methods so that we're consistent with the GUI methodology
      if (areaRoleList.size()>0){
        UserAreaRole.addMultiple(dbconn, su.getId(), areaRoleList, session.getUserId());
      }

      //now let's deal with the USER_GROUP stuff
      //when inserting users into user groups, we want to use the custom methods
      //so that the user is also added to each project, privacy group etc etc
      for (int y=0; y<ugUserGroupIdList.size(); y++){
        String userGroupId = (String)ugUserGroupIdList.get(y);
        if (TextManager.isStringVisible(userGroupId)) {
          Z.log.writeToLog(Z.log.DEBUG, "adding " + userGroupId + " for user " + su.getId());
          UserGroup.addUserToUserGroup(dbconn, userGroupId, su.getId());
        }
      }
      return null;
    }