Index: lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsToolService.java
===================================================================
diff -u -rbefb60ab3288d93e681e0316168ede788a874895 -r6935a6aa9c04d7ef01ed59b9115e23bdbe7b337a
--- lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsToolService.java (.../ILamsToolService.java) (revision befb60ab3288d93e681e0316168ede788a874895)
+++ lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsToolService.java (.../ILamsToolService.java) (revision 6935a6aa9c04d7ef01ed59b9115e23bdbe7b337a)
@@ -9,6 +9,7 @@
import java.util.List;
import org.lamsfoundation.lams.learningdesign.Activity;
+import org.lamsfoundation.lams.learningdesign.ToolActivity;
import org.lamsfoundation.lams.tool.ToolSession;
import org.lamsfoundation.lams.usermanagement.User;
/**
@@ -30,15 +31,24 @@
public List getAllPotentialLearners(long toolContentID) throws LamsToolServiceException;
/**
- * Creates a ToolSession for a learner and activity.
+ * Creates a Lams ToolSession for a learner and activity.
* @param learner
* @param activity
*/
- public ToolSession createToolSession(User learner, Activity activity) throws LamsToolServiceException;
+ public ToolSession createToolSession(User learner, ToolActivity activity) throws LamsToolServiceException;
+
/**
* Returns the previously created ToolSession for a learner and activity.
*/
public ToolSession getToolSession(User learner, Activity activity) throws LamsToolServiceException;
+ /**
+ * Notify tools to create their tool sessions in their own tables.
+ * @param toolSessionId the tool session generated by lams.
+ * @param activity the activity correspondent to that tool session.
+ */
+ public void notifyToolsToCreateSession(Long toolSessionId, ToolActivity activity);
+
+ public Long copyToolContent(ToolActivity toolActivity);
}
Index: lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsToolService.java
===================================================================
diff -u
--- lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsToolService.java (revision 0)
+++ lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsToolService.java (revision 6935a6aa9c04d7ef01ed59b9115e23bdbe7b337a)
@@ -0,0 +1,168 @@
+/*
+ Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ USA
+
+ http://www.gnu.org/licenses/gpl.txt
+*/
+package org.lamsfoundation.lams.tool.service;
+
+import java.util.List;
+
+import org.lamsfoundation.lams.learningdesign.Activity;
+import org.lamsfoundation.lams.learningdesign.ToolActivity;
+import org.lamsfoundation.lams.tool.ToolContentIDGenerator;
+import org.lamsfoundation.lams.tool.ToolContentManager;
+import org.lamsfoundation.lams.tool.ToolSession;
+import org.lamsfoundation.lams.tool.ToolSessionManager;
+import org.lamsfoundation.lams.tool.dao.IToolSessionDAO;
+import org.lamsfoundation.lams.usermanagement.User;
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+
+
+/**
+ *
+ * @author Jacky Fang 2005-2-23
+ *
+ */
+public class LamsToolService implements ILamsToolService,ApplicationContextAware
+{
+ //---------------------------------------------------------------------
+ // Instance variables
+ //---------------------------------------------------------------------
+ private ApplicationContext context;
+ private IToolSessionDAO toolSessionDAO;
+ private ToolContentIDGenerator contentIDGenerator;
+ //---------------------------------------------------------------------
+ // Inversion of Control Methods - Method injection
+ //---------------------------------------------------------------------
+ /**
+ * @see org.springframework.context.ApplicationContextAware#setApplicationContext(org.springframework.context.ApplicationContext)
+ */
+ public void setApplicationContext(ApplicationContext context) throws BeansException
+ {
+ this.context = context;
+ }
+
+ /**
+ * @param toolSessionDAO The toolSessionDAO to set.
+ */
+ public void setToolSessionDAO(IToolSessionDAO toolSessionDAO)
+ {
+ this.toolSessionDAO = toolSessionDAO;
+ }
+
+ /**
+ * @param contentIDGenerator The contentIDGenerator to set.
+ */
+ public void setContentIDGenerator(ToolContentIDGenerator contentIDGenerator)
+ {
+ this.contentIDGenerator = contentIDGenerator;
+ }
+ //---------------------------------------------------------------------
+ // Service Methods
+ //---------------------------------------------------------------------
+ /**
+ * @see org.lamsfoundation.lams.tool.service.ILamsToolService#getAllPotentialLearners(long)
+ */
+ public List getAllPotentialLearners(long toolContentID) throws LamsToolServiceException
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /**
+ * @see org.lamsfoundation.lams.tool.service.ILamsToolService#createToolSession(org.lamsfoundation.lams.usermanagement.User, org.lamsfoundation.lams.learningdesign.Activity)
+ */
+ public ToolSession createToolSession(User learner, ToolActivity activity) throws LamsToolServiceException
+ {
+ ToolSession toolSession = activity.createToolSessionForActivity(learner);
+
+ toolSessionDAO.saveToolSession(toolSession);
+
+ return toolSession;
+ }
+
+ /**
+ * @see org.lamsfoundation.lams.tool.service.ILamsToolService#getToolSession(org.lamsfoundation.lams.usermanagement.User, org.lamsfoundation.lams.learningdesign.Activity)
+ */
+ public ToolSession getToolSession(User learner, Activity activity) throws LamsToolServiceException
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /**
+ * @see org.lamsfoundation.lams.tool.service.ILamsToolService#notifyToolsToCreateSession(java.lang.Long, org.lamsfoundation.lams.learningdesign.ToolActivity)
+ */
+ public void notifyToolsToCreateSession(Long toolSessionId, ToolActivity activity)
+ {
+ ToolSessionManager sessionManager = (ToolSessionManager) findToolService(activity);
+
+ sessionManager.createToolSession(toolSessionId,
+ activity.getToolContentId());
+
+ }
+
+ /**
+ * Make a copy of all tools content which belongs to this learning design.
+ *
+ * @param toolActivity the tool activity defined in the design.
+ * @see org.lamsfoundation.lams.tool.service.ILamsToolService#copyToolContent(org.lamsfoundation.lams.learningdesign.ToolActivity)
+ */
+ public Long copyToolContent(ToolActivity toolActivity)
+ {
+ Long newToolcontentID = contentIDGenerator.getNextToolContentIDFor(toolActivity.getTool());
+ //This is just for testing purpose because surveyService is the only
+ //service is available at the moment.
+ //TODO we need to remove this once all done.
+ if (isSurvey(toolActivity))
+ {
+ ToolContentManager contentManager = (ToolContentManager) findToolService(toolActivity);
+ contentManager.copyToolContent(toolActivity.getToolContentId(),
+ newToolcontentID);
+ }
+ return newToolcontentID;
+ }
+
+ //---------------------------------------------------------------------
+ // Helper Methods
+ //---------------------------------------------------------------------
+
+ /**
+ * Find a tool's service registered inside lams. It is implemented using
+ * Spring now. We might need to extract this method to a proxy class to
+ * find different service such as EJB or Web service.
+ * @param toolActivity the tool activity defined in the design.
+ * @return the service object from tool.
+ */
+ private Object findToolService(ToolActivity toolActivity)
+ {
+ return context.getBean(toolActivity.getTool().getServiceName());
+ }
+
+ /**
+ * This is more for testing purpose.
+ * @param toolActivity the tool activity defined in the design.
+ * @return
+ */
+ private boolean isSurvey(ToolActivity toolActivity)
+ {
+ return toolActivity.getTool().getServiceName().equals("surveyService");
+ }
+}
Index: lams_common/test/java/org/lamsfoundation/lams/tool/toolApplicationContext.xml
===================================================================
diff -u -r53f5c22785cd5d9d63e6c1557f460ba7314635e5 -r6935a6aa9c04d7ef01ed59b9115e23bdbe7b337a
--- lams_common/test/java/org/lamsfoundation/lams/tool/toolApplicationContext.xml (.../toolApplicationContext.xml) (revision 53f5c22785cd5d9d63e6c1557f460ba7314635e5)
+++ lams_common/test/java/org/lamsfoundation/lams/tool/toolApplicationContext.xml (.../toolApplicationContext.xml) (revision 6935a6aa9c04d7ef01ed59b9115e23bdbe7b337a)
@@ -32,4 +32,22 @@
+
+
+
+
+
+
+
+
+
+
+ PROPAGATION_REQUIRED,ISOLATION_READ_COMMITTED
+ PROPAGATION_REQUIRED,ISOLATION_READ_COMMITTED
+
+
+
+
Index: lams_monitoring/lib/lams/lams-tool-survey.jar
===================================================================
diff -u -r214a1446ca64680e16978f703dab68540a1c8a68 -r6935a6aa9c04d7ef01ed59b9115e23bdbe7b337a
Binary files differ
Index: lams_monitoring/lib/lams/lams.jar
===================================================================
diff -u -r9618589c0aa5eb2d26007e8c14adb13e47747a49 -r6935a6aa9c04d7ef01ed59b9115e23bdbe7b337a
Binary files differ
Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java
===================================================================
diff -u -r214a1446ca64680e16978f703dab68540a1c8a68 -r6935a6aa9c04d7ef01ed59b9115e23bdbe7b337a
--- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java (.../IMonitoringService.java) (revision 214a1446ca64680e16978f703dab68540a1c8a68)
+++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java (.../IMonitoringService.java) (revision 6935a6aa9c04d7ef01ed59b9115e23bdbe7b337a)
@@ -11,6 +11,7 @@
import java.util.List;
+import org.lamsfoundation.lams.tool.service.LamsToolServiceException;
import org.lamsfoundation.lams.usermanagement.Organisation;
import org.lamsfoundation.lams.usermanagement.User;
@@ -40,7 +41,7 @@
* service.
* @param lessonId the specified the lesson id.
*/
- public void startlesson(long lessonId);
+ public void startlesson(long lessonId)throws LamsToolServiceException;
/**
* Force the learner to complete all the activities for current lesson.
Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java
===================================================================
diff -u -r9618589c0aa5eb2d26007e8c14adb13e47747a49 -r6935a6aa9c04d7ef01ed59b9115e23bdbe7b337a
--- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision 9618589c0aa5eb2d26007e8c14adb13e47747a49)
+++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision 6935a6aa9c04d7ef01ed59b9115e23bdbe7b337a)
@@ -9,7 +9,6 @@
package org.lamsfoundation.lams.monitoring.service;
-import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
@@ -24,12 +23,9 @@
import org.lamsfoundation.lams.lesson.LessonClass;
import org.lamsfoundation.lams.lesson.dao.ILessonClassDAO;
import org.lamsfoundation.lams.lesson.dao.ILessonDAO;
-import org.lamsfoundation.lams.tool.NonGroupedToolSession;
-import org.lamsfoundation.lams.tool.ToolContentIDGenerator;
-import org.lamsfoundation.lams.tool.ToolContentManager;
import org.lamsfoundation.lams.tool.ToolSession;
-import org.lamsfoundation.lams.tool.ToolSessionManager;
-import org.lamsfoundation.lams.tool.dao.IToolSessionDAO;
+import org.lamsfoundation.lams.tool.service.ILamsToolService;
+import org.lamsfoundation.lams.tool.service.LamsToolServiceException;
import org.lamsfoundation.lams.usermanagement.Organisation;
import org.lamsfoundation.lams.usermanagement.User;
import org.springframework.beans.BeansException;
@@ -56,11 +52,11 @@
//---------------------------------------------------------------------
private ILessonDAO lessonDAO;
private ILessonClassDAO lessonClassDAO;
- private IToolSessionDAO toolSessionDAO;
+ private ILamsToolService lamsToolService;
private IAuthoringService authoringService;
private ApplicationContext context;
- private ToolContentIDGenerator contentIDGenerator;
+
//---------------------------------------------------------------------
// Inversion of Control Methods - Method injection
//---------------------------------------------------------------------
@@ -97,21 +93,13 @@
}
/**
- * @param contentIDGenerator The contentIDGenerator to set.
+ * @param lamsToolService The lamsToolService to set.
*/
- public void setContentIDGenerator(ToolContentIDGenerator contentIDGenerator)
+ public void setLamsToolService(ILamsToolService lamsToolService)
{
- this.contentIDGenerator = contentIDGenerator;
+ this.lamsToolService = lamsToolService;
}
- /**
- * @param toolSessionDAO The toolSessionDAO to set.
- */
- public void setToolSessionDAO(IToolSessionDAO toolSessionDAO)
- {
- this.toolSessionDAO = toolSessionDAO;
- }
-
//---------------------------------------------------------------------
// Service Methods
//---------------------------------------------------------------------
@@ -142,7 +130,7 @@
Activity currentActivity = (Activity) i.next();
if (currentActivity.isToolActivity())
{
- Long newContentId = copyToolContent((ToolActivity) currentActivity);
+ Long newContentId = lamsToolService.copyToolContent((ToolActivity) currentActivity);
((ToolActivity) currentActivity).setToolContentId(newContentId);
}
}
@@ -157,9 +145,10 @@
}
/**
+ * @throws LamsToolServiceException
* @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#startlesson(long)
*/
- public void startlesson(long lessonId)
+ public void startlesson(long lessonId) throws LamsToolServiceException
{
//we get the lesson just created
Lesson requestedLesson = lessonDAO.getLesson(new Long(lessonId));
@@ -169,6 +158,8 @@
.iterator(); i.hasNext();)
{
Activity activity = (Activity) i.next();
+ //TODO this is for testing purpose as survey is the only tool available
+ //so far.
if (shouldInitToolSessionFor(activity)&&this.isSurvey((ToolActivity)activity))
{
initToolSessionFor((ToolActivity) activity,
@@ -249,38 +240,6 @@
}
/**
- * Make a copy of all tools content which belongs to this learning design.
- *
- * @param toolActivity the tool activity defined in the design.
- */
- private Long copyToolContent(ToolActivity toolActivity)
- {
- Long newToolcontentID = contentIDGenerator.getNextToolContentIDFor(toolActivity.getTool());
- //This is just for testing purpose because surveyService is the only
- //service is available at the moment.
- //TODO we need to remove this once all done.
- if (isSurvey(toolActivity))
- {
- ToolContentManager contentManager = (ToolContentManager) findToolService(toolActivity);
- contentManager.copyToolContent(toolActivity.getToolContentId(),
- newToolcontentID);
- }
- return newToolcontentID;
- }
-
- /**
- * Find a tool's service registered inside lams. It is implemented using
- * Spring now. We might need to extract this method to a proxy class to
- * find different service such as EJB or Web service.
- * @param toolActivity the tool activity defined in the design.
- * @return the service object from tool.
- */
- private Object findToolService(ToolActivity toolActivity)
- {
- return context.getBean(toolActivity.getTool().getServiceName());
- }
-
- /**
* This is more for testing purpose.
* @param toolActivity the tool activity defined in the design.
* @return
@@ -292,39 +251,24 @@
/**
* @param activity
+ * @throws LamsToolServiceException
*/
- private void initToolSessionFor(ToolActivity activity, Set learners)
+ private void initToolSessionFor(ToolActivity activity, Set learners) throws LamsToolServiceException
{
activity.setToolSessions(new HashSet());
for (Iterator i = learners.iterator(); i.hasNext();)
{
User learner = (User) i.next();
- ToolSession toolSession = new NonGroupedToolSession(activity,
- new Date(System.currentTimeMillis()),
- ToolSession.STARTED_STATE,
- learner);
- toolSessionDAO.saveToolSession(toolSession);
+
+ ToolSession toolSession = lamsToolService.createToolSession(learner,activity);
//ask tool to create their own tool sessions using the given id.
- notifyToolsToCreateSession(toolSession.getToolSessionId(), activity);
+ lamsToolService.notifyToolsToCreateSession(toolSession.getToolSessionId(), activity);
//update the hibernate persistent object
activity.getToolSessions().add(toolSession);
}
}
/**
- * @param toolSessionId
- */
- private void notifyToolsToCreateSession(Long toolSessionId,
- ToolActivity activity)
- {
- ToolSessionManager sessionManager = (ToolSessionManager) findToolService(activity);
- //TODO this is for testing purpose as survey is the only tool available
- //so far.
- sessionManager.createToolSession(toolSessionId,
- activity.getToolContentId());
- }
-
- /**
* @param activity
* @return
*/
@@ -334,4 +278,5 @@
&& !((ToolActivity) activity).getTool().getSupportsGrouping();
}
+
}
\ No newline at end of file
Index: lams_monitoring/test/java/org/lamsfoundation/lams/monitoring/monitoringApplicationContext.xml
===================================================================
diff -u -r9618589c0aa5eb2d26007e8c14adb13e47747a49 -r6935a6aa9c04d7ef01ed59b9115e23bdbe7b337a
--- lams_monitoring/test/java/org/lamsfoundation/lams/monitoring/monitoringApplicationContext.xml (.../monitoringApplicationContext.xml) (revision 9618589c0aa5eb2d26007e8c14adb13e47747a49)
+++ lams_monitoring/test/java/org/lamsfoundation/lams/monitoring/monitoringApplicationContext.xml (.../monitoringApplicationContext.xml) (revision 6935a6aa9c04d7ef01ed59b9115e23bdbe7b337a)
@@ -19,13 +19,12 @@
- but this is cleaner as there is no need to ever access the unwrapped object.
-->
-
+
-
Index: lams_monitoring/test/java/org/lamsfoundation/lams/monitoring/service/TestMonitoringService.java
===================================================================
diff -u -r9618589c0aa5eb2d26007e8c14adb13e47747a49 -r6935a6aa9c04d7ef01ed59b9115e23bdbe7b337a
--- lams_monitoring/test/java/org/lamsfoundation/lams/monitoring/service/TestMonitoringService.java (.../TestMonitoringService.java) (revision 9618589c0aa5eb2d26007e8c14adb13e47747a49)
+++ lams_monitoring/test/java/org/lamsfoundation/lams/monitoring/service/TestMonitoringService.java (.../TestMonitoringService.java) (revision 6935a6aa9c04d7ef01ed59b9115e23bdbe7b337a)
@@ -16,6 +16,7 @@
import org.lamsfoundation.lams.lesson.Lesson;
import org.lamsfoundation.lams.lesson.dao.ILessonDAO;
import org.lamsfoundation.lams.lesson.dao.hibernate.LessonDAO;
+import org.lamsfoundation.lams.tool.service.LamsToolServiceException;
import org.lamsfoundation.lams.usermanagement.Organisation;
import org.lamsfoundation.lams.usermanagement.User;
import org.lamsfoundation.lams.usermanagement.service.IUserManagementService;
@@ -89,6 +90,7 @@
return new String[] { "/org/lamsfoundation/lams/tool/toolApplicationContext.xml",
"/org/lamsfoundation/lams/monitoring/monitoringApplicationContext.xml",
"/org/lamsfoundation/lams/lesson/lessonApplicationContext.xml",
+ "/org/lamsfoundation/lams/learningdesign/learningDesignApplicationContext.xml",
"/org/lamsfoundation/lams/authoring/mockAuthoringApplicationContext.xml",
"/org/lamsfoundation/lams/tool/survey/dataAccessContext.xml",
"/org/lamsfoundation/lams/tool/survey/surveyApplicationContext.xml",
@@ -124,7 +126,7 @@
//lessonDao.deleteLesson(createdLesson);
}
- public void testStartlesson()
+ public void testStartlesson() throws LamsToolServiceException
{
monitoringService.startlesson(TEST_LESSON_ID.longValue());
assertTrue(true);