Index: lams_common/src/java/org/lamsfoundation/lams/lesson/LearnerProgress.java =================================================================== diff -u -r38a1b0822e267ca7ade5a78244b4b34525dd1b19 -r22371c199a1544417288023ae2cf4fb5fb4d26e7 --- lams_common/src/java/org/lamsfoundation/lams/lesson/LearnerProgress.java (.../LearnerProgress.java) (revision 38a1b0822e267ca7ade5a78244b4b34525dd1b19) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/LearnerProgress.java (.../LearnerProgress.java) (revision 22371c199a1544417288023ae2cf4fb5fb4d26e7) @@ -201,6 +201,31 @@ return ACTIVITY_NOT_ATTEMPTED; } } + + /** + * Sets the progress state for an activity. + * @param activity whose progress is to be set + * @param state one of ACTIVITY_COMPLETED, ACTIVITY_ATTEMPTED or ACTIVITY_NOT_ATTEMPTED. + */ + public void setProgressState(Activity activity, byte state) { + // remove activity from current set + byte oldState = getProgressState(activity); + if (oldState == LearnerProgress.ACTIVITY_NOT_ATTEMPTED); + else if (oldState == LearnerProgress.ACTIVITY_ATTEMPTED) { + this.attemptedActivities.remove(activity); + } + else if (oldState == LearnerProgress.ACTIVITY_COMPLETED) { + this.completedActivities.remove(activity); + } + // add activity to new set + if (state == LearnerProgress.ACTIVITY_NOT_ATTEMPTED); + else if (state == LearnerProgress.ACTIVITY_ATTEMPTED) { + this.attemptedActivities.add(activity); + } + else if (state == LearnerProgress.ACTIVITY_COMPLETED) { + this.completedActivities.add(activity); + } + } /** * Getter for property lessonComplete.