Index: lams_learning/lib/lams/lams.jar
===================================================================
diff -u -rf73c3d7878d6f6c013a43da96353e4e0983e1a61 -r09b65e403c9fcb6cc894e6af85c408e654b46f8c
Binary files differ
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressEngine.java
===================================================================
diff -u -rf73c3d7878d6f6c013a43da96353e4e0983e1a61 -r09b65e403c9fcb6cc894e6af85c408e654b46f8c
--- lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressEngine.java (.../ProgressEngine.java) (revision f73c3d7878d6f6c013a43da96353e4e0983e1a61)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressEngine.java (.../ProgressEngine.java) (revision 09b65e403c9fcb6cc894e6af85c408e654b46f8c)
@@ -52,38 +52,44 @@
* the learner to the next step.
* @throws ProgressException if progress cannot be calculated successfully.
*/
- public LearnerProgress calculateProgress(User learner, Lesson lesson, Activity completedActivity) throws ProgressException
+ public LearnerProgress calculateProgress(User learner,
+ Lesson lesson,
+ Activity completedActivity,
+ LearnerProgress learnerProgress) throws ProgressException
{
- //mark activity as complete for user
+ learnerProgress.setProgressState(completedActivity,LearnerProgress.ACTIVITY_COMPLETED);
- //if activity has transition
+ Transition transition = completedActivity.getTransitionTo();
- //follow transition to get next activity
-
- //mark next activit as current act for user
-
- //fill in VO with right data for next act.
-
- //else if activity has a parent activity
-
- //get parent
-
- //notify parent activity that child is complete
-
- //if parent is now complete
-
- //recurse
-
- //else (if no parent and no transtions)
-
- //mark learner as having finished sequence
-
- //fill in VO with right data for the end of sequence
-
+ if(transition !=null)
+ return progressCompletedActivity(completedActivity, learnerProgress, transition);
+ else
+ {
+ Activity parent = completedActivity.getParentActivity();
+ //if(parent!=null)
+
+
+ }
return null;
}
/**
+ * @param completedActivity
+ * @param learnerProgress
+ * @param transition
+ * @return
+ */
+ private LearnerProgress progressCompletedActivity(Activity completedActivity, LearnerProgress learnerProgress, Transition transition)
+ {
+ learnerProgress.setPreviousActivity(completedActivity);
+ learnerProgress.setCurrentActivity(transition.getActivityByToActivityId());
+ learnerProgress.setNextActivity(transition.getActivityByToActivityId());
+ learnerProgress.setProgressState(transition.getActivityByToActivityId(),
+ LearnerProgress.ACTIVITY_ATTEMPTED);
+ return learnerProgress;
+ }
+
+ /**
* Method determines the start point for a learner when they begin a Lesson.
* @param learner the User
who is starting the Lesson
.
* @param lesson the Lesson
the learner is starting.
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java
===================================================================
diff -u -rf73c3d7878d6f6c013a43da96353e4e0983e1a61 -r09b65e403c9fcb6cc894e6af85c408e654b46f8c
--- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision f73c3d7878d6f6c013a43da96353e4e0983e1a61)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision 09b65e403c9fcb6cc894e6af85c408e654b46f8c)
@@ -46,7 +46,7 @@
import org.lamsfoundation.lams.usermanagement.User;
/**
* This class is a facade over the Learning middle tier.
- * @author chris
+ * @author chris, Jacky Fang
*/
public class LearnerService implements ILearnerService
{
@@ -62,6 +62,7 @@
//---------------------------------------------------------------------
// Inversion of Control Methods - Constructor injection
//---------------------------------------------------------------------
+
/** Creates a new instance of LearnerService */
public LearnerService(ProgressEngine progressEngine)
{
@@ -177,9 +178,13 @@
* @return the bean containing the display data for the Learner
* @throws LearnerServiceException in case of problems.
*/
- public LearnerProgress calculateProgress(Activity completedActivity, User learner, Lesson lesson) throws ProgressException
+ public LearnerProgress calculateProgress(Activity completedActivity,
+ User learner,
+ Lesson lesson) throws ProgressException
{
- return progressEngine.calculateProgress(learner, lesson, completedActivity);
+ LearnerProgress learnerProgress = learnerProgressDAO.getLearnerProgressByLearner(learner,lesson);
+
+ return progressEngine.calculateProgress(learner, lesson, completedActivity,learnerProgress);
}
@@ -232,7 +237,7 @@
{
ToolActivity toolActivity = (ToolActivity)i.next();
if(shouldCreateToolSession(learnerProgress,toolActivity))
- createToolSessionFor(toolActivity, learnerProgress.getUser());
+ createToolSessionFor(toolActivity, learnerProgress.getUser(),learnerProgress.getLesson());
}
}
@@ -255,20 +260,23 @@
}
/**
- * Create a tool session for learner against a tool activity. This will
+ *
Create a lams tool session for learner against a tool activity. This will * have concurrency issues interms of grouped tool session because it might * be inserting some tool session that has already been inserted by other * member in the group. If the unique_check is broken, we need to query * the database to get the instance instead of inserting it. It should be - * done in the Spring rollback strategy. - * + * done in the Spring rollback strategy.
+ * + * Once lams tool session is inserted, we need to notify the tool to its + * own session. + * * @param toolActivity * @param learner * @throws LamsToolServiceException */ - private void createToolSessionFor(ToolActivity toolActivity,User learner) throws LamsToolServiceException + private void createToolSessionFor(ToolActivity toolActivity,User learner,Lesson lesson) throws LamsToolServiceException { - ToolSession toolSession = lamsToolService.createToolSession(learner,toolActivity); + ToolSession toolSession = lamsToolService.createToolSession(learner,toolActivity,lesson); toolActivity.getToolSessions().add(toolSession); Index: lams_learning/test/java/org/lamsfoundation/lams/learning/service/TestLearnerService.java =================================================================== diff -u -rf73c3d7878d6f6c013a43da96353e4e0983e1a61 -r09b65e403c9fcb6cc894e6af85c408e654b46f8c --- lams_learning/test/java/org/lamsfoundation/lams/learning/service/TestLearnerService.java (.../TestLearnerService.java) (revision f73c3d7878d6f6c013a43da96353e4e0983e1a61) +++ lams_learning/test/java/org/lamsfoundation/lams/learning/service/TestLearnerService.java (.../TestLearnerService.java) (revision 09b65e403c9fcb6cc894e6af85c408e654b46f8c) @@ -115,7 +115,6 @@ ((ToolActivity)testProgress.getNextActivity()).getToolSessions()); assertEquals("verify number of tool sessions created",1, ((ToolActivity)testProgress.getNextActivity()).getToolSessions().size()); - assertTrue(true); } } Index: lams_monitoring/lib/lams/lams.jar =================================================================== diff -u -r5527b41a5f478e30cd0f6b100a217d1046604343 -r09b65e403c9fcb6cc894e6af85c408e654b46f8c Binary files differ Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java =================================================================== diff -u -r5527b41a5f478e30cd0f6b100a217d1046604343 -r09b65e403c9fcb6cc894e6af85c408e654b46f8c --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java (.../IMonitoringService.java) (revision 5527b41a5f478e30cd0f6b100a217d1046604343) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java (.../IMonitoringService.java) (revision 09b65e403c9fcb6cc894e6af85c408e654b46f8c) @@ -22,6 +22,7 @@ import java.util.List; +import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.tool.service.LamsToolServiceException; import org.lamsfoundation.lams.usermanagement.Organisation; import org.lamsfoundation.lams.usermanagement.User; @@ -45,7 +46,7 @@ * @param organizationUsers a list of learner will be in this new lessons. * @param staffs a list of staffs who will be in charge of this lesson. */ - public void createLesson(long learningDesignId,User user,Organisation organisation,List organizationUsers,List staffs);; + public Lesson createLesson(long learningDesignId,User user,Organisation organisation,List organizationUsers,List staffs);; /** * Start the specified the lesson. It must be created before calling this Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java =================================================================== diff -u -r5527b41a5f478e30cd0f6b100a217d1046604343 -r09b65e403c9fcb6cc894e6af85c408e654b46f8c --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision 5527b41a5f478e30cd0f6b100a217d1046604343) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision 09b65e403c9fcb6cc894e6af85c408e654b46f8c) @@ -111,11 +111,11 @@ * * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#createLesson(long, org.lamsfoundation.lams.usermanagement.User, java.util.List, java.util.List) */ - public void createLesson(long learningDesignId, - User user, - Organisation organisation, - List organizationUsers, - List staffs) + public Lesson createLesson(long learningDesignId, + User user, + Organisation organisation, + List organizationUsers, + List staffs) { LearningDesign originalLearningDesign = authoringService.getLearningDesign(new Long(learningDesignId)); //copy the current learning design @@ -133,11 +133,11 @@ } authoringService.updateLearningDesign(copiedLearningDesign); //create the new lesson - createNewLesson(user, - organisation, - organizationUsers, - staffs, - copiedLearningDesign); + return createNewLesson(user, + organisation, + organizationUsers, + staffs, + copiedLearningDesign); } @@ -160,7 +160,8 @@ if (shouldInitToolSessionFor(activity)&&this.isSurvey((ToolActivity)activity)) { initToolSessionFor((ToolActivity) activity, - requestedLesson.getAllLearners()); + requestedLesson.getAllLearners(), + requestedLesson); } } //update lesson status @@ -191,11 +192,11 @@ * @param copiedLearningDesign the new run-time learning design copy * for this lesson. */ - private void createNewLesson(User user, - Organisation organisation, - List organizationUsers, - List staffs, - LearningDesign copiedLearningDesign) + private Lesson createNewLesson(User user, + Organisation organisation, + List organizationUsers, + List staffs, + LearningDesign copiedLearningDesign) { //create a new lesson object LessonClass newLessonClass = createNewLessonClass(copiedLearningDesign); @@ -217,6 +218,8 @@ newLessonClass); newLessonClass.setLesson(newLesson); lessonDAO.saveLesson(newLesson); + + return newLesson; } /** @@ -250,14 +253,14 @@ * @param activity * @throws LamsToolServiceException */ - private void initToolSessionFor(ToolActivity activity, Set learners) throws LamsToolServiceException + private void initToolSessionFor(ToolActivity activity, Set learners,Lesson lesson) throws LamsToolServiceException { activity.setToolSessions(new HashSet()); for (Iterator i = learners.iterator(); i.hasNext();) { User learner = (User) i.next(); - ToolSession toolSession = lamsToolService.createToolSession(learner,activity); + ToolSession toolSession = lamsToolService.createToolSession(learner,activity,lesson); //ask tool to create their own tool sessions using the given id. lamsToolService.notifyToolsToCreateSession(toolSession.getToolSessionId(), activity); //update the hibernate persistent object Index: lams_monitoring/test/java/org/lamsfoundation/lams/monitoring/service/TestMonitoringService.java =================================================================== diff -u -r5527b41a5f478e30cd0f6b100a217d1046604343 -r09b65e403c9fcb6cc894e6af85c408e654b46f8c --- lams_monitoring/test/java/org/lamsfoundation/lams/monitoring/service/TestMonitoringService.java (.../TestMonitoringService.java) (revision 5527b41a5f478e30cd0f6b100a217d1046604343) +++ lams_monitoring/test/java/org/lamsfoundation/lams/monitoring/service/TestMonitoringService.java (.../TestMonitoringService.java) (revision 09b65e403c9fcb6cc894e6af85c408e654b46f8c) @@ -56,7 +56,7 @@ private final Integer TEST_ORGANIZATION_ID = new Integer(1); //it might be different because it is automatically generated by database //TODO create a get lesson by design method in lesson dao. - private final Long TEST_LESSON_ID = new Long(1); + private static Long TEST_LESSON_ID = null; //--------------------------------------------------------------------- // Testing Data - Instance Variables //--------------------------------------------------------------------- @@ -115,12 +115,12 @@ LinkedList staffs = new LinkedList(); staffs.add(testStaff); - monitoringService.createLesson(TEST_LEARNING_DESIGN_ID, - testUser, - testOrganisation, - learners, - staffs); - + Lesson testLesson = monitoringService.createLesson(TEST_LEARNING_DESIGN_ID, + testUser, + testOrganisation, + learners, + staffs); + TEST_LESSON_ID=testLesson.getLessonId(); Lesson createdLesson = lessonDao.getLesson(TEST_LESSON_ID); assertNotNull(createdLesson); assertEquals("verify the design",TEST_LEARNING_DESIGN_ID,createdLesson.getLearningDesign().getLearningDesignId().longValue());