Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -r67d223336fe0ab1cf22b8102c40ec3805aafe6e2 -r7fe9774aaa83d47d9cd66dca7daf4a30cbb4f3ec Binary files differ Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/lesson/Lesson.hbm.xml =================================================================== diff -u -r7e8b71604044e851c877e918e7d6570a9942a356 -r7fe9774aaa83d47d9cd66dca7daf4a30cbb4f3ec --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/lesson/Lesson.hbm.xml (.../Lesson.hbm.xml) (revision 7e8b71604044e851c877e918e7d6570a9942a356) +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/lesson/Lesson.hbm.xml (.../Lesson.hbm.xml) (revision 7fe9774aaa83d47d9cd66dca7daf4a30cbb4f3ec) @@ -168,12 +168,4 @@ AND (lams_learner_progress.lesson_id = :lessonId) - - - SELECT COUNT(DISTINCT {learner.user_id}) - FROM lams_user {learner}, - lams_learner_progress - WHERE ({learner}.user_id = lams_learner_progress.user_id) - AND (lams_learner_progress.lesson_id = :lessonId) - Index: lams_common/src/java/org/lamsfoundation/lams/lesson/dao/ILearnerProgressDAO.java =================================================================== diff -u -r34b959260a0f8f8285793a4481a95ca3580eabc5 -r7fe9774aaa83d47d9cd66dca7daf4a30cbb4f3ec --- lams_common/src/java/org/lamsfoundation/lams/lesson/dao/ILearnerProgressDAO.java (.../ILearnerProgressDAO.java) (revision 34b959260a0f8f8285793a4481a95ca3580eabc5) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/dao/ILearnerProgressDAO.java (.../ILearnerProgressDAO.java) (revision 7fe9774aaa83d47d9cd66dca7daf4a30cbb4f3ec) @@ -43,10 +43,11 @@ /** * Retrieves the learner progress object for user in a lesson. - * @param user the user who owns the learner progress data. + * @param learnerId the user who owns the learner progress data. + * @param lesson the lesson for which the progress data applies * @return the user's progress data */ - public LearnerProgress getLearnerProgressByLearner(final User learner, + public LearnerProgress getLearnerProgressByLearner(final Integer learnerId, final Lesson lesson); /** Index: lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LearnerProgressDAO.java =================================================================== diff -u -r34b959260a0f8f8285793a4481a95ca3580eabc5 -r7fe9774aaa83d47d9cd66dca7daf4a30cbb4f3ec --- lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LearnerProgressDAO.java (.../LearnerProgressDAO.java) (revision 34b959260a0f8f8285793a4481a95ca3580eabc5) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LearnerProgressDAO.java (.../LearnerProgressDAO.java) (revision 7fe9774aaa83d47d9cd66dca7daf4a30cbb4f3ec) @@ -40,7 +40,7 @@ public class LearnerProgressDAO extends HibernateDaoSupport implements ILearnerProgressDAO { private final static String LOAD_PROGRESS_BY_LEARNER = - "from LearnerProgress p where p.user = :learner and p.lesson = :lesson"; + "from LearnerProgress p where p.user.id = :learnerId and p.lesson = :lesson"; /** * Retrieves the Lesson @@ -71,9 +71,9 @@ } /** - * @see org.lamsfoundation.lams.lesson.dao.ILearnerProgressDAO#getLearnerProgressByLeaner(org.lamsfoundation.lams.usermanagement.User) + * @see org.lamsfoundation.lams.lesson.dao.ILearnerProgressDAO#getLearnerProgressByLeaner(java.lang.Integer,org.lamsfoundation.lams.lesson.Lesson) */ - public LearnerProgress getLearnerProgressByLearner(final User learner, final Lesson lesson) + public LearnerProgress getLearnerProgressByLearner(final Integer learnerId, final Lesson lesson) { HibernateTemplate hibernateTemplate = new HibernateTemplate(this.getSessionFactory()); @@ -83,7 +83,7 @@ public Object doInHibernate(Session session) throws HibernateException { return session.createQuery(LOAD_PROGRESS_BY_LEARNER) - .setEntity("learner",learner) + .setInteger("learnerId",learnerId) .setEntity("lesson",lesson) .uniqueResult(); } Index: lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LessonDAO.java =================================================================== diff -u -r7e8b71604044e851c877e918e7d6570a9942a356 -r7fe9774aaa83d47d9cd66dca7daf4a30cbb4f3ec --- lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LessonDAO.java (.../LessonDAO.java) (revision 7e8b71604044e851c877e918e7d6570a9942a356) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LessonDAO.java (.../LessonDAO.java) (revision 7fe9774aaa83d47d9cd66dca7daf4a30cbb4f3ec) @@ -23,7 +23,6 @@ /* $$Id$$ */ package org.lamsfoundation.lams.lesson.dao.hibernate; -import java.sql.SQLException; import java.util.Date; import java.util.List; @@ -33,6 +32,7 @@ import org.hibernate.Session; import org.hibernate.criterion.Expression; import org.lamsfoundation.lams.learningdesign.LearningDesign; +import org.lamsfoundation.lams.lesson.LearnerProgress; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.dao.ILessonDAO; import org.lamsfoundation.lams.usermanagement.User; @@ -55,7 +55,10 @@ + " lesson where lesson.learningDesign.copyTypeID=" + LearningDesign.COPY_TYPE_PREVIEW + "and lesson.startDateTime is not null and lesson.startDateTime < ?"; - + private final static String COUNT_ACTIVE_LEARNERS = "select count(distinct progress.user.id)" + + " from "+LearnerProgress.class.getName()+" progress" + + " where progress.lesson.id = :lessonId"; + /** * Retrieves the Lesson * @param lessonId identifies the lesson to get @@ -170,7 +173,7 @@ return (Integer) hibernateTemplate.execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { - Query query = session.getNamedQuery("countActiveLearners"); + Query query = session.createQuery(COUNT_ACTIVE_LEARNERS); query.setLong("lessonId", lessonId); return query.uniqueResult(); } Index: lams_common/src/java/org/lamsfoundation/lams/lesson/service/ILessonService.java =================================================================== diff -u -r7e8b71604044e851c877e918e7d6570a9942a356 -r7fe9774aaa83d47d9cd66dca7daf4a30cbb4f3ec --- lams_common/src/java/org/lamsfoundation/lams/lesson/service/ILessonService.java (.../ILessonService.java) (revision 7e8b71604044e851c877e918e7d6570a9942a356) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/service/ILessonService.java (.../ILessonService.java) (revision 7fe9774aaa83d47d9cd66dca7daf4a30cbb4f3ec) @@ -66,6 +66,11 @@ /** Get all the learners who have started the lesson. They may not be currently online.*/ public abstract List getActiveLessonLearners(Long lessonId); + /** + * Get the count of all the learners who have started the lesson. They may not be currently online. + */ + public Integer getCountActiveLessonLearners(Long lessonId); + /** Get the lesson details for the LAMS client. Suitable for the monitoring client. * Contains a count of the total number of learners in the lesson and the number of active learners. * This is a pretty intensive call as it counts all the learners in the Index: lams_common/src/java/org/lamsfoundation/lams/lesson/service/LessonService.java =================================================================== diff -u -r7e8b71604044e851c877e918e7d6570a9942a356 -r7fe9774aaa83d47d9cd66dca7daf4a30cbb4f3ec --- lams_common/src/java/org/lamsfoundation/lams/lesson/service/LessonService.java (.../LessonService.java) (revision 7e8b71604044e851c877e918e7d6570a9942a356) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/service/LessonService.java (.../LessonService.java) (revision 7fe9774aaa83d47d9cd66dca7daf4a30cbb4f3ec) @@ -118,7 +118,15 @@ return lessonDAO.getActiveLearnerByLesson(lessonId); } + /* (non-Javadoc) + * @see org.lamsfoundation.lams.lesson.service.ILessonService#getCountActiveLessonLearners(java.lang.Long) + */ + public Integer getCountActiveLessonLearners(Long lessonId) + { + return lessonDAO.getCountActiveLearnerByLesson(lessonId); + } + public void setLessonDAO(ILessonDAO lessonDAO) { this.lessonDAO = lessonDAO; } @@ -131,7 +139,7 @@ LessonDetailsDTO dto = null; if ( lesson != null ) { dto = lesson.getLessonDetails(); - Integer active = lessonDAO.getCountActiveLearnerByLesson(lessonId); + Integer active = getCountActiveLessonLearners(lessonId); dto.setNumberStartedLearners(active!=null?active:new Integer(0)); } return dto; Index: lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestLearnerProgressDAO.java =================================================================== diff -u -r34b959260a0f8f8285793a4481a95ca3580eabc5 -r7fe9774aaa83d47d9cd66dca7daf4a30cbb4f3ec --- lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestLearnerProgressDAO.java (.../TestLearnerProgressDAO.java) (revision 34b959260a0f8f8285793a4481a95ca3580eabc5) +++ lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestLearnerProgressDAO.java (.../TestLearnerProgressDAO.java) (revision 7fe9774aaa83d47d9cd66dca7daf4a30cbb4f3ec) @@ -90,7 +90,7 @@ public void testGetNullLearnerProgressByLearner() { - LearnerProgress progress= learnerProgressDao.getLearnerProgressByLearner(testUser,testLesson); + LearnerProgress progress= learnerProgressDao.getLearnerProgressByLearner(testUser.getUserId(),testLesson); assertNull("should not get any progress data",progress); } @@ -99,7 +99,7 @@ { super.learnerProgressDao.saveLearnerProgress(this.testLearnerProgress); - LearnerProgress progress= learnerProgressDao.getLearnerProgressByLearner(testUser,testLesson); + LearnerProgress progress= learnerProgressDao.getLearnerProgressByLearner(testUser.getUserId(),testLesson); assertLearnerProgressInitialization(progress); super.learnerProgressDao.deleteLearnerProgress(testLearnerProgress); @@ -115,14 +115,14 @@ super.learnerProgressDao.deleteLearnerProgress(testLearnerProgress); super.getSession().flush(); - LearnerProgress nullProgress= learnerProgressDao.getLearnerProgressByLearner(testUser,testLesson); + LearnerProgress nullProgress= learnerProgressDao.getLearnerProgressByLearner(testUser.getUserId(),testLesson); assertNull("should not get any progress data",nullProgress); } public void testGetLearnerProgressByLeaner() throws HibernateException { super.learnerProgressDao.saveLearnerProgress(this.testLearnerProgress); - LearnerProgress progress= learnerProgressDao.getLearnerProgressByLearner(testUser,testLesson); + LearnerProgress progress= learnerProgressDao.getLearnerProgressByLearner(testUser.getUserId(),testLesson); assertLearnerProgressInitialization(progress); super.learnerProgressDao.deleteLearnerProgress(testLearnerProgress); super.getSession().flush(); @@ -145,7 +145,7 @@ public void testUpdateLearnerProgress() throws HibernateException { super.learnerProgressDao.saveLearnerProgress(this.testLearnerProgress); - LearnerProgress progress= learnerProgressDao.getLearnerProgressByLearner(testUser,testLesson); + LearnerProgress progress= learnerProgressDao.getLearnerProgressByLearner(testUser.getUserId(),testLesson); Activity firstActivity = this.testLesson.getLearningDesign().getFirstActivity(); @@ -156,7 +156,7 @@ super.learnerProgressDao.updateLearnerProgress(progress); - LearnerProgress updatedProgress= learnerProgressDao.getLearnerProgressByLearner(testUser,testLesson); + LearnerProgress updatedProgress= learnerProgressDao.getLearnerProgressByLearner(testUser.getUserId(),testLesson); assertLearnerProgressInitialization(progress); assertEquals("verify completed activity",2,updatedProgress.getCompletedActivities().size()); assertEquals("verify attempted activity",1,updatedProgress.getAttemptedActivities().size());