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));