Index: lams_admin/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -r7248fb9335792be231dcc498f37b28ffa0c794dc -rc5afbded875388afbb25dcdc972af56bf021658a --- lams_admin/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 7248fb9335792be231dcc498f37b28ffa0c794dc) +++ lams_admin/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision c5afbded875388afbb25dcdc972af56bf021658a) @@ -350,3 +350,4 @@ #======= End labels: Exported 258 labels for en AU ===== +config.learner.progress.batch.size=Number of learners to be displayed on the learner progress screen in monitoring. \ No newline at end of file Index: lams_admin/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== diff -u -r7248fb9335792be231dcc498f37b28ffa0c794dc -rc5afbded875388afbb25dcdc972af56bf021658a --- lams_admin/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 7248fb9335792be231dcc498f37b28ffa0c794dc) +++ lams_admin/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision c5afbded875388afbb25dcdc972af56bf021658a) @@ -350,3 +350,4 @@ #======= End labels: Exported 258 labels for en AU ===== +config.learner.progress.batch.size=Number of learners to be displayed on the learner progress screen in monitoring. \ No newline at end of file Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -r240222cfb186fccf09aaac380409fb256d3d613d -rc5afbded875388afbb25dcdc972af56bf021658a Binary files differ Index: lams_common/db/sql/insert_lams_unix_config_data.sql =================================================================== diff -u -r7248fb9335792be231dcc498f37b28ffa0c794dc -rc5afbded875388afbb25dcdc972af56bf021658a --- lams_common/db/sql/insert_lams_unix_config_data.sql (.../insert_lams_unix_config_data.sql) (revision 7248fb9335792be231dcc498f37b28ffa0c794dc) +++ lams_common/db/sql/insert_lams_unix_config_data.sql (.../insert_lams_unix_config_data.sql) (revision c5afbded875388afbb25dcdc972af56bf021658a) @@ -210,3 +210,6 @@ insert into lams_configuration (config_key, config_value, description_key, header_name, format, required) values ('LDAPSearchResultsPageSize', '100', 'config.ldap.search.results.page.size', 'config.header.ldap', 'LONG', 0); + +insert into lams_configuration (config_key, config_value, description_key, header_name, format, required) +values ('LearnerProgressBatchSize', '20', 'config.learner.progress.batch.size', 'config.header.look.feel', 'LONG', 1); Index: lams_common/db/sql/insert_lams_windows_config_data.sql =================================================================== diff -u -r7248fb9335792be231dcc498f37b28ffa0c794dc -rc5afbded875388afbb25dcdc972af56bf021658a --- lams_common/db/sql/insert_lams_windows_config_data.sql (.../insert_lams_windows_config_data.sql) (revision 7248fb9335792be231dcc498f37b28ffa0c794dc) +++ lams_common/db/sql/insert_lams_windows_config_data.sql (.../insert_lams_windows_config_data.sql) (revision c5afbded875388afbb25dcdc972af56bf021658a) @@ -210,3 +210,6 @@ insert into lams_configuration (config_key, config_value, description_key, header_name, format, required) values ('LDAPSearchResultsPageSize', '100', 'config.ldap.search.results.page.size', 'config.header.ldap', 'LONG', 0); + +insert into lams_configuration (config_key, config_value, description_key, header_name, format, required) +values ('LearnerProgressBatchSize', '20', 'config.learner.progress.batch.size', 'config.header.look.feel', 'LONG', 1); \ No newline at end of file Index: lams_common/db/sql/insert_rams_unix_config_data.sql =================================================================== diff -u -r7248fb9335792be231dcc498f37b28ffa0c794dc -rc5afbded875388afbb25dcdc972af56bf021658a --- lams_common/db/sql/insert_rams_unix_config_data.sql (.../insert_rams_unix_config_data.sql) (revision 7248fb9335792be231dcc498f37b28ffa0c794dc) +++ lams_common/db/sql/insert_rams_unix_config_data.sql (.../insert_rams_unix_config_data.sql) (revision c5afbded875388afbb25dcdc972af56bf021658a) @@ -210,3 +210,6 @@ insert into lams_configuration (config_key, config_value, description_key, header_name, format, required) values ('LDAPSearchResultsPageSize', '100', 'config.ldap.search.results.page.size', 'config.header.ldap', 'LONG', 0); + +insert into lams_configuration (config_key, config_value, description_key, header_name, format, required) +values ('LearnerProgressBatchSize', '20', 'config.learner.progress.batch.size', 'config.header.look.feel', 'LONG', 1); \ No newline at end of file Index: lams_common/db/sql/insert_rams_windows_config_data.sql =================================================================== diff -u -r7248fb9335792be231dcc498f37b28ffa0c794dc -rc5afbded875388afbb25dcdc972af56bf021658a --- lams_common/db/sql/insert_rams_windows_config_data.sql (.../insert_rams_windows_config_data.sql) (revision 7248fb9335792be231dcc498f37b28ffa0c794dc) +++ lams_common/db/sql/insert_rams_windows_config_data.sql (.../insert_rams_windows_config_data.sql) (revision c5afbded875388afbb25dcdc972af56bf021658a) @@ -210,3 +210,6 @@ insert into lams_configuration (config_key, config_value, description_key, header_name, format, required) values ('LDAPSearchResultsPageSize', '100', 'config.ldap.search.results.page.size', 'config.header.ldap', 'LONG', 0); + +insert into lams_configuration (config_key, config_value, description_key, header_name, format, required) +values ('LearnerProgressBatchSize', '20', 'config.learner.progress.batch.size', 'config.header.look.feel', 'LONG', 1); Index: lams_common/db/sql/updatescripts/alter_21_branching.sql =================================================================== diff -u -r97336c15381a6a96013b087b0844f173d1ddedd7 -rc5afbded875388afbb25dcdc972af56bf021658a --- lams_common/db/sql/updatescripts/alter_21_branching.sql (.../alter_21_branching.sql) (revision 97336c15381a6a96013b087b0844f173d1ddedd7) +++ lams_common/db/sql/updatescripts/alter_21_branching.sql (.../alter_21_branching.sql) (revision c5afbded875388afbb25dcdc972af56bf021658a) @@ -177,6 +177,7 @@ insert into lams_configuration (config_key, config_value, description_key, header_name, format, required) values ('LDAPOnlyOneOrg', 'true', 'config.ldap.only.one.org', 'config.header.ldap', 'BOOLEAN', 1); insert into lams_configuration (config_key, config_value, description_key, header_name, format, required) values ('LDAPEncryptPasswordFromBrowser', 'true', 'config.ldap.encrypt.password.from.browser', 'config.header.ldap', 'BOOLEAN', 1); insert into lams_configuration (config_key, config_value, description_key, header_name, format, required) values ('LDAPSearchResultsPageSize', '100', 'config.ldap.search.results.page.size', 'config.header.ldap', 'LONG', 0); +insert into lams_configuration (config_key, config_value, description_key, header_name, format, required) values ('LearnerProgressBatchSize', '20', 'config.learner.progress.batch.size', 'config.header.look.feel', 'LONG', 1); delete from lams_configuration where config_key='LamsHome'; delete from lams_configuration where config_key='FileManagerDir'; Index: lams_common/src/java/org/lamsfoundation/lams/lesson/dao/ILearnerProgressDAO.java =================================================================== diff -u -r240222cfb186fccf09aaac380409fb256d3d613d -rc5afbded875388afbb25dcdc972af56bf021658a --- lams_common/src/java/org/lamsfoundation/lams/lesson/dao/ILearnerProgressDAO.java (.../ILearnerProgressDAO.java) (revision 240222cfb186fccf09aaac380409fb256d3d613d) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/dao/ILearnerProgressDAO.java (.../ILearnerProgressDAO.java) (revision c5afbded875388afbb25dcdc972af56bf021658a) @@ -123,4 +123,21 @@ * @return List */ public Integer getNumUsersCompletedActivity(final Activity activity) ; + + /** + * Get the count of all learner progress records for an lesson without loading the records. + * @return Number of learner progress records for this lesson + */ + public Integer getNumAllLearnerProgress(final Long lessonId); + + /** + * Get a batch of learner progress records (size batchSize) for an lesson, sorted by surname and the first name. Start at the beginning + * of the table if no previousUserId is given, otherwise get the batch after lastUserId. + * @param lessonId + * @param lastUserId + * @param batchSize + * @return List + */ + public List getBatchLearnerProgress(final Long lessonId, final User lastUser, final int batchSize); + } Index: lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LearnerProgressDAO.java =================================================================== diff -u -r240222cfb186fccf09aaac380409fb256d3d613d -rc5afbded875388afbb25dcdc972af56bf021658a --- lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LearnerProgressDAO.java (.../LearnerProgressDAO.java) (revision 240222cfb186fccf09aaac380409fb256d3d613d) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LearnerProgressDAO.java (.../LearnerProgressDAO.java) (revision c5afbded875388afbb25dcdc972af56bf021658a) @@ -61,6 +61,17 @@ +" Activity act where act.id = :activityId and " +" act in elements(prog.completedActivities)"; + private final static String COUNT_PROGRESS_BY_LESSON = + "select count(*) from LearnerProgress p where p.lesson.id = :lessonId"; + private final static String LOAD_PROGRESS_BY_LESSON = + "from LearnerProgress p where p.lesson.id = :lessonId order by p.user.lastName, p.user.firstName, p.user.userId"; + private final static String LOAD_NEXT_BATCH_PROGRESS_BY_LESSON = + "from LearnerProgress p where p.lesson.id = :lessonId " + +" and (( p.user.lastName > :lastUserLastName)" + +" or ( p.user.lastName = :lastUserLastName and p.user.firstName > :lastUserFirstName) " + +" or ( p.user.lastName = :lastUserLastName and p.user.firstName = :lastUserFirstName and p.user.userId > :lastUserId))" + +" order by p.user.lastName, p.user.firstName, p.user.userId"; + /** * Retrieves the Lesson * @param lessonId identifies the lesson to get @@ -73,7 +84,7 @@ /** * Saves or Updates learner progress data. - * @param learnerProgress holds the learne progress data + * @param learnerProgress holds the learner progress data */ public void saveLearnerProgress(LearnerProgress learnerProgress) { @@ -258,4 +269,60 @@ }); } + /** + * Get the count of all learner progress records for an lesson without loading the records. + * @return Number of learner progress records for this lesson + */ + public Integer getNumAllLearnerProgress(final Long lessonId) + { + HibernateTemplate hibernateTemplate = new HibernateTemplate(this.getSessionFactory()); + return (Integer) hibernateTemplate.execute(new HibernateCallback() { + public Object doInHibernate(Session session) + throws HibernateException { + Object value = session.createQuery(COUNT_PROGRESS_BY_LESSON) + .setLong("lessonId", lessonId.longValue()) + .uniqueResult(); + return new Integer (((Number)value).intValue()); + } + }); + } + + /** + * Get a batch of learner progress records (size batchSize) for an lesson, sorted by surname and the first name. Start at the beginning + * of the table if no lastUser is given, otherwise get the batch after lastUser. + * @param lessonId + * @param lastUser + * @param batchSize + * @return List + */ + @SuppressWarnings("unchecked") + public List getBatchLearnerProgress(final Long lessonId, final User lastUser, final int batchSize) + { + HibernateTemplate hibernateTemplate = new HibernateTemplate(this.getSessionFactory()); + if ( lastUser == null ) { + return (List) hibernateTemplate.execute(new HibernateCallback() { + public Object doInHibernate(Session session) + throws HibernateException { + return session.createQuery(LOAD_PROGRESS_BY_LESSON) + .setLong("lessonId", lessonId.longValue()) + .setMaxResults(batchSize) + .list(); + } + }); + } else { + return (List) hibernateTemplate.execute(new HibernateCallback() { + public Object doInHibernate(Session session) + throws HibernateException { + return session.createQuery(LOAD_NEXT_BATCH_PROGRESS_BY_LESSON) + .setLong("lessonId", lessonId.longValue()) + .setString("lastUserLastName", lastUser.getLastName()) + .setString("lastUserFirstName", lastUser.getFirstName()) + .setInteger("lastUserId", lastUser.getUserId().intValue()) + .setMaxResults(batchSize) + .list(); + } + }); + } + } + } Index: lams_common/src/java/org/lamsfoundation/lams/util/ConfigurationKeys.java =================================================================== diff -u -r053b3694d8631a983eb8e95e3f0374a22540b43a -rc5afbded875388afbb25dcdc972af56bf021658a --- lams_common/src/java/org/lamsfoundation/lams/util/ConfigurationKeys.java (.../ConfigurationKeys.java) (revision 053b3694d8631a983eb8e95e3f0374a22540b43a) +++ lams_common/src/java/org/lamsfoundation/lams/util/ConfigurationKeys.java (.../ConfigurationKeys.java) (revision c5afbded875388afbb25dcdc972af56bf021658a) @@ -208,4 +208,7 @@ public static String LDAP_ENCRYPT_PASSWORD_FROM_BROWSER = "LDAPEncryptPasswordFromBrowser"; public static String LDAP_SEARCH_RESULTS_PAGE_SIZE = "LDAPSearchResultsPageSize"; + + /** Number of learners to be displayed on the learner progress screen in monitoring. */ + public static String LEARNER_PROGRESS_BATCH_SIZE = "LearnerProgressBatchSize"; } \ No newline at end of file