@@ -72,8 +74,8 @@
* the requested activity.
* @return toolSession if a new one created, null otherwise.
*/
- public ToolSession createToolSession(User learner, ToolActivity activity, Lesson lesson)
- throws LamsToolServiceException;
+ ToolSession createToolSession(User learner, ToolActivity activity, Lesson lesson)
+ throws DataIntegrityViolationException, RequiredGroupMissingException;
/**
* Creates LAMS ToolSessions for a set of learners and activity. Checks to see if an appropriate tool session exists
@@ -89,7 +91,7 @@
* the requested activity.
* @return toolSessions set of newly created ToolSessions
*/
- public Set createToolSessions(Set learners, ToolActivity activity, Lesson lesson) throws LamsToolServiceException;
+ Set createToolSessions(Set learners, ToolActivity activity, Lesson lesson) throws LamsToolServiceException;
/**
* Returns the previously created ToolSession for a learner and activity. It is queried base on learner.
@@ -102,7 +104,7 @@
* @throws LamsToolServiceException
* the known error condition when we are getting the tool session
*/
- public ToolSession getToolSessionByLearner(User learner, Activity activity) throws LamsToolServiceException;
+ ToolSession getToolSessionByLearner(User learner, Activity activity) throws LamsToolServiceException;
/**
* Returns the tool session according to tool session id.
@@ -111,7 +113,7 @@
* the requested tool session id.
* @return the tool session object
*/
- public ToolSession getToolSessionById(Long toolSessionId);
+ ToolSession getToolSessionById(Long toolSessionId);
/**
* Get the lams tool session based on activity. It search through all the tool sessions that linked to the requested
@@ -125,7 +127,7 @@
* @throws LamsToolServiceException
* the known error condition when we are getting the tool session
*/
- public ToolSession getToolSessionByActivity(User learner, ToolActivity toolActivity)
+ ToolSession getToolSessionByActivity(User learner, ToolActivity toolActivity)
throws LamsToolServiceException;
/**
@@ -136,7 +138,7 @@
* @param activity
* the activity correspondent to that tool session.
*/
- public void notifyToolsToCreateSession(ToolSession toolSession, ToolActivity activity) throws ToolException;
+ void notifyToolsToCreateSession(ToolSession toolSession, ToolActivity activity) throws ToolException;
/**
* Calls the tool to copy the content for an activity. Used when copying a learning design.
@@ -149,7 +151,7 @@
* ToolException
* @see org.lamsfoundation.lams.tool.service.ILamsCoreToolService#notifyToolToCopyContent(org.lamsfoundation.lams.learningdesign.ToolActivity)
*/
- public Long notifyToolToCopyContent(ToolActivity toolActivity, String customCSV) throws DataMissingException,
+ Long notifyToolToCopyContent(ToolActivity toolActivity, String customCSV) throws DataMissingException,
ToolException;
/**
@@ -165,7 +167,7 @@
* ToolException
* @see org.lamsfoundation.lams.tool.service.ILamsCoreToolService#notifyToolToCopyContent(org.lamsfoundation.lams.learningdesign.ToolActivity)
*/
- public Long notifyToolToCopyContent(Long toolContentId, String customCSV) throws DataMissingException,
+ Long notifyToolToCopyContent(Long toolContentId, String customCSV) throws DataMissingException,
ToolException;
/**
@@ -175,12 +177,12 @@
* the tool activity defined in the design.
* @throws ToolException
*/
- public void notifyToolToDeleteContent(ToolActivity toolActivity) throws ToolException;
+ void notifyToolToDeleteContent(ToolActivity toolActivity) throws ToolException;
/**
* Ask a tool to delete content entered by the given user, if exists.
*/
- public void notifyToolToDeleteLearnerContent(ToolActivity toolActivity, Integer userId) throws ToolException;
+ void notifyToolToDeleteLearnerContent(ToolActivity toolActivity, Integer userId) throws ToolException;
/**
* Ask a tool for its OutputDefinitions, based on the given toolContentId. If the tool doesn't have any content
@@ -193,7 +195,7 @@
* @return SortedMap of ToolOutputDefinitions with the key being the name of each definition
* @throws ToolException
*/
- public SortedMap
@@ -377,7 +379,7 @@
* @throws LamsToolServiceException
* @return the url with tool session id.
*/
- public String setupToolURLWithToolSession(ToolActivity activity, User learner, String toolURL)
+ String setupToolURLWithToolSession(ToolActivity activity, User learner, String toolURL)
throws LamsToolServiceException;
/**
@@ -391,7 +393,7 @@
* the target url
* @return the url with tool content id.
*/
- public String setupToolURLWithToolContent(ToolActivity activity, String toolURL);
+ String setupToolURLWithToolContent(ToolActivity activity, String toolURL);
- public Object findToolService(Tool tool) throws NoSuchBeanDefinitionException;
+ Object findToolService(Tool tool) throws NoSuchBeanDefinitionException;
}
Index: lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsCoreToolService.java
===================================================================
RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsCoreToolService.java,v
diff -u -r1.42 -r1.43
--- lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsCoreToolService.java 2 Feb 2014 17:18:38 -0000 1.42
+++ lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsCoreToolService.java 22 Apr 2014 19:44:46 -0000 1.43
@@ -49,8 +49,10 @@
import org.lamsfoundation.lams.tool.dao.IToolSessionDAO;
import org.lamsfoundation.lams.tool.exception.DataMissingException;
import org.lamsfoundation.lams.tool.exception.LamsToolServiceException;
+import org.lamsfoundation.lams.tool.exception.RequiredGroupMissingException;
import org.lamsfoundation.lams.tool.exception.ToolException;
import org.lamsfoundation.lams.usermanagement.User;
+import org.lamsfoundation.lams.util.MessageService;
import org.lamsfoundation.lams.util.WebUtil;
import org.lamsfoundation.lams.web.util.AttributeNames;
import org.springframework.beans.BeansException;
@@ -76,6 +78,7 @@
private ISystemToolDAO systemToolDAO;
private ToolContentIDGenerator contentIDGenerator;
protected IToolContentDAO toolContentDAO;
+ private MessageService messageService;
// ---------------------------------------------------------------------
// Inversion of Control Methods - Method injection
@@ -112,14 +115,21 @@
public void setToolContentDAO(IToolContentDAO toolContentDAO) {
this.toolContentDAO = toolContentDAO;
}
+
+ /**
+ * Set i18n MessageService
+ */
+ public void setMessageService(MessageService messageService) {
+ this.messageService = messageService;
+ }
// ---------------------------------------------------------------------
// Service Methods
// ---------------------------------------------------------------------
@Override
public synchronized ToolSession createToolSession(User learner, ToolActivity activity, Lesson lesson)
- throws LamsToolServiceException, DataIntegrityViolationException {
+ throws RequiredGroupMissingException, DataIntegrityViolationException {
// look for an existing applicable tool session
// could be either a grouped (class group or standard group) or an individual.
// more likely to be grouped (more tools work that way!)
@@ -134,7 +144,7 @@
+ lesson.getLessonId() + "," + lesson.getLessonName() + "].");
}
- toolSession = activity.createToolSessionForActivity(learner, lesson);
+ toolSession = activity.createToolSessionForActivity(messageService, learner, lesson);
toolSessionDAO.saveToolSession(toolSession);
return toolSession;
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java
===================================================================
RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java,v
diff -u -r1.110 -r1.111
--- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java 8 Apr 2014 11:33:30 -0000 1.110
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java 22 Apr 2014 19:44:42 -0000 1.111
@@ -82,6 +82,7 @@
import org.lamsfoundation.lams.tool.ToolOutputValue;
import org.lamsfoundation.lams.tool.ToolSession;
import org.lamsfoundation.lams.tool.exception.LamsToolServiceException;
+import org.lamsfoundation.lams.tool.exception.RequiredGroupMissingException;
import org.lamsfoundation.lams.tool.exception.ToolException;
import org.lamsfoundation.lams.tool.service.ILamsCoreToolService;
import org.lamsfoundation.lams.usermanagement.User;
@@ -380,9 +381,9 @@
ToolActivity toolActivity = (ToolActivity) activity;
createToolSessionFor(toolActivity, learnerProgress.getUser(), learnerProgress.getLesson());
}
- } catch (LamsToolServiceException e) {
- LearnerService.log.error("error occurred in 'createToolSessionFor':" + e.getMessage());
- throw new LearnerServiceException(e.getMessage());
+ } catch (RequiredGroupMissingException e) {
+ LearnerService.log.warn("error occurred in 'createToolSessionFor':" + e.getMessage());
+ throw e;
} catch (ToolException e) {
LearnerService.log.error("error occurred in 'createToolSessionFor':" + e.getMessage());
throw new LearnerServiceException(e.getMessage());
@@ -1035,7 +1036,7 @@
* @throws LamsToolServiceException
*/
private void createToolSessionFor(ToolActivity toolActivity, User learner, Lesson lesson)
- throws LamsToolServiceException, ToolException {
+ throws RequiredGroupMissingException, ToolException {
// if the tool session already exists, createToolSession() will return null
ToolSession toolSession = null;
try {
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LoadToolActivityAction.java
===================================================================
RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LoadToolActivityAction.java,v
diff -u -r1.23 -r1.24
--- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LoadToolActivityAction.java 17 Jan 2014 22:37:27 -0000 1.23
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LoadToolActivityAction.java 22 Apr 2014 19:44:42 -0000 1.24
@@ -41,6 +41,7 @@
import org.lamsfoundation.lams.learning.web.util.LearningWebUtil;
import org.lamsfoundation.lams.learningdesign.Activity;
import org.lamsfoundation.lams.lesson.LearnerProgress;
+import org.lamsfoundation.lams.tool.exception.RequiredGroupMissingException;
import org.springframework.transaction.UnexpectedRollbackException;
/**
@@ -53,6 +54,7 @@
* @struts:action path="/LoadToolActivity" name="activityForm" validate="false" scope="request"
*
* @struts:action-forward name="displayTool" path=".loadToolActivity"
+ * @struts:action-forward name="message" path=".message"
*
*/
public class LoadToolActivityAction extends ActivityAction {
@@ -98,8 +100,16 @@
synchronized (toolSessionCreationLock) {
try {
learnerService.createToolSessionsIfNecessary(activity, learnerProgress);
+
} catch (UnexpectedRollbackException e) {
log.warn("Got exception while trying to create a tool session, but carrying on.", e);
+
+ } catch (RequiredGroupMissingException e) {
+
+ //got here when activity requires existing grouping but no group for user exists yet
+ log.warn(e.getMessage());
+ request.setAttribute("messageKey", e.getMessage());
+ return mapping.findForward("message");
}
}
Index: lams_learning/web/msgContent.jsp
===================================================================
RCS file: /usr/local/cvsroot/lams_learning/web/msgContent.jsp,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ lams_learning/web/msgContent.jsp 22 Apr 2014 19:44:42 -0000 1.1
@@ -0,0 +1,12 @@
+<%@ taglib uri="tags-fmt" prefix="fmt" %>
+
+
+
Index: lams_learning/web/WEB-INF/tiles-defs.xml
===================================================================
RCS file: /usr/local/cvsroot/lams_learning/web/WEB-INF/tiles-defs.xml,v
diff -u -r1.3 -r1.4
--- lams_learning/web/WEB-INF/tiles-defs.xml 17 Jan 2014 22:37:27 -0000 1.3
+++ lams_learning/web/WEB-INF/tiles-defs.xml 22 Apr 2014 19:44:42 -0000 1.4
@@ -55,6 +55,11 @@
+
+
+
+