Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -r97612142f4697066beb66064e83ff31fef1712b9 -rd1f8239e340a9fecf6c2995d385f9d69ae1b8196 Binary files differ Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/User.hbm.xml =================================================================== diff -u -r33ea91d27c610597a8ebc896dddcc289b0405b01 -rd1f8239e340a9fecf6c2995d385f9d69ae1b8196 --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/User.hbm.xml (.../User.hbm.xml) (revision 33ea91d27c610597a8ebc896dddcc289b0405b01) +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/User.hbm.xml (.../User.hbm.xml) (revision d1f8239e340a9fecf6c2995d385f9d69ae1b8196) @@ -486,5 +486,48 @@ length="1" + + + + + SELECT DISTINCT {user.*} + FROM lams_user {user}, + lams_learner_progress prog, + lams_learning_activity act, + lams_progress_attempted attempt + WHERE + prog.learner_progress_id = attempt.learner_progress_id + and attempt.activity_id=act.activity_id + and act.activity_id=:activityId + and prog.user_id={user}.user_id + + UNION + + SELECT DISTINCT {user.*} + FROM lams_user {user}, + lams_learner_progress prog, + lams_learning_activity act, + lams_progress_completed completed + WHERE + prog.learner_progress_id = completed.learner_progress_id + and completed.activity_id=act.activity_id + and act.activity_id=:activityId + and prog.user_id={user}.user_id + + + + + SELECT DISTINCT {user.*} + FROM lams_user {user}, + lams_learner_progress prog, + lams_learning_activity act, + lams_progress_completed completed + WHERE + prog.learner_progress_id = completed.learner_progress_id + and completed.activity_id=act.activity_id + and act.activity_id=:activityId + and prog.user_id={user}.user_id + + \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/lesson/dao/ILearnerProgressDAO.java =================================================================== diff -u -r9481bb9c6f8c0e4d6fbed6b230a41c77feda64c6 -rd1f8239e340a9fecf6c2995d385f9d69ae1b8196 --- lams_common/src/java/org/lamsfoundation/lams/lesson/dao/ILearnerProgressDAO.java (.../ILearnerProgressDAO.java) (revision 9481bb9c6f8c0e4d6fbed6b230a41c77feda64c6) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/dao/ILearnerProgressDAO.java (.../ILearnerProgressDAO.java) (revision d1f8239e340a9fecf6c2995d385f9d69ae1b8196) @@ -27,6 +27,7 @@ import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.lesson.LearnerProgress; +import org.lamsfoundation.lams.usermanagement.User; /** * Inteface defines Lesson DAO Methods @@ -82,4 +83,21 @@ */ public List getCompletedLearnerProgressForLesson(final Long lessonId); + /** + * Get all the users records where the user has attempted the given activity. Uses the progress records + * to determine the users. + * + * @param activityId + * @return List + */ + public List getLearnersHaveAttemptedActivity(final Activity activity); + + /** + * Get all the users records where the user has completed the given activity. Uses the progress records + * to determine the users. + * + * @param activityId + * @return List + */ + public List getLearnersHaveCompletedActivity(final Activity activity); } Index: lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LearnerProgressDAO.java =================================================================== diff -u -r9481bb9c6f8c0e4d6fbed6b230a41c77feda64c6 -rd1f8239e340a9fecf6c2995d385f9d69ae1b8196 --- lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LearnerProgressDAO.java (.../LearnerProgressDAO.java) (revision 9481bb9c6f8c0e4d6fbed6b230a41c77feda64c6) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LearnerProgressDAO.java (.../LearnerProgressDAO.java) (revision d1f8239e340a9fecf6c2995d385f9d69ae1b8196) @@ -32,6 +32,7 @@ import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.lesson.LearnerProgress; import org.lamsfoundation.lams.lesson.dao.ILearnerProgressDAO; +import org.lamsfoundation.lams.usermanagement.User; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.HibernateTemplate; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; @@ -141,7 +142,6 @@ public List getCompletedLearnerProgressForLesson(final Long lessonId) { HibernateTemplate hibernateTemplate = new HibernateTemplate(this.getSessionFactory()); - log.debug("Hibernate template is "+hibernateTemplate); return (List)hibernateTemplate.execute( new HibernateCallback() @@ -156,4 +156,55 @@ ); } + /** + * Get all the users records where the user has attempted the given activity. Uses the progress records + * to determine the users. + * + * @param activityId + * @return List + */ + @SuppressWarnings("unchecked") + public List getLearnersHaveAttemptedActivity(final Activity activity) + { + List learners = null; + + HibernateTemplate hibernateTemplate = new HibernateTemplate(this.getSessionFactory()); + learners = (List) hibernateTemplate.execute( + new HibernateCallback() { + public Object doInHibernate(Session session) throws HibernateException { + return session.getNamedQuery("usersAttemptedActivity") + .setLong("activityId", activity.getActivityId().longValue()) + .list(); + } + } + ); + + return learners; + } + + /** + * Get all the users records where the user has completed the given activity. Uses the progress records + * to determine the users. + * + * @param activityId + * @return List + */ + @SuppressWarnings("unchecked") + public List getLearnersHaveCompletedActivity(final Activity activity) + { + List learners = null; + + HibernateTemplate hibernateTemplate = new HibernateTemplate(this.getSessionFactory()); + learners = (List) hibernateTemplate.execute( + new HibernateCallback() { + public Object doInHibernate(Session session) throws HibernateException { + return session.getNamedQuery("usersCompletedActivity") + .setLong("activityId", activity.getActivityId().longValue()) + .list(); + } + } + ); + + return learners; + } } Index: lams_common/src/java/org/lamsfoundation/lams/lesson/service/ILessonService.java =================================================================== diff -u -re1683b7e5ac777deb10d15b0bf41182587ca8373 -rd1f8239e340a9fecf6c2995d385f9d69ae1b8196 --- lams_common/src/java/org/lamsfoundation/lams/lesson/service/ILessonService.java (.../ILessonService.java) (revision e1683b7e5ac777deb10d15b0bf41182587ca8373) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/service/ILessonService.java (.../ILessonService.java) (revision d1f8239e340a9fecf6c2995d385f9d69ae1b8196) @@ -226,4 +226,20 @@ */ public void performMarkLessonUncompleted(Long lessonId) throws LessonServiceException; + + /** + * Get the list of users who have attempted an activity. This is based on the progress engine records. + * This will give the users in all tool sessions for an activity (if it is a tool activity) or + * it will give all the users who have attempted an activity that doesn't have any tool sessions, i.e. + * system activities such as branching. + */ + public List getLearnersHaveAttemptedActivity(Activity activity) throws LessonServiceException; + + /** + * Get the list of users who have completed an activity. This is based on the progress engine records. + * This will give the users in all tool sessions for an activity (if it is a tool activity) or + * it will give all the users who have attempted an activity that doesn't have any tool sessions, i.e. + * system activities such as branching. + */ + public List getLearnersHaveCompletedActivity(Activity activity) throws LessonServiceException; } \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/lesson/service/LessonService.java =================================================================== diff -u -r5a04937692e2c67b3c27bb9ea181635038a6d09f -rd1f8239e340a9fecf6c2995d385f9d69ae1b8196 --- lams_common/src/java/org/lamsfoundation/lams/lesson/service/LessonService.java (.../LessonService.java) (revision 5a04937692e2c67b3c27bb9ea181635038a6d09f) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/service/LessonService.java (.../LessonService.java) (revision d1f8239e340a9fecf6c2995d385f9d69ae1b8196) @@ -47,6 +47,8 @@ import org.lamsfoundation.lams.lesson.dao.ILessonDAO; import org.lamsfoundation.lams.lesson.dto.LessonDTO; import org.lamsfoundation.lams.lesson.dto.LessonDetailsDTO; +import org.lamsfoundation.lams.tool.ToolSession; +import org.lamsfoundation.lams.tool.exception.LamsToolServiceException; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.util.MessageService; @@ -597,5 +599,23 @@ log.debug("Reset completed flag for "+count+" learners for lesson "+lessonId); } - + /** + * Get the list of users who have attempted an activity. This is based on the progress engine records. + * This will give the users in all tool sessions for an activity (if it is a tool activity) or + * it will give all the users who have attempted an activity that doesn't have any tool sessions, i.e. + * system activities such as branching. + */ + public List getLearnersHaveAttemptedActivity(Activity activity) throws LessonServiceException { + return learnerProgressDAO.getLearnersHaveAttemptedActivity(activity); + } + + /** + * Get the list of users who have completed an activity. This is based on the progress engine records. + * This will give the users in all tool sessions for an activity (if it is a tool activity) or + * it will give all the users who have attempted an activity that doesn't have any tool sessions, i.e. + * system activities such as branching. + */ + public List getLearnersHaveCompletedActivity(Activity activity) throws LessonServiceException { + return learnerProgressDAO.getLearnersHaveCompletedActivity(activity); + } } Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java =================================================================== diff -u -rec7f4e736e801f08af16e76e5ea9960583531db7 -rd1f8239e340a9fecf6c2995d385f9d69ae1b8196 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java (.../IMonitoringService.java) (revision ec7f4e736e801f08af16e76e5ea9960583531db7) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java (.../IMonitoringService.java) (revision d1f8239e340a9fecf6c2995d385f9d69ae1b8196) @@ -549,4 +549,12 @@ */ public void removeUsersFromBranch(Long sequenceActivityID, String learnerIDs[]) throws LessonServiceException; + /** + * Get the list of users who have attempted an activity. This is based on the progress engine records. + * This will give the users in all tool sessions for an activity (if it is a tool activity) or + * it will give all the users who have attempted an activity that doesn't have any tool sessions, i.e. + * system activities such as branching. + */ + public List getLearnersHaveAttemptedActivity(Activity activity) throws LessonServiceException; + } Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java =================================================================== diff -u -rec7f4e736e801f08af16e76e5ea9960583531db7 -rd1f8239e340a9fecf6c2995d385f9d69ae1b8196 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision ec7f4e736e801f08af16e76e5ea9960583531db7) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision d1f8239e340a9fecf6c2995d385f9d69ae1b8196) @@ -2099,4 +2099,15 @@ } } + + /** + * Get the list of users who have attempted an activity. This is based on the progress engine records. + * This will give the users in all tool sessions for an activity (if it is a tool activity) or + * it will give all the users who have attempted an activity that doesn't have any tool sessions, i.e. + * system activities such as branching. + */ + public List getLearnersHaveAttemptedActivity(Activity activity) throws LessonServiceException { + return lessonService.getLearnersHaveAttemptedActivity(activity); + } + } \ No newline at end of file Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/ChosenBranchingAJAXAction.java =================================================================== diff -u -rec7f4e736e801f08af16e76e5ea9960583531db7 -rd1f8239e340a9fecf6c2995d385f9d69ae1b8196 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/ChosenBranchingAJAXAction.java (.../ChosenBranchingAJAXAction.java) (revision ec7f4e736e801f08af16e76e5ea9960583531db7) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/ChosenBranchingAJAXAction.java (.../ChosenBranchingAJAXAction.java) (revision d1f8239e340a9fecf6c2995d385f9d69ae1b8196) @@ -26,7 +26,9 @@ import java.io.IOException; import java.io.PrintWriter; +import java.util.HashSet; import java.util.Iterator; +import java.util.List; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; @@ -131,10 +133,10 @@ request.setAttribute(AttributeNames.PARAM_TITLE, activity.getTitle()); // can we still move users? check each group for tool sessions. - Iterator iter = activity.getActivities().iterator(); + Iterator iter = activity.getActivities().iterator(); boolean mayMoveUser = true; while (iter.hasNext()) { - Activity childActivity = (Activity) iter.next(); + Activity childActivity = iter.next(); SequenceActivity branch = (SequenceActivity) monitoringService.getActivityById(childActivity.getActivityId(), SequenceActivity.class); Set mappingEntries = branch.getBranchEntries(); for ( BranchActivityEntry entry : mappingEntries ) { @@ -386,14 +388,28 @@ dto.setBranchActivityName(activity.getTitle()); TreeSet branches = new TreeSet(); - Iterator iter = activity.getActivities().iterator(); + Iterator iter = activity.getActivities().iterator(); while (iter.hasNext()) { - Activity childActivity = (Activity) iter.next(); + Activity childActivity = iter.next(); SequenceActivity branch = (SequenceActivity) monitoringService.getActivityById(childActivity.getActivityId(), SequenceActivity.class); Set mappingEntries = branch.getBranchEntries(); + + // If it is a grouped based or teacher chosen branching, the users will be in groups. + // If not get the user based on the progress engine and create a dummy group. + // Can't use tool session as sequence activities don't have a tool session! SortedSet groups = new TreeSet(); - for ( BranchActivityEntry entry : mappingEntries ) { - Group group = entry.getGroup(); + if ( activity.isChosenBranchingActivity() || activity.isGroupBranchingActivity() ) { + for ( BranchActivityEntry entry : mappingEntries ) { + Group group = entry.getGroup(); + groups.add(group); + } + } else { + Group group = new Group(); + if ( group.getUsers() == null ) { + group.setUsers(new HashSet()); + } + List learners = monitoringService.getLearnersHaveAttemptedActivity(branch); + group.getUsers().addAll(learners); groups.add(group); } branches.add(new BranchDTO(branch, groups));