Index: lams_learning/lib/lams/lams-tool-survey.jar
===================================================================
diff -u -r47a0b22c0f3ff85ed2d419ad50912025d55c9cfa -r3b567a2a4db4064f9c2aec96ffd5789ff7634788
Binary files differ
Index: lams_learning/lib/lams/lams.jar
===================================================================
diff -u -r32e9a495b2ccacfc4febc13648d255f466742a03 -r3b567a2a4db4064f9c2aec96ffd5789ff7634788
Binary files differ
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/ILearnerService.java
===================================================================
diff -u -red8afe78a454a4b3b9d2ae039ac12d7ad9dc809a -r3b567a2a4db4064f9c2aec96ffd5789ff7634788
--- lams_learning/src/java/org/lamsfoundation/lams/learning/service/ILearnerService.java (.../ILearnerService.java) (revision ed8afe78a454a4b3b9d2ae039ac12d7ad9dc809a)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/ILearnerService.java (.../ILearnerService.java) (revision 3b567a2a4db4064f9c2aec96ffd5789ff7634788)
@@ -110,4 +110,6 @@
public void exitLesson(LearnerProgress progress);
+ public Activity getActivity(Long activityId);
+
}
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java
===================================================================
diff -u -red8afe78a454a4b3b9d2ae039ac12d7ad9dc809a -r3b567a2a4db4064f9c2aec96ffd5789ff7634788
--- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision ed8afe78a454a4b3b9d2ae039ac12d7ad9dc809a)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision 3b567a2a4db4064f9c2aec96ffd5789ff7634788)
@@ -34,6 +34,7 @@
import org.lamsfoundation.lams.learningdesign.Activity;
import org.lamsfoundation.lams.learningdesign.ToolActivity;
+import org.lamsfoundation.lams.learningdesign.dao.IActivityDAO;
import org.lamsfoundation.lams.lesson.Lesson;
@@ -60,6 +61,7 @@
private ILearnerProgressDAO learnerProgressDAO;
private ILessonDAO lessonDAO;
+ private IActivityDAO activityDAO;
private ProgressEngine progressEngine;
private IToolSessionDAO toolSessionDAO;
private ILamsToolService lamsToolService;
@@ -111,6 +113,14 @@
public void setActivityMapping(ActivityMapping activityMapping) {
this.activityMapping = activityMapping;
}
+
+ /**
+ * @param activityDAO The activityDAO to set.
+ */
+ public void setActivityDAO(IActivityDAO activityDAO)
+ {
+ this.activityDAO = activityDAO;
+ }
//---------------------------------------------------------------------
// Service Methods
//---------------------------------------------------------------------
@@ -269,6 +279,14 @@
learnerProgressDAO.updateLearnerProgress(progress);
}
+ /**
+ * @see org.lamsfoundation.lams.learning.service.ILearnerService#getActivity(java.lang.Long)
+ */
+ public Activity getActivity(Long activityId)
+ {
+ return activityDAO.getActivityByActivityId(activityId);
+ }
+
//---------------------------------------------------------------------
// Helper Methods
//---------------------------------------------------------------------
@@ -314,6 +332,7 @@
ToolActivity toolActivity)
{
ToolSession targetSession = null;
+ //TODO need to be changed according to the change grouping concept
if(!toolActivity.getTool().getSupportsGrouping())
targetSession = toolSessionDAO.getToolSessionByLearner(learnerProgress.getUser(),
toolActivity);
@@ -363,5 +382,8 @@
}
return (LessonDTO[])lessonDTOList.toArray(new LessonDTO[lessonDTOList.size()]);
}
+
+
+
}
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerServiceProxy.java
===================================================================
diff -u -r69343b4e0d3e3cc472943b0d8b15515d83573c39 -r3b567a2a4db4064f9c2aec96ffd5789ff7634788
--- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerServiceProxy.java (.../LearnerServiceProxy.java) (revision 69343b4e0d3e3cc472943b0d8b15515d83573c39)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerServiceProxy.java (.../LearnerServiceProxy.java) (revision 3b567a2a4db4064f9c2aec96ffd5789ff7634788)
@@ -23,6 +23,8 @@
import javax.servlet.ServletContext;
+import org.lamsfoundation.lams.learning.web.util.ActivityMapping;
+import org.lamsfoundation.lams.tool.service.ILamsToolService;
import org.lamsfoundation.lams.usermanagement.service.IUserManagementService;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
@@ -63,6 +65,26 @@
}
/**
+ * Return the lams tool domain service object. It will delegate to the
+ * Spring helper method to retrieve the proper bean from Spring bean factory.
+ * @param serlvetContext the servletContext for current application
+ * @return tool service object
+ */
+ public static final ILamsToolService getLamsToolService(ServletContext serlvetContext)
+ {
+ return (ILamsToolService)getDomainService(serlvetContext,"lamsToolService");
+ }
+
+ /**
+ * Return the activity mapping service object.
+ * @param serlvetContext the servletContext for current application
+ * @return the activity mapping service object.
+ */
+ public static final ActivityMapping getActivityMapping(ServletContext serlvetContext)
+ {
+ return (ActivityMapping)getDomainService(serlvetContext,"activityMapping");
+ }
+ /**
* Retrieve the proper Spring bean from bean factory.
* @param servletContext the servletContext for current application
* @return the Spring service bean.
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java
===================================================================
diff -u -r32e9a495b2ccacfc4febc13648d255f466742a03 -r3b567a2a4db4064f9c2aec96ffd5789ff7634788
--- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java (.../LearnerAction.java) (revision 32e9a495b2ccacfc4febc13648d255f466742a03)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java (.../LearnerAction.java) (revision 3b567a2a4db4064f9c2aec96ffd5789ff7634788)
@@ -34,13 +34,19 @@
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.util.ActivityMapping;
import org.lamsfoundation.lams.learning.web.util.LearningWebUtil;
+import org.lamsfoundation.lams.learningdesign.Activity;
+import org.lamsfoundation.lams.learningdesign.dto.ProgressActivityDTO;
+
+
import org.lamsfoundation.lams.lesson.LearnerProgress;
import org.lamsfoundation.lams.lesson.Lesson;
import org.lamsfoundation.lams.lesson.dto.LessonDTO;
import org.lamsfoundation.lams.usermanagement.User;
+import org.lamsfoundation.lams.util.WebUtil;
import org.lamsfoundation.lams.util.wddx.FlashMessage;
import org.lamsfoundation.lams.util.wddx.WDDXProcessor;
import org.lamsfoundation.lams.web.action.LamsDispatchAction;
@@ -84,10 +90,7 @@
// Instance variables
//---------------------------------------------------------------------
private static Logger log = Logger.getLogger(LearnerAction.class);
- private static final String PARAM_USER_ID = "userId";
- private static final String PARAM_LESSON_ID = "lessonId";
- private static final String ATTR_USERDATA = "user";
- //private static final String PARAM_LEARNER_PROGRESS="?learnerProgressId=";
+
//---------------------------------------------------------------------
// Class level constants - Struts forward
//---------------------------------------------------------------------
@@ -167,7 +170,6 @@
//get user and lesson based on request.
User learner = LearningWebUtil.getUserData(request, getServlet().getServletContext());
-
Lesson lesson = LearningWebUtil.getLessonData(request,getServlet().getServletContext());
@@ -320,7 +322,31 @@
HttpServletResponse response) throws IOException,
ServletException
{
+ if(log.isDebugEnabled())
+ log.debug("Getting url for learner activity...");
+ //get parameter
+ long activityId = WebUtil.readLongParam(request,LearningWebUtil.PARAM_ACTIVITY_ID);
+ //initialize service object
+ ActivityMapping activityMapping = LearnerServiceProxy.getActivityMapping(this.getServlet().getServletContext());
+ ILearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext());
+
+ //getting requested object according to coming parameters
+ User learner = LearningWebUtil.getUserData(request, getServlet().getServletContext());
+ Activity requestedActivity = learnerService.getActivity(new Long(activityId));
+
+ //preparing tranfer object for flash
+ ProgressActivityDTO activityDTO = new ProgressActivityDTO(new Long(activityId),
+ activityMapping.calculateActivityURLForProgressView(learner,requestedActivity));
+ //send data back to flash.
+ String learnerActivityURL = WDDXProcessor.serialize(new FlashMessage("getLearnerActivityURL",
+ activityDTO));
+
+ if(log.isDebugEnabled())
+ log.debug("Sending learner activity url data to flash:"+learnerActivityURL);
+
+ //don't need to return a action forward because it sent the wddx packet
+ //back already.
return null;
}
}
\ No newline at end of file
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/ActivityMapping.java
===================================================================
diff -u -r47a0b22c0f3ff85ed2d419ad50912025d55c9cfa -r3b567a2a4db4064f9c2aec96ffd5789ff7634788
--- lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/ActivityMapping.java (.../ActivityMapping.java) (revision 47a0b22c0f3ff85ed2d419ad50912025d55c9cfa)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/ActivityMapping.java (.../ActivityMapping.java) (revision 3b567a2a4db4064f9c2aec96ffd5789ff7634788)
@@ -28,13 +28,17 @@
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ForwardingActionForward;
import org.apache.struts.action.RedirectingActionForward;
+import org.lamsfoundation.lams.learning.service.LearnerServiceException;
import org.lamsfoundation.lams.learningdesign.Activity;
+import org.lamsfoundation.lams.learningdesign.GroupingActivity;
import org.lamsfoundation.lams.learningdesign.ParallelActivity;
import org.lamsfoundation.lams.learningdesign.ToolActivity;
import org.lamsfoundation.lams.lesson.LearnerProgress;
+import org.lamsfoundation.lams.tool.ToolAccessMode;
import org.lamsfoundation.lams.tool.ToolSession;
import org.lamsfoundation.lams.tool.service.ILamsToolService;
import org.lamsfoundation.lams.tool.service.LamsToolServiceException;
+import org.lamsfoundation.lams.usermanagement.User;
import org.lamsfoundation.lams.util.WebUtil;
/**
@@ -266,6 +270,44 @@
return actionForward;
}
+ /**
+ * Calculate the activity url for progress view at learner side.
+ * @param learner the learner who owns the progress data
+ * @param activity the activity the learner want to view
+ * @return the url for that tool.
+ */
+ public String calculateActivityURLForProgressView(User learner, Activity activity)
+ {
+ //Activity activity = learnerService.getActivity(activityId);
+ try
+ {
+ if(activity instanceof ToolActivity)
+ {
+ ToolSession toolSession = toolService.getToolSessionByActivity(learner,(ToolActivity) activity);
+ return ((ToolActivity)activity).getTool().getLearnerUrl()
+ +"&"
+ +WebUtil.PARAM_TOOL_SESSION_ID
+ +"="
+ +toolSession.getToolSessionId().toString()
+ +"&"
+ +WebUtil.PARAM_MODE
+ +"="
+ +ToolAccessMode.LEARNER;
+ }
+ else if(activity instanceof GroupingActivity)
+ //TODO need to be changed when group action servlet is done
+ return "/viewGrouping.do?";
+ }
+ catch (LamsToolServiceException e)
+ {
+ //TODO define an exception at web layer
+ throw new LearnerServiceException(e.getMessage());
+ }
+
+ throw new LearnerServiceException("Fails to get the progress url view" +
+ " for activity["+activity.getActivityId().longValue()+"]");
+ }
+
public void setToolService(ILamsToolService toolService) {
this.toolService = toolService;
}
@@ -281,6 +323,4 @@
public void setActivityMappingStrategy(ActivityMappingStrategy activityMappingStrategy) {
this.activityMappingStrategy = activityMappingStrategy;
}
-
-
}
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/LearningWebUtil.java
===================================================================
diff -u -r32e9a495b2ccacfc4febc13648d255f466742a03 -r3b567a2a4db4064f9c2aec96ffd5789ff7634788
--- lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/LearningWebUtil.java (.../LearningWebUtil.java) (revision 32e9a495b2ccacfc4febc13648d255f466742a03)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/LearningWebUtil.java (.../LearningWebUtil.java) (revision 3b567a2a4db4064f9c2aec96ffd5789ff7634788)
@@ -49,9 +49,10 @@
//---------------------------------------------------------------------
// Class level constants - session attributes
//---------------------------------------------------------------------
- private static final String PARAM_USER_ID = "userId";
- private static final String PARAM_LESSON_ID = "lessonId";
- private static final String ATTR_USERDATA = "user";
+ public static final String PARAM_USER_ID = "userId";
+ public static final String PARAM_LESSON_ID = "lessonId";
+ public static final String ATTR_USERDATA = "user";
+ public static final String PARAM_ACTIVITY_ID = "activityId";
/**
* Helper method to retrieve the user data. We always load up from http
Index: lams_learning/test/java/org/lamsfoundation/lams/learning/service/TestLearnerService.java
===================================================================
diff -u -red8afe78a454a4b3b9d2ae039ac12d7ad9dc809a -r3b567a2a4db4064f9c2aec96ffd5789ff7634788
--- lams_learning/test/java/org/lamsfoundation/lams/learning/service/TestLearnerService.java (.../TestLearnerService.java) (revision ed8afe78a454a4b3b9d2ae039ac12d7ad9dc809a)
+++ lams_learning/test/java/org/lamsfoundation/lams/learning/service/TestLearnerService.java (.../TestLearnerService.java) (revision 3b567a2a4db4064f9c2aec96ffd5789ff7634788)
@@ -117,6 +117,7 @@
{
return new String[] { "/org/lamsfoundation/lams/lesson/lessonApplicationContext.xml",
"/org/lamsfoundation/lams/tool/toolApplicationContext.xml",
+ "/org/lamsfoundation/lams/learningdesign/learningDesignApplicationContext.xml",
"/org/lamsfoundation/lams/tool/survey/dataAccessContext.xml",
"/org/lamsfoundation/lams/tool/survey/surveyApplicationContext.xml",
"applicationContext.xml",
Index: lams_learning/test/java/org/lamsfoundation/lams/learning/web/action/TestLearnerAction.java
===================================================================
diff -u -r32e9a495b2ccacfc4febc13648d255f466742a03 -r3b567a2a4db4064f9c2aec96ffd5789ff7634788
--- lams_learning/test/java/org/lamsfoundation/lams/learning/web/action/TestLearnerAction.java (.../TestLearnerAction.java) (revision 32e9a495b2ccacfc4febc13648d255f466742a03)
+++ lams_learning/test/java/org/lamsfoundation/lams/learning/web/action/TestLearnerAction.java (.../TestLearnerAction.java) (revision 3b567a2a4db4064f9c2aec96ffd5789ff7634788)
@@ -24,6 +24,7 @@
import org.lamsfoundation.lams.AbstractLamsStrutsTestCase;
import org.lamsfoundation.lams.learning.web.bean.SessionBean;
+import org.lamsfoundation.lams.learning.web.util.LearningWebUtil;
/**
@@ -38,8 +39,10 @@
private static final String TEST_USER_ID = "2";
private static final String TEST_LESSON_ID = "2";
+ private static final String TEST_ACTIVITY_ID = "26";
private static SessionBean joinedLessonBean = null;
+
/*
* @see TestCase#setUp()
*/
@@ -65,6 +68,7 @@
{
return "/org/lamsfoundation/lams/lesson/lessonApplicationContext.xml "
+"/org/lamsfoundation/lams/tool/toolApplicationContext.xml "
+ +"/org/lamsfoundation/lams/learningdesign/learningDesignApplicationContext.xml "
+"applicationContext.xml "
+"/WEB-INF/spring/learningApplicationContext.xml";
}
@@ -81,7 +85,7 @@
public void testGetActiveLessons()
{
addRequestParameter("method", "getActiveLessons");
- addRequestParameter("userId", TEST_USER_ID);
+ addRequestParameter(LearningWebUtil.PARAM_USER_ID, TEST_USER_ID);
actionPerform();
@@ -91,8 +95,8 @@
public void testJoinLesson()
{
addRequestParameter("method", "joinLesson");
- addRequestParameter("userId", TEST_USER_ID);
- addRequestParameter("lessonId", TEST_LESSON_ID);
+ addRequestParameter(LearningWebUtil.PARAM_USER_ID, TEST_USER_ID);
+ addRequestParameter(LearningWebUtil.PARAM_LESSON_ID, TEST_LESSON_ID);
actionPerform();
@@ -109,8 +113,8 @@
{
httpSession.setAttribute(SessionBean.NAME,joinedLessonBean);
addRequestParameter("method", "getFlashProgressData");
- addRequestParameter("userId", TEST_USER_ID);
- addRequestParameter("lessonId", TEST_LESSON_ID);
+ addRequestParameter(LearningWebUtil.PARAM_USER_ID, TEST_USER_ID);
+ addRequestParameter(LearningWebUtil.PARAM_LESSON_ID, TEST_LESSON_ID);
actionPerform();
verifyNoActionErrors();
@@ -119,8 +123,8 @@
public void testExitLesson()
{
addRequestParameter("method", "exitLesson");
- addRequestParameter("userId", TEST_USER_ID);
- addRequestParameter("lessonId", TEST_LESSON_ID);
+ addRequestParameter(LearningWebUtil.PARAM_USER_ID, TEST_USER_ID);
+ addRequestParameter(LearningWebUtil.PARAM_LESSON_ID, TEST_LESSON_ID);
actionPerform();
@@ -129,4 +133,14 @@
verifyNoActionErrors();
}
+ public void testGetLearnerActivityURL()
+ {
+ addRequestParameter("method", "getLearnerActivityURL");
+ addRequestParameter(LearningWebUtil.PARAM_USER_ID, TEST_USER_ID);
+ addRequestParameter(LearningWebUtil.PARAM_ACTIVITY_ID, TEST_ACTIVITY_ID);
+
+ actionPerform();
+
+ verifyNoActionErrors();
+ }
}
Index: lams_learning/test/web/WEB-INF/spring/learningApplicationContext.xml
===================================================================
diff -u -red8afe78a454a4b3b9d2ae039ac12d7ad9dc809a -r3b567a2a4db4064f9c2aec96ffd5789ff7634788
--- lams_learning/test/web/WEB-INF/spring/learningApplicationContext.xml (.../learningApplicationContext.xml) (revision ed8afe78a454a4b3b9d2ae039ac12d7ad9dc809a)
+++ lams_learning/test/web/WEB-INF/spring/learningApplicationContext.xml (.../learningApplicationContext.xml) (revision 3b567a2a4db4064f9c2aec96ffd5789ff7634788)
@@ -19,6 +19,7 @@
+
@@ -42,7 +43,7 @@
-
+
http://localhost:8080/lams_learning/
Index: lams_learning/web/WEB-INF/lib/lams.jar
===================================================================
diff -u -r47a0b22c0f3ff85ed2d419ad50912025d55c9cfa -r3b567a2a4db4064f9c2aec96ffd5789ff7634788
Binary files differ