[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