Index: lams_learning/src/java/org/lamsfoundation/lams/learning/learningApplicationContext.xml
===================================================================
diff -u -r2bfd4245ec82b86c782db4a9be15f24c3e9a6ccc -r2b6827b06455b7269c88062bd218427529ee0a4c
--- lams_learning/src/java/org/lamsfoundation/lams/learning/learningApplicationContext.xml (.../learningApplicationContext.xml) (revision 2bfd4245ec82b86c782db4a9be15f24c3e9a6ccc)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/learningApplicationContext.xml (.../learningApplicationContext.xml) (revision 2b6827b06455b7269c88062bd218427529ee0a4c)
@@ -79,6 +79,7 @@
+
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressEngine.java
===================================================================
diff -u -rcdb910b6cd3de106725e2c22ded380c5c0fab650 -r2b6827b06455b7269c88062bd218427529ee0a4c
--- lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressEngine.java (.../ProgressEngine.java) (revision cdb910b6cd3de106725e2c22ded380c5c0fab650)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressEngine.java (.../ProgressEngine.java) (revision 2b6827b06455b7269c88062bd218427529ee0a4c)
@@ -28,6 +28,7 @@
import java.util.List;
import org.lamsfoundation.lams.learningdesign.*;
+import org.lamsfoundation.lams.learningdesign.dao.IActivityDAO;
import org.lamsfoundation.lams.lesson.*;
import org.lamsfoundation.lams.usermanagement.User;
@@ -39,6 +40,8 @@
*/
public class ProgressEngine
{
+
+ private IActivityDAO activityDAO;
/**
* Holds a list of completed activity ids in one recursive move to next
@@ -176,8 +179,7 @@
parent.getActivityTypeId()+" has been found");
//move to next activity within parent if not all children are completed.
- // TODO make sure we really have a complex activity, not a CGLIB proxy of activity.
- ComplexActivity complexParent = (ComplexActivity)parent;
+ ComplexActivity complexParent = (ComplexActivity) activityDAO.getActivityByActivityId(parent.getActivityId(),ComplexActivity.class);
if (!complexParent.areChildrenCompleted(learnerProgress))
{
Activity nextActivity = complexParent.getNextActivityByParent(completedActivity);
@@ -194,7 +196,7 @@
if(isParallelWaitActivity(nextActivity))
{
learnerProgress.setParallelWaiting(true);
- learnerProgress.setNextActivity(null);
+ // learnerProgress.setNextActivity(null);
populateCurrentCompletedActivityList(learnerProgress);
}
else
@@ -250,4 +252,8 @@
{
return nextActivity.getActivityTypeId().intValue()==ParallelWaitActivity.PARALLEL_WAIT_ACTIVITY_TYPE;
}
+
+ public void setActivityDAO(IActivityDAO activityDAO) {
+ this.activityDAO = activityDAO;
+ }
}
\ No newline at end of file
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java
===================================================================
diff -u -r2bfd4245ec82b86c782db4a9be15f24c3e9a6ccc -r2b6827b06455b7269c88062bd218427529ee0a4c
--- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision 2bfd4245ec82b86c782db4a9be15f24c3e9a6ccc)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision 2b6827b06455b7269c88062bd218427529ee0a4c)
@@ -294,6 +294,8 @@
{
LearnerProgress progress = learnerProgressDAO.getLearnerProgressByLearner(learnerId, lesson);
progress.setProgressState(activity, LearnerProgress.ACTIVITY_ATTEMPTED);
+ progress.setCurrentActivity(activity);
+ progress.setNextActivity(activity);
learnerProgressDAO.saveLearnerProgress(progress);
return progress;
}
@@ -512,30 +514,30 @@
*/
private void createToolSessionsIfNecessary(LearnerProgress learnerProgress)
{
- if(learnerProgress.getNextActivity()==null)
- throw new LearnerServiceException("Error occurs in [" +
- "createToolSessionsIfNecessary], Can't initialize tool " +
- "sessions without knowing the activity.");
+ // getNextActivity will be null if we have finished the top part of a parallel activity.
+
+ if(learnerProgress.getNextActivity()!=null) {
- Activity nextActivity = learnerProgress.getNextActivity();
- try
- {
- for(Iterator i = nextActivity.getAllToolActivities().iterator();i.hasNext();)
- {
- ToolActivity toolActivity = (ToolActivity)i.next();
- createToolSessionFor(toolActivity, learnerProgress.getUser(),learnerProgress.getLesson());
- }
+ Activity nextActivity = learnerProgress.getNextActivity();
+ try
+ {
+ for(Iterator i = nextActivity.getAllToolActivities().iterator();i.hasNext();)
+ {
+ ToolActivity toolActivity = (ToolActivity)i.next();
+ createToolSessionFor(toolActivity, learnerProgress.getUser(),learnerProgress.getLesson());
+ }
+ }
+ catch (LamsToolServiceException e)
+ {
+ log.error("error occurred in 'createToolSessionFor':"+e.getMessage());
+ throw new LearnerServiceException(e.getMessage());
+ }
+ catch (ToolException e)
+ {
+ log.error("error occurred in 'createToolSessionFor':"+e.getMessage());
+ throw new LearnerServiceException(e.getMessage());
+ }
}
- catch (LamsToolServiceException e)
- {
- log.error("error occurred in 'createToolSessionFor':"+e.getMessage());
- throw new LearnerServiceException(e.getMessage());
- }
- catch (ToolException e)
- {
- log.error("error occurred in 'createToolSessionFor':"+e.getMessage());
- throw new LearnerServiceException(e.getMessage());
- }
}
/**
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/ActivityAction.java
===================================================================
diff -u -rcdb910b6cd3de106725e2c22ded380c5c0fab650 -r2b6827b06455b7269c88062bd218427529ee0a4c
--- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/ActivityAction.java (.../ActivityAction.java) (revision cdb910b6cd3de106725e2c22ded380c5c0fab650)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/ActivityAction.java (.../ActivityAction.java) (revision 2b6827b06455b7269c88062bd218427529ee0a4c)
@@ -24,18 +24,14 @@
/* $$Id$$ */
package org.lamsfoundation.lams.learning.web.action;
-import javax.servlet.http.*;
+import javax.servlet.http.HttpServletRequest;
import org.lamsfoundation.lams.learning.service.ILearnerService;
import org.lamsfoundation.lams.learning.service.LearnerServiceProxy;
-import org.lamsfoundation.lams.learning.web.bean.SessionBean;
-import org.lamsfoundation.lams.learning.web.form.ActivityForm;
import org.lamsfoundation.lams.learning.web.util.ActivityMapping;
import org.lamsfoundation.lams.learning.web.util.LearningWebUtil;
-
+import org.lamsfoundation.lams.lesson.LearnerProgress;
import org.lamsfoundation.lams.web.action.LamsAction;
-import org.lamsfoundation.lams.lesson.*;
-import org.lamsfoundation.lams.learningdesign.*;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
@@ -82,34 +78,6 @@
*/
protected void setLearnerProgress(HttpServletRequest request, LearnerProgress learnerProgress) {
request.setAttribute(ActivityAction.LEARNER_PROGRESS_REQUEST_ATTRIBUTE, learnerProgress);
-
- SessionBean sessionBean = getSessionBean(request);
- // Save progress in session for Flash request
- sessionBean.setLearnerProgress(learnerProgress);
- setSessionBean(sessionBean, request);
}
- /**
- * Gets the session bean from session.
- * @return SessionBean for this request, null if no session.
- */
- protected SessionBean getSessionBean(HttpServletRequest request) {
- HttpSession session = request.getSession(false);
- if (session == null) {
- return null;
- }
- SessionBean sessionBean = (SessionBean)session.getAttribute(SessionBean.NAME);
- return sessionBean;
- }
-
- /**
- * Sets the session bean for this session.
- */
- protected void setSessionBean(SessionBean sessionBean, HttpServletRequest request) {
- HttpSession session = request.getSession(false);
- if (session == null) {
- return;
- }
- session.setAttribute(SessionBean.NAME, sessionBean);
- }
}
\ No newline at end of file
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/CompleteActivityAction.java
===================================================================
diff -u -r2bfd4245ec82b86c782db4a9be15f24c3e9a6ccc -r2b6827b06455b7269c88062bd218427529ee0a4c
--- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/CompleteActivityAction.java (.../CompleteActivityAction.java) (revision 2bfd4245ec82b86c782db4a9be15f24c3e9a6ccc)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/CompleteActivityAction.java (.../CompleteActivityAction.java) (revision 2b6827b06455b7269c88062bd218427529ee0a4c)
@@ -32,7 +32,6 @@
import org.apache.struts.action.ActionMapping;
import org.lamsfoundation.lams.learning.service.ILearnerService;
import org.lamsfoundation.lams.learning.service.LearnerServiceException;
-import org.lamsfoundation.lams.learning.web.bean.SessionBean;
import org.lamsfoundation.lams.learning.web.util.ActivityMapping;
import org.lamsfoundation.lams.learning.web.util.LearningWebUtil;
import org.lamsfoundation.lams.learningdesign.Activity;
@@ -66,12 +65,6 @@
HttpServletResponse response) {
ActivityMapping actionMappings = getActivityMapping();
- SessionBean sessionBean = getSessionBean(request);
- if (sessionBean == null) {
- // forward to the no session error page
- return mapping.findForward(ActivityMapping.NO_SESSION_ERROR);
- }
-
// check token
if (!this.isTokenValid(request, true)) {
// didn't come here from options page
@@ -100,10 +93,6 @@
}
LearningWebUtil.putActivityInRequest(request, progress.getNextActivity(), learnerService);
- // Save progress in session for Flash request
- sessionBean.setLearnerProgress(progress);
- setSessionBean(sessionBean, request);
-
ActionForward forward = actionMappings.getProgressForward(progress,true,request, learnerService);
return forward;
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayActivityAction.java
===================================================================
diff -u -r0d064806d262c256111bd37392a61e856d83caee -r2b6827b06455b7269c88062bd218427529ee0a4c
--- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayActivityAction.java (.../DisplayActivityAction.java) (revision 0d064806d262c256111bd37392a61e856d83caee)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayActivityAction.java (.../DisplayActivityAction.java) (revision 2b6827b06455b7269c88062bd218427529ee0a4c)
@@ -80,7 +80,6 @@
ActivityMapping actionMappings = LearnerServiceProxy.getActivityMapping(this.getServlet().getServletContext());
- //SessionBean sessionBean = LearningWebUtil.getSessionBean(request,getServlet().getServletContext());
LearnerProgress learnerProgress = LearningWebUtil.getLearnerProgressByID(request,
getServlet().getServletContext());
String progressSummary = getProgressSummary(learnerProgress);
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayOptionsActivityAction.java
===================================================================
diff -u -r2bfd4245ec82b86c782db4a9be15f24c3e9a6ccc -r2b6827b06455b7269c88062bd218427529ee0a4c
--- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayOptionsActivityAction.java (.../DisplayOptionsActivityAction.java) (revision 2bfd4245ec82b86c782db4a9be15f24c3e9a6ccc)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayOptionsActivityAction.java (.../DisplayOptionsActivityAction.java) (revision 2b6827b06455b7269c88062bd218427529ee0a4c)
@@ -83,7 +83,7 @@
form.setActivityId(activity.getActivityId());
- List activityURLs = new ArrayList();
+ List activityURLs = new ArrayList();
Set subActivities = optionsActivity.getActivities();
Iterator i = subActivities.iterator();
int completedCount = 0;
@@ -103,13 +103,11 @@
}
form.setActivityURLs(activityURLs);
- Integer minNum = optionsActivity.getMinNumberOfOptions();
- Integer maxNum = optionsActivity.getMaxNumberOfOptions();
- if ( ( minNum == null && completedCount > 0) || ( minNum != null && minNum.intValue() <= completedCount) ){
+ if ( optionsActivity.getMinNumberOfOptionsNotNull().intValue() <= completedCount ) {
form.setFinished(true);
}
- form.setMinimum(minNum!=null?optionsActivity.getMinNumberOfOptions().intValue():0);
- form.setMaximum(maxNum!=null?optionsActivity.getMaxNumberOfOptions().intValue():subActivities.size());
+ form.setMinimum(optionsActivity.getMinNumberOfOptionsNotNull().intValue());
+ form.setMaximum(optionsActivity.getMaxNumberOfOptionsNotNull().intValue());
this.saveToken(request);
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java
===================================================================
diff -u -r2bfd4245ec82b86c782db4a9be15f24c3e9a6ccc -r2b6827b06455b7269c88062bd218427529ee0a4c
--- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java (.../LearnerAction.java) (revision 2bfd4245ec82b86c782db4a9be15f24c3e9a6ccc)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java (.../LearnerAction.java) (revision 2b6827b06455b7269c88062bd218427529ee0a4c)
@@ -209,7 +209,6 @@
FlashMessage message = null;
try {
- //SessionBean sessionBean = LearningWebUtil.getSessionBean(request,getServlet().getServletContext());
LearnerProgress learnerProgress = LearningWebUtil.getLearnerProgressByUser(request,getServlet().getServletContext());
if(log.isDebugEnabled())
Fisheye: Tag 2b6827b06455b7269c88062bd218427529ee0a4c refers to a dead (removed) revision in file `lams_learning/src/java/org/lamsfoundation/lams/learning/web/bean/SessionBean.java'.
Fisheye: No comparison available. Pass `N' to diff?
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/ActivityMapping.java
===================================================================
diff -u -r0d064806d262c256111bd37392a61e856d83caee -r2b6827b06455b7269c88062bd218427529ee0a4c
--- lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/ActivityMapping.java (.../ActivityMapping.java) (revision 0d064806d262c256111bd37392a61e856d83caee)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/ActivityMapping.java (.../ActivityMapping.java) (revision 2b6827b06455b7269c88062bd218427529ee0a4c)
@@ -135,7 +135,7 @@
else
{
- if (progress.isParallelWaiting())
+ if (! progress.getCurrentActivity().isParallelActivity() && progress.isParallelWaiting())
{
// progress is waiting, goto waiting page
String strutsAction = this.getActivityMappingStrategy()
@@ -147,7 +147,7 @@
else
{
// display next activity
- if (progress.getPreviousActivity() instanceof ParallelActivity)
+ if (progress.getPreviousActivity()!=null && progress.getPreviousActivity().isParallelActivity())
{
// if previous activity was a parallel activity then we need to
// clear frames.
Index: lams_learning/web/requestURL.jsp
===================================================================
diff -u -r66f147e9d94ea10fa2c2cea70a78d6479096ddc7 -r2b6827b06455b7269c88062bd218427529ee0a4c
--- lams_learning/web/requestURL.jsp (.../requestURL.jsp) (revision 66f147e9d94ea10fa2c2cea70a78d6479096ddc7)
+++ lams_learning/web/requestURL.jsp (.../requestURL.jsp) (revision 2b6827b06455b7269c88062bd218427529ee0a4c)
@@ -42,9 +42,7 @@