[Ils-source] r1281 - in trunk: src/com/resolutions/ils/data webapp
scribe at crosswire.org
scribe at crosswire.org
Thu Dec 11 14:17:12 MST 2014
Author: scribe
Date: 2014-12-11 14:17:12 -0700 (Thu, 11 Dec 2014)
New Revision: 1281
Modified:
trunk/src/com/resolutions/ils/data/UserProfile.java
trunk/webapp/admin_profilemanagement.jsp
trunk/webapp/admin_studentrecords.jsp
Log:
Optimized searching for user profiles
Modified: trunk/src/com/resolutions/ils/data/UserProfile.java
===================================================================
--- trunk/src/com/resolutions/ils/data/UserProfile.java 2014-12-08 22:08:55 UTC (rev 1280)
+++ trunk/src/com/resolutions/ils/data/UserProfile.java 2014-12-11 21:17:12 UTC (rev 1281)
@@ -279,17 +279,17 @@
" RIGHT JOIN USERPROFILE UP2 on UP2.USERPRID=T2.USERPRID AND UP2.COMPANYID={COMPANYID}";
static public Vector<UserProfile> getSearchUserProfiles(ILSSession session, int locID, int roleID,
- String lName, String empNum, int statusID, int accessLevel, Date hireStartDate, Date hireEndDate, int managerID) {
- return getSearchUserProfiles(session, locID != -1 ? new HashSet<Integer>(Arrays.asList(new Integer[] { locID })) : null, roleID != -1 ? new HashSet<Integer>(Arrays.asList(new Integer[] { roleID })) : null, lName, empNum, statusID, accessLevel, hireStartDate, hireEndDate, managerID);
+ String lName, String empNum, int statusID, int accessLevel, Date hireStartDate, Date hireEndDate, int managerID, boolean preloadCourseData) {
+ return getSearchUserProfiles(session, locID != -1 ? new HashSet<Integer>(Arrays.asList(new Integer[] { locID })) : null, roleID != -1 ? new HashSet<Integer>(Arrays.asList(new Integer[] { roleID })) : null, lName, empNum, statusID, accessLevel, hireStartDate, hireEndDate, managerID, preloadCourseData);
}
static public Vector<UserProfile> getSearchUserProfiles(ILSSession session, Set<Integer> locIDs, Set<Integer> roleIDs,
- String lName, String empNum, int statusID, int accessLevel, Date hireStartDate, Date hireEndDate, int managerID) {
+ String lName, String empNum, int statusID, int accessLevel, Date hireStartDate, Date hireEndDate, int managerID, boolean preloadCourseData) {
long timer = System.currentTimeMillis();
logger.debug("getSearchUserProfiles start(0)");
UserProfile retVal = new UserProfile();
- String sql = "SELECT UP2.USERPRID";
+ String columns = "UP2.USERPRID";
String tables = "USERPROFILE UP2";
String where = "UP2.COMPANYID={COMPANYID}";
retVal.setCompanyID(session.getCompanyID());
@@ -351,17 +351,25 @@
where += " AND upper(USERPRNUM) like {USERPRNUM}";
retVal.setUserProfileNum(empNum.toUpperCase() + "%");
}
- sql += " FROM " + tables + " WHERE " + where;
- String outerSQL = USERCOURSESUMMARY + " WHERE UP2.USERPRID IN ("+sql+") GROUP BY UP2.USERPRID, UP2.USERPRLNAME, UP2.USERPRFNAME, UP2.USERPRNUM, UP2.USERPRADDR2, UP2.USERPRHIREDATE";
logger.debug("getSearchUserProfiles about to getDataSet ("+(System.currentTimeMillis() - timer)+")"); timer = System.currentTimeMillis();
- Vector<UserProfile> results = retVal.getDataSet(outerSQL + " OPTION (RECOMPILE)");
+ String sql = null;
+ if (preloadCourseData) {
+ sql = "SELECT UP2.USERPRID FROM " + tables + " WHERE " + where;
+ sql = USERCOURSESUMMARY + " WHERE UP2.USERPRID IN ("+sql+") GROUP BY UP2.USERPRID, UP2.USERPRLNAME, UP2.USERPRFNAME, UP2.USERPRNUM, UP2.USERPRADDR2, UP2.USERPRHIREDATE OPTION (RECOMPILE)";
+ }
+ else sql = "SELECT UP2.USERPRID, UP2.USERPRLNAME, UP2.USERPRFNAME, UP2.USERPRNUM, UP2.USERPRADDR2, UP2.USERPRHIREDATE FROM " + tables + " WHERE " + where;
+ Vector<UserProfile> results = retVal.getDataSet(sql);
+
logger.debug("getSearchUserProfiles after getDataSet["+results.size()+"] ("+(System.currentTimeMillis() - timer)+")"); timer = System.currentTimeMillis();
- // we've precached all our delay loads, so let's set our bits high to say so.
- for (UserProfile up: results) {
- up.isCourseSummaryDataLoaded = true;
- up.isRoleLoaded = true;
- up.isWorkgroupLoaded = true;
- }
+
+ if (preloadCourseData) {
+ // we've precached all our delay loads, so let's set our bits high to say so.
+ for (UserProfile up: results) {
+ up.isCourseSummaryDataLoaded = true;
+ up.isRoleLoaded = true;
+ up.isWorkgroupLoaded = true;
+ }
+ }
logger.debug("getSearchUserProfiles end ("+(System.currentTimeMillis() - timer)+")"); timer = System.currentTimeMillis();
return results;
}
Modified: trunk/webapp/admin_profilemanagement.jsp
===================================================================
--- trunk/webapp/admin_profilemanagement.jsp 2014-12-08 22:08:55 UTC (rev 1280)
+++ trunk/webapp/admin_profilemanagement.jsp 2014-12-11 21:17:12 UTC (rev 1281)
@@ -178,7 +178,7 @@
}
if ("lookup".equals(action)) {
- userProfiles = UserProfile.getSearchUserProfiles(ilsSession, requestedLocations, requestedRoles, currentLName, currentEmpID, statusID, currentAccessLevel, hireStartDate, hireEndDate, limitToManager);
+ userProfiles = UserProfile.getSearchUserProfiles(ilsSession, requestedLocations, requestedRoles, currentLName, currentEmpID, statusID, currentAccessLevel, hireStartDate, hireEndDate, limitToManager, false);
if (userProfiles != null) {
/*
for (int j = 0; j < userProfiles.size(); j++) {
Modified: trunk/webapp/admin_studentrecords.jsp
===================================================================
--- trunk/webapp/admin_studentrecords.jsp 2014-12-08 22:08:55 UTC (rev 1280)
+++ trunk/webapp/admin_studentrecords.jsp 2014-12-11 21:17:12 UTC (rev 1281)
@@ -168,7 +168,7 @@
}
if (byStudent) {
if ("lookup".equals(action)) {
- userProfiles = UserProfile.getSearchUserProfiles(ilsSession, requestedLocations, requestedRoles, currentLName, currentEmpID, statusID, -1, hireStartDate, hireEndDate, limitToManager);
+ userProfiles = UserProfile.getSearchUserProfiles(ilsSession, requestedLocations, requestedRoles, currentLName, currentEmpID, statusID, -1, hireStartDate, hireEndDate, limitToManager, true);
}
if (userProfiles != null) {
session.setAttribute("lastDataset", userProfiles);
More information about the Ils-source
mailing list