Index: lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsCoreToolService.java =================================================================== diff -u -r622d79936d49e9d9e7011b2a493cfebbcee07d79 -r884b5578b8b6b8a5c269f87ac6c634abbe916455 --- lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsCoreToolService.java (.../ILamsCoreToolService.java) (revision 622d79936d49e9d9e7011b2a493cfebbcee07d79) +++ lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsCoreToolService.java (.../ILamsCoreToolService.java) (revision 884b5578b8b6b8a5c269f87ac6c634abbe916455) @@ -62,5 +62,14 @@ public void updateToolSession(ToolSession toolSession); - public String getToolURLByMode(ToolActivity activity, User learner, ToolAccessMode accessMode); + /** + * Return tool activity url for a learner according to the access mode. + * For example, the monitor side sould passed in the teacher mode and + * learning side sould pass in the learner mode. + * @param activity the requested activity. + * @param learner the current learner. + * @param accessMode tool access mode. + * @return the tool access url with tool session id and access mode. + */ + public String getToolURLByMode(ToolActivity activity, User learner, ToolAccessMode accessMode) throws LamsToolServiceException; } Index: lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsCoreToolService.java =================================================================== diff -u -r622d79936d49e9d9e7011b2a493cfebbcee07d79 -r884b5578b8b6b8a5c269f87ac6c634abbe916455 --- lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsCoreToolService.java (.../LamsCoreToolService.java) (revision 622d79936d49e9d9e7011b2a493cfebbcee07d79) +++ lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsCoreToolService.java (.../LamsCoreToolService.java) (revision 884b5578b8b6b8a5c269f87ac6c634abbe916455) @@ -32,6 +32,7 @@ import org.lamsfoundation.lams.tool.ToolSessionManager; import org.lamsfoundation.lams.tool.dao.IToolSessionDAO; import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.util.WebUtil; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; @@ -175,12 +176,33 @@ } /** + * @throws LamsToolServiceException * @see org.lamsfoundation.lams.tool.service.ILamsCoreToolService#getToolURLByMode(org.lamsfoundation.lams.learningdesign.ToolActivity, org.lamsfoundation.lams.usermanagement.User, org.lamsfoundation.lams.tool.ToolAccessMode) */ - public String getToolURLByMode(ToolActivity activity, User learner, ToolAccessMode accessMode) + public String getToolURLByMode(ToolActivity activity, User learner, ToolAccessMode accessMode) throws LamsToolServiceException { - // TODO Auto-generated method stub - return null; + ToolSession toolSession = toolSessionDAO.getToolSessionByLearner(learner, activity); + + if(accessMode==ToolAccessMode.LEARNER) + // Append toolSessionId to tool URL + return activity.getTool().getLearnerUrl() + "&" + + WebUtil.PARAM_TOOL_SESSION_ID + "=" + + toolSession.getToolSessionId().toString() + "&" + + WebUtil.PARAM_MODE + "=" + ToolAccessMode.LEARNER; + else if(accessMode == ToolAccessMode.TEACHER) + // Append toolSessionId to tool URL + return activity.getTool().getLearnerUrl() + "&" + + WebUtil.PARAM_TOOL_SESSION_ID + "=" + + toolSession.getToolSessionId().toString() + "&" + + WebUtil.PARAM_MODE + "=" + ToolAccessMode.TEACHER; + else if (accessMode == ToolAccessMode.AUTHOR) + // Append toolSessionId to tool URL + return activity.getTool().getAuthorUrl() + "&" + + WebUtil.PARAM_TOOL_SESSION_ID + "=" + + toolSession.getToolSessionId().toString() + "&" + + WebUtil.PARAM_MODE + "=" + ToolAccessMode.TEACHER; + + throw new LamsToolServiceException("Unknown tool access mode:"+accessMode.toString()); } //--------------------------------------------------------------------- // Helper Methods Index: lams_common/test/java/org/lamsfoundation/lams/tool/service/TestLamsToolService.java =================================================================== diff -u -r0735f8bbbe378127d27795e3d9773f3c1293ed41 -r884b5578b8b6b8a5c269f87ac6c634abbe916455 --- lams_common/test/java/org/lamsfoundation/lams/tool/service/TestLamsToolService.java (.../TestLamsToolService.java) (revision 0735f8bbbe378127d27795e3d9773f3c1293ed41) +++ lams_common/test/java/org/lamsfoundation/lams/tool/service/TestLamsToolService.java (.../TestLamsToolService.java) (revision 884b5578b8b6b8a5c269f87ac6c634abbe916455) @@ -22,6 +22,8 @@ package org.lamsfoundation.lams.tool.service; +import org.apache.log4j.Logger; +import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.tool.ToolDataAccessTestCase; import org.lamsfoundation.lams.tool.ToolSession; import org.lamsfoundation.lams.tool.dao.hibernate.ToolSessionDAO; @@ -36,6 +38,7 @@ */ public class TestLamsToolService extends ToolDataAccessTestCase { + private static Logger log = Logger.getLogger(TestLamsToolService.class); private ILamsCoreToolService toolService; /* @@ -83,8 +86,30 @@ { ToolSession tgroupedToolSession = toolService.getToolSessionByActivity(this.testUser, this.testGroupedActivity); - assertNotNull(tgroupedToolSession); - } + + public void testGetToolURLByLearnerMode() throws LamsToolServiceException + { + String learnerUrl = toolService.getToolURLByMode(testNonGroupedActivity,testUser,ToolAccessMode.LEARNER); + + assertNotNull(learnerUrl); + log.info("learner url:"+learnerUrl); + } + + public void testGetToolURLByTeacherMode() throws LamsToolServiceException + { + String monitorUrl = toolService.getToolURLByMode(testNonGroupedActivity,testUser,ToolAccessMode.TEACHER); + + assertNotNull(monitorUrl); + log.info("learner url:"+monitorUrl); + } + + public void testGetToolURLByAuthorMode() throws LamsToolServiceException + { + String authorUrl = toolService.getToolURLByMode(testNonGroupedActivity,testUser,ToolAccessMode.AUTHOR); + + assertNotNull(authorUrl); + log.info("learner url:"+authorUrl); + } }