ucFilterUserPopup is called when the USER_LIST_DISPLAY behavior setting has a value of POPUP, and can be used to filter the results of a user search by modifying the TreeMap parameter.
Field Rendering Methods
public void ucFilterUserPopup (SesameSession session,
TreeMap userMap)
public void ucFilterUserPopup (SesameSession session,
TreeMap userMap) {
String role = session.getUserRole();
// only perform check for Customer role
if (! "CLIENT".equals(role) ) return;
// For Customer (CLIENT) role, filter search results to only users
// with same Company Name as the CUSTOMER_ID field value on the record
// NOTE: THIS FILTERING AFFECTS ALL USER FIELDS, AS OPPOSED TO THE
// SPECIFIC FIELDS LISTED IN THE checkCustomerFields METHOD.
HashMap tabVals = (HashMap) session.getAttribute("TAB_VALS");
String companyName = null;
String customerUdfListId = null;
// first, get the Company Name from the CUSTOMER_ID field
if (tabVals != null) {
customerUdfListId = (String) tabVals.get("CUSTOMER_ID");
Connection con = null;
try {
con = Z.pool.getConnection("ucFilterUserPopup");
UdfList ul = UdfList.getReference(con, customerUdfListId);
companyName = ul.getTitle();
}
catch (Exception e) {
ErrorWriter.write(e, ErrorWriter.LOGERR);
}
finally {
Z.pool.close(con);
}
}
// otherwise, get the Company Name from the current user
else {
SecurityUser su = (SecurityUser) session.getAttribute("USER");
if (su != null) {
companyName = su.getCompanyName();
}
}
if (companyName == null) {
Z.log.writeToLog(Z.log.WARN,
"ucFilterUserPopup: NO COMPANY NAME DETECTED FOR USER SEARCH FILTERING");
userMap.clear();
}
// go through list of users and remove the ones not matching the Company Name
Iterator i = userMap.keySet().iterator();
ArrayList removeList = new ArrayList();
while (i.hasNext() ) {
String key = (String) i.next();
HashMap hm = (HashMap) userMap.get(key);
String userCompany = (String) hm.get("COMPANY_NAME");
if (! companyName.equals(userCompany) ) {
removeList.add(key);
}
}
for (int j = 0; j < removeList.size(); j++) {
userMap.remove(removeList.get(j));
}
}