Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/lesson/LearnerProgress.hbm.xml =================================================================== diff -u -r600dc5c9c87aa8fc67e052124ac91385847c856c -rf04ea5dd01ce29924bc450f44d9232b70dfb8f3e --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/lesson/LearnerProgress.hbm.xml (.../LearnerProgress.hbm.xml) (revision 600dc5c9c87aa8fc67e052124ac91385847c856c) +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/lesson/LearnerProgress.hbm.xml (.../LearnerProgress.hbm.xml) (revision f04ea5dd01ce29924bc450f44d9232b70dfb8f3e) @@ -26,6 +26,9 @@ column="waiting_flag" /> + + Index: lams_common/src/java/org/lamsfoundation/lams/lesson/LearnerProgress.java =================================================================== diff -u -rc44482d534e42cdecb0eefd678fad9cc5d8eb137 -rf04ea5dd01ce29924bc450f44d9232b70dfb8f3e --- lams_common/src/java/org/lamsfoundation/lams/lesson/LearnerProgress.java (.../LearnerProgress.java) (revision c44482d534e42cdecb0eefd678fad9cc5d8eb137) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/LearnerProgress.java (.../LearnerProgress.java) (revision f04ea5dd01ce29924bc450f44d9232b70dfb8f3e) @@ -24,8 +24,11 @@ import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.learningdesign.ActivityOrderComparator; +import org.lamsfoundation.lams.lesson.dto.LearnerProgressDTO; import java.io.Serializable; +import java.util.ArrayList; +import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Set; @@ -123,6 +126,9 @@ */ private List currentCompletedActivitiesList; + /**Indicate whether the learning progress is restarting or not*/ + private boolean restarting; + //--------------------------------------------------------------------- // Constructors //--------------------------------------------------------------------- @@ -149,7 +155,9 @@ this.attemptedActivities = attemptedActivities; this.completedActivities = completedActivities; } - + //--------------------------------------------------------------------- + // Getters and Setters + //--------------------------------------------------------------------- /** * * @@ -394,4 +402,59 @@ this.currentCompletedActivitiesList = new LinkedList(); this.currentCompletedActivitiesList.addAll(completedActivitiesList); } + /** + * @return Returns the isRestarting. + */ + public boolean isRestarting() + { + return restarting; + } + /** + * @param isRestarting The isRestarting to set. + */ + public void setRestarting(boolean restarting) + { + this.restarting = restarting; + } + //--------------------------------------------------------------------- + // Service methods + //--------------------------------------------------------------------- + /** + * Returns the learner progress data transfer object. + */ + public LearnerProgressDTO getLearnerProgressData() + { + + return new LearnerProgressDTO(this.lesson.getLessonId(), + this.lesson.getLessonName(), + this.user.getLogin(), + this.user.getUserId(), + this.currentActivity.getActivityId(), + this.createIdArrayFrom(this.attemptedActivities), + this.createIdArrayFrom(this.completedActivities)); + } + + //--------------------------------------------------------------------- + // Helper methods + //--------------------------------------------------------------------- + /** + * Extract the Id from activities and set them into an array. + * @param activities the activities that is being used to create the + * array. + */ + private Long[] createIdArrayFrom(Set activities) + { + if(activities == null) + throw new IllegalArgumentException("Fail to create id array" + + " from null activity set"); + + ArrayList activitiesIds = new ArrayList(); + for(Iterator i= activities.iterator();i.hasNext();) + { + Activity activity = (Activity)i.next(); + activitiesIds.add(activity.getActivityId()); + } + + return (Long [])activitiesIds.toArray(new Long[activitiesIds.size()]); + } } Index: lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestLearnerProgressDAO.java =================================================================== diff -u -rfee6e64a584e9b1a7df005ba288332c49310fe7c -rf04ea5dd01ce29924bc450f44d9232b70dfb8f3e --- lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestLearnerProgressDAO.java (.../TestLearnerProgressDAO.java) (revision fee6e64a584e9b1a7df005ba288332c49310fe7c) +++ lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestLearnerProgressDAO.java (.../TestLearnerProgressDAO.java) (revision f04ea5dd01ce29924bc450f44d9232b70dfb8f3e) @@ -77,6 +77,7 @@ assertNull("should not get any progress data",progress); } + public void testSaveLearnerProgress() throws HibernateException { super.learnerProgressDao.saveLearnerProgress(this.testLearnerProgress); @@ -134,18 +135,20 @@ progress.setProgressState(firstActivity,LearnerProgress.ACTIVITY_COMPLETED); progress.setProgressState(testParallelActivity,LearnerProgress.ACTIVITY_COMPLETED); progress.setProgressState(testToolActivity,LearnerProgress.ACTIVITY_ATTEMPTED); + progress.setRestarting(true); super.learnerProgressDao.updateLearnerProgress(progress); LearnerProgress updatedProgress= learnerProgressDao.getLearnerProgressByLearner(testUser,testLesson); assertLearnerProgressInitialization(progress); assertEquals("verify completed activity",2,updatedProgress.getCompletedActivities().size()); assertEquals("verify attempted activity",1,updatedProgress.getAttemptedActivities().size()); - + assertTrue("is restarting",updatedProgress.isRestarting()); super.learnerProgressDao.deleteLearnerProgress(testLearnerProgress); super.getSession().flush(); } + /** * @param progress */