Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -r746996251040032dc7e6181ce63fcc3a8fcef5db -ra207bdecc16a704428826dbf402a97de2e35458b Binary files differ Index: lams_common/src/java/org/lamsfoundation/lams/tool/ToolSessionManager.java =================================================================== diff -u -r97612142f4697066beb66064e83ff31fef1712b9 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_common/src/java/org/lamsfoundation/lams/tool/ToolSessionManager.java (.../ToolSessionManager.java) (revision 97612142f4697066beb66064e83ff31fef1712b9) +++ lams_common/src/java/org/lamsfoundation/lams/tool/ToolSessionManager.java (.../ToolSessionManager.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -28,6 +28,7 @@ import org.lamsfoundation.lams.tool.exception.DataMissingException; import org.lamsfoundation.lams.tool.exception.ToolException; +import org.lamsfoundation.lams.usermanagement.User; @@ -40,8 +41,8 @@ * @since 2004-12-6 * @version 1.1 */ -public interface ToolSessionManager -{ +public interface ToolSessionManager { + /** * Create a tool session for a piece of tool content using the tool * session id generated by LAMS. If no content exists with the given @@ -52,7 +53,7 @@ * @param toolContentId the tool content id specified. * @throws ToolException if an error occurs e.g. defaultContent is missing. */ - public void createToolSession(Long toolSessionId, String toolSessionName, Long toolContentId) throws ToolException; + void createToolSession(Long toolSessionId, String toolSessionName, Long toolContentId) throws ToolException; /** * Call the controller service to complete and leave the tool session. @@ -61,7 +62,7 @@ * @throws DataMissingException if no tool session matches the toolSessionId * @throws ToolException if any other error occurs */ - public String leaveToolSession(Long toolSessionId, Long learnerId) + String leaveToolSession(Long toolSessionId, Long learnerId) throws DataMissingException, ToolException; /** @@ -70,7 +71,7 @@ * @throws DataMissingException if no tool session matches the toolSessionId * @throws ToolException if any other error occurs */ - public ToolSessionExportOutputData exportToolSession(Long toolSessionId) + ToolSessionExportOutputData exportToolSession(Long toolSessionId) throws DataMissingException, ToolException; /** @@ -79,7 +80,7 @@ * @throws DataMissingException if no tool session matches the toolSessionId * @throws ToolException if any other error occurs */ - public ToolSessionExportOutputData exportToolSession(List toolSessionIds) + ToolSessionExportOutputData exportToolSession(List toolSessionIds) throws DataMissingException, ToolException; /** @@ -88,7 +89,7 @@ * @throws DataMissingException if no tool session matches the toolSessionId * @throws ToolException if any other error occurs */ - public void removeToolSession(Long toolSessionId) + void removeToolSession(Long toolSessionId) throws DataMissingException, ToolException; /** Get all the outputs that match the list of names. @@ -108,7 +109,7 @@ * that "name". At present, if there are multiple attempts at an activity for one learner, we assume each attempt would have a * different toolSessionId, and hence getToolOutput[] would be called multiple times. This may not be a valid assumption. */ - public SortedMap getToolOutput(List names, Long toolSessionId, Long learnerId); + SortedMap getToolOutput(List names, Long toolSessionId, Long learnerId); /** * Get the outputs for a particular tool output name. @@ -122,8 +123,17 @@ * * Note: the learnerId may not be the userId of the current user as the current user may be a staff member. */ - public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId); + ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId); - + /** + * Notifies tool that the user is force completed. Currently it's been utilized only by leader aware tools, which + * copy results from leader to non-leader. All other tools leave this method blank. + * + * @param toolSessionId + * @param learner + * user to be force completed + * @throws ToolException + */ + void forceCompleteUser(Long toolSessionId, User user); } Index: lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsCoreToolService.java =================================================================== diff -u -rbbd946d0a18f784ff7f72d0cebaaa3828980dfd0 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsCoreToolService.java (.../ILamsCoreToolService.java) (revision bbd946d0a18f784ff7f72d0cebaaa3828980dfd0) +++ lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsCoreToolService.java (.../ILamsCoreToolService.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -257,6 +257,17 @@ Integer learnerId) throws ToolException; /** + * Notifies tool that the user is force completed. Currently it's been utilized only by leader aware tools, which + * copy results from leader to non-leader. + * + * @param toolSession + * @param learner + * user to be force completed + * @throws ToolException + */ + void forceCompleteActivity(ToolSession toolSession, User learner) throws ToolException; + + /** * Get activity's max possible mark. * * @param activity Index: lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsCoreToolService.java =================================================================== diff -u -rbbd946d0a18f784ff7f72d0cebaaa3828980dfd0 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsCoreToolService.java (.../LamsCoreToolService.java) (revision bbd946d0a18f784ff7f72d0cebaaa3828980dfd0) +++ lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsCoreToolService.java (.../LamsCoreToolService.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -423,6 +423,39 @@ } @Override + public void forceCompleteActivity(ToolSession toolSession, User learner) throws ToolException { + + if (toolSession == null) { + String error = "The toolSession is not valid. Unable to force complete activity."; + LamsCoreToolService.log.error(error); + throw new DataMissingException(error); + } + + Tool tool = toolSession.getToolActivity().getTool(); + if (tool == null) { + String error = "The tool for toolSession " + toolSession.getToolSessionId() + " is missing."; + LamsCoreToolService.log.error(error); + throw new DataMissingException(error); + } + + try { + ToolSessionManager sessionManager = (ToolSessionManager) findToolService(tool); + sessionManager.forceCompleteUser(toolSession.getToolSessionId(), learner); + } catch (NoSuchBeanDefinitionException e) { + String message = "A tool which is defined in the database appears to missing from the classpath. Unable to force complete activity. toolSession " + + toolSession.getToolSessionId(); + LamsCoreToolService.log.error(message, e); + throw new ToolException(message, e); + } catch (java.lang.AbstractMethodError e) { + String message = "Tool " + + tool.getToolDisplayName() + + " doesn't support the forceCompleteUser(ToolSession toolSession, User learner) method so can't force complete learner."; + LamsCoreToolService.log.error(message, e); + throw new ToolException(message, e); + } + } + + @Override public SortedMap getOutputFromTool(List names, Long toolSessionId, Integer learnerId) throws ToolException { ToolSession session = toolSessionDAO.getToolSession(toolSessionId); Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java =================================================================== diff -u -r84f42f54d7fe6904ff205466a32cdd2a8c196231 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision 84f42f54d7fe6904ff205466a32cdd2a8c196231) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -1189,6 +1189,11 @@ learnerService.createToolSessionsIfNecessary(toolActivity, progress); toolSession = lamsCoreToolService.getToolSessionByActivity(learner, toolActivity); } + + // Let activity know that the user is force completed. Currently it's been utilized only by leader + // aware tools, it copies results from leader to non-leader. + lamsCoreToolService.forceCompleteActivity(toolSession, progress.getUser()); + learnerService.completeToolSession(toolSession.getToolSessionId(), new Long(learner.getUserId() .longValue())); learnerService.completeActivity(learner.getUserId(), activity, lessonId); Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== diff -u -r69b35bee45fa0a1aa322c3a0eac35b035862184a -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 69b35bee45fa0a1aa322c3a0eac35b035862184a) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -63,6 +63,7 @@ import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; import org.lamsfoundation.lams.rest.RestTags; import org.lamsfoundation.lams.rest.ToolRestManager; +import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.tool.ToolContentImport102Manager; import org.lamsfoundation.lams.tool.ToolContentManager; import org.lamsfoundation.lams.tool.ToolOutput; @@ -1763,7 +1764,39 @@ return assessmentOutputFactory.getToolOutput(name, this, toolSessionId, learnerId); } + @Override + public void forceCompleteUser(Long toolSessionId, User user) { + Long userId = user.getUserId().longValue(); + AssessmentSession session = getAssessmentSessionBySessionId(toolSessionId); + if ((session == null) || (session.getAssessment() == null)) { + return; + } + Assessment assessment = session.getAssessment(); + + // copy answers only in case leader aware feature is ON + if (assessment.isUseSelectLeaderToolOuput()) { + + AssessmentUser assessmentUser = getUserByIDAndSession(userId, toolSessionId); + // create user if he hasn't accessed this activity yet + if (assessmentUser == null) { + assessmentUser = new AssessmentUser(user.getUserDTO(), session); + createUser(assessmentUser); + } + + AssessmentUser groupLeader = session.getGroupLeader(); + + // check if leader has submitted answers + if (groupLeader != null && groupLeader.isSessionFinished()) { + + // we need to make sure specified user has the same scratches as a leader + copyAnswersFromLeader(assessmentUser, groupLeader); + } + + } + + } + public boolean isContentEdited(Long toolContentId) { return getAssessmentByContentId(toolContentId).isDefineLater(); } Index: lams_tool_bbb/src/java/org/lamsfoundation/lams/tool/bbb/service/BbbService.java =================================================================== diff -u -r40eb54374e84591563d8b6a679ac719dbc85c8f7 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_tool_bbb/src/java/org/lamsfoundation/lams/tool/bbb/service/BbbService.java (.../BbbService.java) (revision 40eb54374e84591563d8b6a679ac719dbc85c8f7) +++ lams_tool_bbb/src/java/org/lamsfoundation/lams/tool/bbb/service/BbbService.java (.../BbbService.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -65,6 +65,7 @@ import org.lamsfoundation.lams.tool.exception.SessionDataExistsException; import org.lamsfoundation.lams.tool.exception.ToolException; import org.lamsfoundation.lams.tool.service.ILamsToolService; +import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; /** @@ -121,41 +122,35 @@ } public ToolSessionExportOutputData exportToolSession(Long toolSessionId) throws DataMissingException, ToolException { - // TODO Auto-generated method stub return null; } @SuppressWarnings("unchecked") public ToolSessionExportOutputData exportToolSession(List toolSessionIds) throws DataMissingException, ToolException { - // TODO Auto-generated method stub return null; } + @Override public void removeToolSession(Long toolSessionId) throws DataMissingException, ToolException { bbbSessionDAO.deleteByProperty(BbbSession.class, "sessionId", toolSessionId); // TODO check if cascade worked } - /** - * Get the tool output for the given tool output names. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.util .List, java.lang.Long, - * java.lang.Long) - */ + @Override public SortedMap getToolOutput(List names, Long toolSessionId, Long learnerId) { return new TreeMap(); } - /** - * Get the tool output for the given tool output name. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.lang.String, java.lang.Long, - * java.lang.Long) - */ + @Override public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return null; } + + @Override + public void forceCompleteUser(Long toolSessionId, User user) { + //no actions required + } /* Methods from ToolContentManager */ Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java =================================================================== diff -u -re468897ae6cf29107fd94b75739d9c365223e612 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java (.../ChatService.java) (revision e468897ae6cf29107fd94b75739d9c365223e612) +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java (.../ChatService.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -71,6 +71,7 @@ import org.lamsfoundation.lams.tool.exception.SessionDataExistsException; import org.lamsfoundation.lams.tool.exception.ToolException; import org.lamsfoundation.lams.tool.service.ILamsToolService; +import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.JsonUtil; import org.lamsfoundation.lams.util.WebUtil; @@ -128,6 +129,7 @@ chatSessionDAO.saveOrUpdate(session); } + @Override public String leaveToolSession(Long toolSessionId, Long learnerId) throws DataMissingException, ToolException { // TODO issues with session status/start date/ end date. Need to @@ -167,44 +169,43 @@ return learnerService.completeToolSession(toolSessionId, learnerId); } + @Override public ToolSessionExportOutputData exportToolSession(Long toolSessionId) throws DataMissingException, ToolException { // TODO Auto-generated method stub return null; } + @Override public ToolSessionExportOutputData exportToolSession(List toolSessionIds) throws DataMissingException, ToolException { // TODO Auto-generated method stub return null; } + @Override public void removeToolSession(Long toolSessionId) throws DataMissingException, ToolException { chatSessionDAO.deleteBySessionID(toolSessionId); // TODO check if cascade worked } - /** - * Get the tool output for the given tool output names. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.util.List, java.lang.Long, - * java.lang.Long) - */ + @Override public SortedMap getToolOutput(List names, Long toolSessionId, Long learnerId) { return getChatOutputFactory().getToolOutput(names, this, toolSessionId, learnerId); } - /** - * Get the tool output for the given tool output name. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.lang.String, java.lang.Long, - * java.lang.Long) - */ + @Override public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return getChatOutputFactory().getToolOutput(name, this, toolSessionId, learnerId); } + + @Override + public void forceCompleteUser(Long toolSessionId, User user) { + //no actions required + } /* Methods from ToolContentManager */ + @Override public void copyToolContent(Long fromContentId, Long toContentId) throws ToolException { if (ChatService.logger.isDebugEnabled()) { Index: lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/service/DacoServiceImpl.java =================================================================== diff -u -r40eb54374e84591563d8b6a679ac719dbc85c8f7 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/service/DacoServiceImpl.java (.../DacoServiceImpl.java) (revision 40eb54374e84591563d8b6a679ac719dbc85c8f7) +++ lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/service/DacoServiceImpl.java (.../DacoServiceImpl.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -564,6 +564,7 @@ } } + @Override public DacoSession getSessionBySessionId(Long sessionId) { return dacoSessionDao.getSessionBySessionId(sessionId); } @@ -579,34 +580,22 @@ return contentId; } - /** - * Get the tool output for the given tool output names. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.util.List, java.lang.Long, - * java.lang.Long) - */ + @Override public SortedMap getToolOutput(List names, Long toolSessionId, Long learnerId) { return dacoOutputFactory.getToolOutput(names, this, toolSessionId, learnerId); } - /** - * Get the tool output for the given tool output name. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.lang.String, java.lang.Long, - * java.lang.Long) - */ + @Override public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return dacoOutputFactory.getToolOutput(name, this, toolSessionId, learnerId); } + + @Override + public void forceCompleteUser(Long toolSessionId, User user) { + //no actions required + } - /** - * Get the definitions for possible output for an activity, based on the toolContentId. These may be definitions - * that are always available for the tool (e.g. number of marks for Multiple Choice) or a custom definition created - * for a particular activity such as the answer to the third question contains the word Koala and hence the need for - * the toolContentId - * - * @return SortedMap of ToolOutputDefinitions with the key being the name of each definition - */ + @Override public SortedMap getToolOutputDefinitions(Long toolContentId, int definitionType) throws ToolException { Daco daco = getDacoByContentId(toolContentId); @@ -620,28 +609,29 @@ return getDacoOutputFactory().getToolOutputDefinitions(daco, definitionType); } + @Override public String getToolContentTitle(Long toolContentId) { return getDacoByContentId(toolContentId).getTitle(); } + @Override public boolean isContentEdited(Long toolContentId) { return getDacoByContentId(toolContentId).isDefineLater(); } + @Override public DacoUser getUser(Long uid) { return (DacoUser) dacoUserDao.getObject(DacoUser.class, uid); } + @Override public DacoUser getUserByUserIdAndContentId(Long userId, Long contentId) { - return dacoUserDao.getUserByUserIdAndContentId(userId, contentId); - } + @Override public DacoUser getUserByUserIdAndSessionId(Long userId, Long sessionId) { - return dacoUserDao.getUserByUserIdAndSessionId(userId, sessionId); - } /* Index: lams_tool_eadventure/src/java/org/eucm/lams/tool/eadventure/service/EadventureServiceImpl.java =================================================================== diff -u -r40eb54374e84591563d8b6a679ac719dbc85c8f7 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_tool_eadventure/src/java/org/eucm/lams/tool/eadventure/service/EadventureServiceImpl.java (.../EadventureServiceImpl.java) (revision 40eb54374e84591563d8b6a679ac719dbc85c8f7) +++ lams_tool_eadventure/src/java/org/eucm/lams/tool/eadventure/service/EadventureServiceImpl.java (.../EadventureServiceImpl.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -118,9 +118,7 @@ * */ public class EadventureServiceImpl implements IEadventureService, ToolContentManager, ToolSessionManager, - ToolContentImport102Manager - -{ + ToolContentImport102Manager { static Logger log = Logger.getLogger(EadventureServiceImpl.class.getName()); private EadventureDAO eadventureDao; @@ -1098,15 +1096,16 @@ } } - public void removeParams(Long toolContentId){ + public void removeParams(Long toolContentId) { List params = getEadventureParamByContentId(toolContentId); - if (params!=null){ - for (EadventureParam param:params){ - eadventureParamDao.delete(param); + if (params != null) { + for (EadventureParam param : params) { + eadventureParamDao.delete(param); + } } - } } + @Override public void createToolSession(Long toolSessionId, String toolSessionName, Long toolContentId) throws ToolException { EadventureSession session = new EadventureSession(); session.setSessionId(toolSessionId); @@ -1116,6 +1115,7 @@ eadventureSessionDao.saveObject(session); } + @Override public String leaveToolSession(Long toolSessionId, Long learnerId) throws DataMissingException, ToolException { if (toolSessionId == null) { EadventureServiceImpl.log.error("Fail to leave tool Session based on null tool session id."); @@ -1139,38 +1139,36 @@ return learnerService.completeToolSession(toolSessionId, learnerId); } + @Override public ToolSessionExportOutputData exportToolSession(Long toolSessionId) throws DataMissingException, ToolException { return null; } + @Override public ToolSessionExportOutputData exportToolSession(List toolSessionIds) throws DataMissingException, ToolException { return null; } + @Override public void removeToolSession(Long toolSessionId) throws DataMissingException, ToolException { eadventureSessionDao.deleteBySessionId(toolSessionId); } - /** - * Get the tool output for the given tool output names. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.util.List, java.lang.Long, - * java.lang.Long) - */ + @Override public SortedMap getToolOutput(List names, Long toolSessionId, Long learnerId) { return getEadventureOutputFactory().getToolOutput(names, this, toolSessionId, learnerId); } - /** - * Get the tool output for the given tool output name. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.lang.String, java.lang.Long, - * java.lang.Long) - */ + @Override public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return getEadventureOutputFactory().getToolOutput(name, this, toolSessionId, learnerId); } + + @Override + public void forceCompleteUser(Long toolSessionId, User user) { + //no actions required + } /* ===============Methods implemented from ToolContentImport102Manager =============== */ Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java =================================================================== diff -u -re55180457649e195f5ee34eaa86bd3095b3c52f2 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java (.../ForumService.java) (revision e55180457649e195f5ee34eaa86bd3095b3c52f2) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java (.../ForumService.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -949,15 +949,7 @@ return true; } - /** - * Export the XML fragment for the tool's content, along with any files needed for the content. - * - * @throws DataMissingException - * if no tool content matches the toolSessionId - * @throws ToolException - * if any other error occurs - */ - + @Override public void exportToolContent(Long toolContentId, String rootPath) throws DataMissingException, ToolException { Forum toolContentObj = forumDao.getByContentId(toolContentId); if (toolContentObj == null) { @@ -993,12 +985,7 @@ } } - /** - * Import the XML fragment for the tool's content, along with any files needed for the content. - * - * @throws ToolException - * if any other error occurs - */ + @Override public void importToolContent(Long toolContentId, Integer newUserUid, String toolContentPath, String fromVersion, String toVersion) throws ToolException { @@ -1053,14 +1040,7 @@ } } - /** - * Get the definitions for possible output for an activity, based on the toolContentId. These may be definitions - * that are always available for the tool (e.g. number of marks for Multiple Choice) or a custom definition created - * for a particular activity such as the answer to the third question contains the word Koala and hence the need for - * the toolContentId - * - * @return SortedMap of ToolOutputDefinitions with the key being the name of each definition - */ + @Override public SortedMap getToolOutputDefinitions(Long toolContentId, int definitionType) throws ToolException { Forum forum = getForumByContentId(toolContentId); @@ -1070,18 +1050,17 @@ return getForumOutputFactory().getToolOutputDefinitions(forum, definitionType); } + @Override public String getToolContentTitle(Long toolContentId) { return getForumByContentId(toolContentId).getTitle(); } + @Override public boolean isContentEdited(Long toolContentId) { return getForumByContentId(toolContentId).isDefineLater(); } - /** - * @see org.lamsfoundation.lams.tool.ToolSessionManager#createToolSession(java.lang.Long, java.lang.String, - * java.lang.Long) - */ + @Override public void createToolSession(Long toolSessionId, String toolSessionName, Long toolContentId) throws ToolException { ForumToolSession session = new ForumToolSession(); session.setSessionId(toolSessionId); @@ -1114,6 +1093,7 @@ } } + @Override public String leaveToolSession(Long toolSessionId, Long learnerId) throws DataMissingException, ToolException { if (toolSessionId == null) { ForumService.log.error("Fail to leave tool Session based on null tool session id."); @@ -1136,46 +1116,40 @@ return learnerService.completeToolSession(toolSessionId, learnerId); } + @Override public ToolSessionExportOutputData exportToolSession(Long toolSessionId) throws DataMissingException, ToolException { return null; } + @Override public ToolSessionExportOutputData exportToolSession(List toolSessionIds) throws DataMissingException, ToolException { return null; } + @Override public void removeToolSession(Long toolSessionId) throws DataMissingException, ToolException { forumToolSessionDao.delete(toolSessionId); } - /** - * Get the tool output for the given tool output names. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.util.List, java.lang.Long, - * java.lang.Long) - */ + @Override public SortedMap getToolOutput(List names, Long toolSessionId, Long learnerId) { return forumOutputFactory.getToolOutput(names, this, toolSessionId, learnerId); } - /** - * Get the tool output for the given tool output name. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.lang.String, java.lang.Long, - * java.lang.Long) - */ + @Override public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return forumOutputFactory.getToolOutput(name, this, toolSessionId, learnerId); } + + @Override + public void forceCompleteUser(Long toolSessionId, User user) { + //no actions required + } - /* - * (non-Javadoc) - * - * @see org.lamsfoundation.lams.tool.sbmt.service.ISubmitFilesService#getDefaultContent(java.lang.Long) - */ + @Override public Forum getDefaultContent(Long contentID) { if (contentID == null) { String error = "Could not retrieve default content id for Forum tool"; Index: lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/service/GmapService.java =================================================================== diff -u -r40eb54374e84591563d8b6a679ac719dbc85c8f7 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/service/GmapService.java (.../GmapService.java) (revision 40eb54374e84591563d8b6a679ac719dbc85c8f7) +++ lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/service/GmapService.java (.../GmapService.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -69,6 +69,7 @@ import org.lamsfoundation.lams.tool.gmap.util.GmapConstants; import org.lamsfoundation.lams.tool.gmap.util.GmapException; import org.lamsfoundation.lams.tool.service.ILamsToolService; +import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; @@ -85,7 +86,7 @@ public class GmapService implements ToolSessionManager, ToolContentManager, IGmapService, ToolContentImport102Manager { - static Logger logger = Logger.getLogger(GmapService.class.getName()); + private static Logger logger = Logger.getLogger(GmapService.class.getName()); private IGmapDAO gmapDAO = null; @@ -113,6 +114,7 @@ } /* ************ Methods from ToolSessionManager ************* */ + @Override public void createToolSession(Long toolSessionId, String toolSessionName, Long toolContentId) throws ToolException { if (GmapService.logger.isDebugEnabled()) { GmapService.logger.debug("entering method createToolSession:" + " toolSessionId = " + toolSessionId @@ -140,45 +142,42 @@ } } + @Override public String leaveToolSession(Long toolSessionId, Long learnerId) throws DataMissingException, ToolException { return learnerService.completeToolSession(toolSessionId, learnerId); } + @Override public ToolSessionExportOutputData exportToolSession(Long toolSessionId) throws DataMissingException, ToolException { - // TODO Auto-generated method stub return null; } + @Override public ToolSessionExportOutputData exportToolSession(List toolSessionIds) throws DataMissingException, ToolException { - // TODO Auto-generated method stub return null; } + @Override public void removeToolSession(Long toolSessionId) throws DataMissingException, ToolException { gmapSessionDAO.deleteBySessionID(toolSessionId); // TODO check if cascade worked } - /** - * Get the tool output for the given tool output names. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.util.List, java.lang.Long, - * java.lang.Long) - */ + @Override public SortedMap getToolOutput(List names, Long toolSessionId, Long learnerId) { return new TreeMap(); } - /** - * Get the tool output for the given tool output name. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.lang.String, java.lang.Long, - * java.lang.Long) - */ + @Override public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return null; } + + @Override + public void forceCompleteUser(Long toolSessionId, User user) { + //no actions required + } /* ************ Methods from ToolContentManager ************************* */ Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java =================================================================== diff -u -r6d412d8329421a7647741f96d2cdc8afb4dfc207 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java (.../ImageGalleryServiceImpl.java) (revision 6d412d8329421a7647741f96d2cdc8afb4dfc207) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java (.../ImageGalleryServiceImpl.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -755,6 +755,7 @@ // ToolContentManager, ToolSessionManager methods // ******************************************************************************* + @Override public void exportToolContent(Long toolContentId, String rootPath) throws DataMissingException, ToolException { ImageGallery toolContentObj = imageGalleryDao.getByContentId(toolContentId); if (toolContentObj == null) { @@ -810,6 +811,7 @@ } } + @Override public void importToolContent(Long toolContentId, Integer newUserUid, String toolContentPath, String fromVersion, String toVersion) throws ToolException { @@ -862,14 +864,7 @@ } } - /** - * Get the definitions for possible output for an activity, based on the toolContentId. These may be definitions - * that are always available for the tool (e.g. number of marks for Multiple Choice) or a custom definition created - * for a particular activity such as the answer to the third question contains the word Koala and hence the need for - * the toolContentId - * - * @return SortedMap of ToolOutputDefinitions with the key being the name of each definition - */ + @Override public SortedMap getToolOutputDefinitions(Long toolContentId, int definitionType) throws ToolException { ImageGallery imageGallery = getImageGalleryByContentId(toolContentId); @@ -879,6 +874,7 @@ return getImageGalleryOutputFactory().getToolOutputDefinitions(imageGallery, definitionType); } + @Override public void copyToolContent(Long fromContentId, Long toContentId) throws ToolException { if (toContentId == null) { throw new ToolException("Failed to create the SharedImageGalleryFiles tool seession"); @@ -916,6 +912,7 @@ imageGalleryDao.saveObject(toContent); } + @Override public String getToolContentTitle(Long toolContentId) { return getImageGalleryByContentId(toolContentId).getTitle(); } @@ -929,10 +926,12 @@ imageGallery.setDefineLater(false); } + @Override public boolean isContentEdited(Long toolContentId) { return getImageGalleryByContentId(toolContentId).isDefineLater(); } + @Override public void removeToolContent(Long toolContentId, boolean removeSessionData) throws SessionDataExistsException, ToolException { ImageGallery imageGallery = imageGalleryDao.getByContentId(toolContentId); @@ -947,6 +946,7 @@ imageGalleryDao.delete(imageGallery); } + @Override @SuppressWarnings("unchecked") public void removeLearnerContent(Long toolContentId, Integer userId) throws ToolException { if (log.isDebugEnabled()) { @@ -1014,6 +1014,7 @@ } + @Override public void createToolSession(Long toolSessionId, String toolSessionName, Long toolContentId) throws ToolException { ImageGallerySession session = new ImageGallerySession(); session.setSessionId(toolSessionId); @@ -1023,6 +1024,7 @@ imageGallerySessionDao.saveObject(session); } + @Override public String leaveToolSession(Long toolSessionId, Long learnerId) throws DataMissingException, ToolException { if (toolSessionId == null) { ImageGalleryServiceImpl.log.error("Fail to leave tool Session based on null tool session id."); @@ -1046,38 +1048,36 @@ return learnerService.completeToolSession(toolSessionId, learnerId); } + @Override public ToolSessionExportOutputData exportToolSession(Long toolSessionId) throws DataMissingException, ToolException { return null; } + @Override public ToolSessionExportOutputData exportToolSession(List toolSessionIds) throws DataMissingException, ToolException { return null; } + @Override public void removeToolSession(Long toolSessionId) throws DataMissingException, ToolException { imageGallerySessionDao.deleteBySessionId(toolSessionId); } - /** - * Get the tool output for the given tool output names. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.util.List, java.lang.Long, - * java.lang.Long) - */ + @Override public SortedMap getToolOutput(List names, Long toolSessionId, Long learnerId) { return imageGalleryOutputFactory.getToolOutput(names, this, toolSessionId, learnerId); } - /** - * Get the tool output for the given tool output name. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.lang.String, java.lang.Long, - * java.lang.Long) - */ + @Override public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return imageGalleryOutputFactory.getToolOutput(name, this, toolSessionId, learnerId); } + + @Override + public void forceCompleteUser(Long toolSessionId, User user) { + //no actions required + } /* ===============Methods implemented from ToolContentImport102Manager =============== */ Index: lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/service/CommonCartridgeServiceImpl.java =================================================================== diff -u -r40eb54374e84591563d8b6a679ac719dbc85c8f7 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/service/CommonCartridgeServiceImpl.java (.../CommonCartridgeServiceImpl.java) (revision 40eb54374e84591563d8b6a679ac719dbc85c8f7) +++ lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/service/CommonCartridgeServiceImpl.java (.../CommonCartridgeServiceImpl.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -110,9 +110,7 @@ * */ public class CommonCartridgeServiceImpl implements ICommonCartridgeService, ToolContentManager, ToolSessionManager, - ToolContentImport102Manager - -{ + ToolContentImport102Manager { static Logger log = Logger.getLogger(CommonCartridgeServiceImpl.class.getName()); private CommonCartridgeDAO commonCartridgeDao; @@ -895,10 +893,12 @@ commonCartridge.setDefineLater(false); } + @Override public boolean isContentEdited(Long toolContentId) { return getCommonCartridgeByContentId(toolContentId).isDefineLater(); } + @Override public void removeToolContent(Long toolContentId, boolean removeSessionData) throws SessionDataExistsException, ToolException { CommonCartridge commonCartridge = commonCartridgeDao.getByContentId(toolContentId); @@ -913,6 +913,7 @@ commonCartridgeDao.delete(commonCartridge); } + @Override @SuppressWarnings("unchecked") public void removeLearnerContent(Long toolContentId, Integer userId) throws ToolException { if (log.isDebugEnabled()) { @@ -965,6 +966,7 @@ } } + @Override public void createToolSession(Long toolSessionId, String toolSessionName, Long toolContentId) throws ToolException { CommonCartridgeSession session = new CommonCartridgeSession(); session.setSessionId(toolSessionId); @@ -974,6 +976,7 @@ commonCartridgeSessionDao.saveObject(session); } + @Override public String leaveToolSession(Long toolSessionId, Long learnerId) throws DataMissingException, ToolException { if (toolSessionId == null) { CommonCartridgeServiceImpl.log.error("Fail to leave tool Session based on null tool session id."); @@ -997,38 +1000,36 @@ return learnerService.completeToolSession(toolSessionId, learnerId); } + @Override public ToolSessionExportOutputData exportToolSession(Long toolSessionId) throws DataMissingException, ToolException { return null; } + @Override public ToolSessionExportOutputData exportToolSession(List toolSessionIds) throws DataMissingException, ToolException { return null; } + @Override public void removeToolSession(Long toolSessionId) throws DataMissingException, ToolException { commonCartridgeSessionDao.deleteBySessionId(toolSessionId); } - /** - * Get the tool output for the given tool output names. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.util.List, java.lang.Long, - * java.lang.Long) - */ + @Override public SortedMap getToolOutput(List names, Long toolSessionId, Long learnerId) { return new TreeMap(); } - /** - * Get the tool output for the given tool output name. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.lang.String, java.lang.Long, - * java.lang.Long) - */ + @Override public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return null; } + + @Override + public void forceCompleteUser(Long toolSessionId, User user) { + //no actions required + } /* ===============Methods implemented from ToolContentImport102Manager =============== */ Index: lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/service/KalturaService.java =================================================================== diff -u -r0706f61ce2fc03377ad0e851bb364894c02d39c3 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/service/KalturaService.java (.../KalturaService.java) (revision 0706f61ce2fc03377ad0e851bb364894c02d39c3) +++ lams_tool_kaltura/src/java/org/lamsfoundation/lams/tool/kaltura/service/KalturaService.java (.../KalturaService.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -173,6 +173,11 @@ public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return getKalturaOutputFactory().getToolOutput(name, this, toolSessionId, learnerId); } + + @Override + public void forceCompleteUser(Long toolSessionId, User user) { + //no actions required + } /* ************ Methods from ToolContentManager ************************* */ Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java =================================================================== diff -u -rdfa9fb05f0b01def0777c75db7afa78c998ef5c5 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java (.../McServicePOJO.java) (revision dfa9fb05f0b01def0777c75db7afa78c998ef5c5) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java (.../McServicePOJO.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -1199,16 +1199,7 @@ return data; } - /** - * implemented as part of the Tool Contract copyToolContent(Long fromContentId, Long toContentId) throws - * ToolException - * - * @param fromContentId - * @param toContentId - * @return - * @throws ToolException - * - */ + @Override public void copyToolContent(Long fromContentId, Long toContentId) { if (fromContentId == null) { @@ -1239,15 +1230,7 @@ } } - /** - * implemented as part of the tool contract. Removes content and uploaded files from the content repository. - * removeToolContent(Long toolContentId, boolean removeSessionData) throws SessionDataExistsException, ToolException - * - * @param toContentId - * @param removeSessionData - * @return - * @throws ToolException - */ + @Override public void removeToolContent(Long toolContentId, boolean removeSessionData) throws SessionDataExistsException, ToolException { @@ -1291,6 +1274,7 @@ mcContentDAO.saveMcContent(mcContent); } + @Override @SuppressWarnings("unchecked") public void removeLearnerContent(Long toolContentId, Integer userId) throws ToolException { if (logger.isDebugEnabled()) { @@ -1319,15 +1303,7 @@ } } - /** - * Export the XML fragment for the tool's content, along with any files needed for the content. - * - * @throws DataMissingException - * if no tool content matches the toolSessionId - * @throws ToolException - * if any other error occurs - */ - + @Override public void exportToolContent(Long toolContentId, String rootPath) throws DataMissingException, ToolException { McContent toolContentObj = mcContentDAO.findMcContentById(toolContentId); if (toolContentObj == null) { @@ -1348,12 +1324,7 @@ } } - /** - * Import the XML fragment for the tool's content, along with any files needed for the content. - * - * @throws ToolException - * if any other error occurs - */ + @Override public void importToolContent(Long toolContentId, Integer newUserUid, String toolContentPath, String fromVersion, String toVersion) throws ToolException { try { @@ -1377,14 +1348,7 @@ } } - /** - * Get the definitions for possible output for an activity, based on the toolContentId. These may be definitions - * that are always available for the tool (e.g. number of marks for Multiple Choice) or a custom definition created - * for a particular activity such as the answer to the third question contains the word Koala and hence the need for - * the toolContentId - * - * @return SortedMap of ToolOutputDefinitions with the key being the name of each definition - */ + @Override public SortedMap getToolOutputDefinitions(Long toolContentId, int definitionType) throws ToolException { McContent content = getMcContent(toolContentId); @@ -1395,10 +1359,12 @@ return getMcOutputFactory().getToolOutputDefinitions(content, definitionType); } + @Override public String getToolContentTitle(Long toolContentId) { return mcContentDAO.findMcContentById(toolContentId).getTitle(); } + @Override public boolean isContentEdited(Long toolContentId) { return mcContentDAO.findMcContentById(toolContentId).isDefineLater(); } @@ -1415,20 +1381,7 @@ return mcSession != null; } - /** - * Implemented as part of the tool contract. Gets called only in the Learner mode. All the learners in the same - * group have the same toolSessionId. - * - * @param toolSessionId - * the generated tool session id. - * @param toolSessionName - * the tool session name. - * @param toolContentId - * the tool content id specified. - * @throws ToolException - * if an error occurs e.g. defaultContent is missing. - * - */ + @Override public void createToolSession(Long toolSessionId, String toolSessionName, Long toolContentId) throws ToolException { if (toolSessionId == null) { @@ -1453,15 +1406,7 @@ } } - /** - * Implemented as part of the tool contract. removeToolSession(Long toolSessionId) throws DataMissingException, - * ToolException - * - * @param toolSessionId - * @param toolContentId - * return - * @throws ToolException - */ + @Override public void removeToolSession(Long toolSessionId) throws DataMissingException, ToolException { if (toolSessionId == null) { McServicePOJO.logger.error("toolSessionId is null"); @@ -1490,16 +1435,7 @@ } } - /** - * Implemtented as part of the tool contract. leaveToolSession(Long toolSessionId,Long learnerId) throws - * DataMissingException, ToolException - * - * @param toolSessionId - * @param learnerId - * return String - * @throws ToolException - * - */ + @Override public String leaveToolSession(Long toolSessionId, Long learnerId) throws DataMissingException, ToolException { if (learnerService == null) { @@ -1535,51 +1471,64 @@ return nextUrl; } - /** - * exportToolSession(Long toolSessionId) throws DataMissingException, ToolException - * - * @param toolSessionId - * return ToolSessionExportOutputData - * @throws ToolException - */ + @Override public ToolSessionExportOutputData exportToolSession(Long toolSessionId) throws DataMissingException, ToolException { throw new ToolException("not yet implemented"); } - /** - * exportToolSession(Long toolSessionId) throws DataMissingException, ToolException - * - * @param toolSessionIds - * return ToolSessionExportOutputData - * @throws ToolException - */ + @Override public ToolSessionExportOutputData exportToolSession(List toolSessionIds) throws DataMissingException, ToolException { throw new ToolException("not yet implemented"); } - /** - * Get the tool output for the given tool output names. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.util.List, java.lang.Long, - * java.lang.Long) - */ + @Override public SortedMap getToolOutput(List names, Long toolSessionId, Long learnerId) { - return mcOutputFactory.getToolOutput(names, this, toolSessionId, learnerId); } - /** - * Get the tool output for the given tool output name. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.lang.String, java.lang.Long, - * java.lang.Long) - */ + @Override public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return mcOutputFactory.getToolOutput(name, this, toolSessionId, learnerId); } + + @Override + public void forceCompleteUser(Long toolSessionId, User user) { + Long userId = user.getUserId().longValue(); + McSession session = getMcSessionById(toolSessionId); + if ((session == null) || (session.getMcContent() == null)) { + return; + } + McContent content = session.getMcContent(); + + // copy answers only in case leader aware feature is ON + if (content.isUseSelectLeaderToolOuput()) { + + McQueUsr mcUser = getMcUserBySession(userId, session.getUid()); + // create user if he hasn't accessed this activity yet + if (mcUser == null) { + + String userName = user.getLogin(); + String fullName = user.getFirstName() + " " + user.getLastName(); + mcUser = new McQueUsr(userId, userName, fullName, session, new TreeSet()); + mcUserDAO.saveMcUser(mcUser); + } + + McQueUsr groupLeader = session.getGroupLeader(); + + // check if leader has submitted answers + if (groupLeader != null && groupLeader.isResponseFinalised()) { + + // we need to make sure specified user has the same scratches as a leader + copyAnswersFromLeader(mcUser, groupLeader); + } + + } + + } + public IToolVO getToolBySignature(String toolSignature) throws McApplicationException { IToolVO tool = toolService.getToolBySignature(toolSignature); return tool; Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java =================================================================== diff -u -r85343cf7557877441fe903443a51ae4be434e0ec -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java (.../QaServicePOJO.java) (revision 85343cf7557877441fe903443a51ae4be434e0ec) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java (.../QaServicePOJO.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -815,7 +815,7 @@ } } - // convert To McMonitoredUserDTOMap + // convert To QaMonitoredUserDTOMap Map sessionUsersAttempts = new TreeMap( new QaStringComparator()); Long mapIndex = new Long(1); @@ -1080,16 +1080,47 @@ return getQaOutputFactory().getToolOutput(names, this, toolSessionId, learnerId); } - /** - * Get the tool output for the given tool output name. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.lang.String, java.lang.Long, - * java.lang.Long) - */ + @Override public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return getQaOutputFactory().getToolOutput(name, this, toolSessionId, learnerId); } + + @Override + public void forceCompleteUser(Long toolSessionId, User user) { + Long userId = user.getUserId().longValue(); + QaSession session = getSessionById(toolSessionId); + if ((session == null) || (session.getQaContent() == null)) { + return; + } + QaContent content = session.getQaContent(); + + // copy answers only in case leader aware feature is ON + if (content.isUseSelectLeaderToolOuput()) { + + QaQueUsr qaUser = getUserByIdAndSession(userId, toolSessionId); + // create user if he hasn't accessed this activity yet + if (qaUser == null) { + + String userName = user.getLogin(); + String fullName = user.getFirstName() + " " + user.getLastName(); + qaUser = new QaQueUsr(userId, userName, fullName, session, new TreeSet()); + qaQueUsrDAO.createUsr(qaUser); + } + + QaQueUsr groupLeader = session.getGroupLeader(); + + // check if leader has submitted answers + if (groupLeader != null && groupLeader.isResponseFinalized()) { + + // we need to make sure specified user has the same scratches as a leader + copyAnswersFromLeader(qaUser, groupLeader); + } + + } + + } + public IToolVO getToolBySignature(String toolSignature) { IToolVO tool = toolService.getToolBySignature(toolSignature); return tool; Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java =================================================================== diff -u -r1e7597ac1a3c3206dd501bfd994a7ca737281ed2 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java (.../ResourceServiceImpl.java) (revision 1e7597ac1a3c3206dd501bfd994a7ca737281ed2) +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java (.../ResourceServiceImpl.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -814,6 +814,7 @@ return messageService.getMessage(key, args); } + @Override public boolean isGroupedActivity(long toolContentID) { return toolService.isGroupedActivity(toolContentID); } @@ -822,6 +823,7 @@ // ToolContentManager, ToolSessionManager methods // ******************************************************************************* + @Override public void exportToolContent(Long toolContentId, String rootPath) throws DataMissingException, ToolException { Resource toolContentObj = resourceDao.getByContentId(toolContentId); if (toolContentObj == null) { @@ -846,6 +848,7 @@ } } + @Override public void importToolContent(Long toolContentId, Integer newUserUid, String toolContentPath, String fromVersion, String toVersion) throws ToolException { @@ -890,15 +893,7 @@ } } - /** - * Get the definitions for possible output for an activity, based on the toolContentId. These may be definitions - * that are always available for the tool (e.g. number of marks for Multiple Choice) or a custom definition created - * for a particular activity such as the answer to the third question contains the word Koala and hence the need for - * the toolContentId - * - * @return SortedMap of ToolOutputDefinitions with the key being the name of each definition - * @throws ResourceApplicationException - */ + @Override public SortedMap getToolOutputDefinitions(Long toolContentId, int definitionType) throws ToolException { Resource content = getResourceByContentId(toolContentId); @@ -912,6 +907,7 @@ return getResourceOutputFactory().getToolOutputDefinitions(content, definitionType); } + @Override public void copyToolContent(Long fromContentId, Long toContentId) throws ToolException { if (toContentId == null) { throw new ToolException("Failed to create the SharedResourceFiles tool seession"); @@ -943,6 +939,7 @@ } } + @Override public String getToolContentTitle(Long toolContentId) { return getResourceByContentId(toolContentId).getTitle(); } @@ -956,10 +953,12 @@ resource.setDefineLater(false); } + @Override public boolean isContentEdited(Long toolContentId) { return getResourceByContentId(toolContentId).isDefineLater(); } + @Override public void removeToolContent(Long toolContentId, boolean removeSessionData) throws SessionDataExistsException, ToolException { Resource resource = resourceDao.getByContentId(toolContentId); @@ -974,6 +973,7 @@ resourceDao.delete(resource); } + @Override @SuppressWarnings("unchecked") public void removeLearnerContent(Long toolContentId, Integer userId) throws ToolException { if (log.isDebugEnabled()) { @@ -1023,6 +1023,7 @@ } } + @Override public void createToolSession(Long toolSessionId, String toolSessionName, Long toolContentId) throws ToolException { ResourceSession session = new ResourceSession(); session.setSessionId(toolSessionId); @@ -1032,6 +1033,7 @@ resourceSessionDao.saveObject(session); } + @Override public String leaveToolSession(Long toolSessionId, Long learnerId) throws DataMissingException, ToolException { if (toolSessionId == null) { ResourceServiceImpl.log.error("Fail to leave tool Session based on null tool session id."); @@ -1055,44 +1057,40 @@ return learnerService.completeToolSession(toolSessionId, learnerId); } + @Override public ToolSessionExportOutputData exportToolSession(Long toolSessionId) throws DataMissingException, ToolException { return null; } + @Override public ToolSessionExportOutputData exportToolSession(List toolSessionIds) throws DataMissingException, ToolException { return null; } + @Override public void removeToolSession(Long toolSessionId) throws DataMissingException, ToolException { resourceSessionDao.deleteBySessionId(toolSessionId); } - /** - * Get the tool output for the given tool output names. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.util.List, java.lang.Long, - * java.lang.Long) - */ + @Override public SortedMap getToolOutput(List names, Long toolSessionId, Long learnerId) { return getResourceOutputFactory().getToolOutput(names, this, toolSessionId, learnerId); } - /** - * Get the tool output for the given tool output name. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.lang.String, java.lang.Long, - * java.lang.Long) - */ + @Override public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return getResourceOutputFactory().getToolOutput(name, this, toolSessionId, learnerId); } + + @Override + public void forceCompleteUser(Long toolSessionId, User user) { + //no actions required + } /* ===============Methods implemented from ToolContentImport102Manager =============== */ - /** - * Import the data for a 1.0.2 Noticeboard or HTMLNoticeboard - */ + @Override public void import102ToolContent(Long toolContentId, UserDTO user, Hashtable importValues) { Date now = new Date(); Resource toolContentObj = new Resource(); Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/service/LeaderselectionService.java =================================================================== diff -u -r1e7597ac1a3c3206dd501bfd994a7ca737281ed2 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/service/LeaderselectionService.java (.../LeaderselectionService.java) (revision 1e7597ac1a3c3206dd501bfd994a7ca737281ed2) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/service/LeaderselectionService.java (.../LeaderselectionService.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -68,8 +68,8 @@ import org.lamsfoundation.lams.tool.leaderselection.util.LeaderselectionException; import org.lamsfoundation.lams.tool.leaderselection.util.LeaderselectionToolContentHandler; import org.lamsfoundation.lams.tool.service.ILamsToolService; +import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; -import org.lamsfoundation.lams.util.JsonUtil; /** * An implementation of the ILeaderselectionService interface. @@ -154,6 +154,11 @@ public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return getLeaderselectionOutputFactory().getToolOutput(name, this, toolSessionId, learnerId); } + + @Override + public void forceCompleteUser(Long toolSessionId, User user) { + //no actions required + } /* ************ Methods from ToolContentManager ************************* */ @Override Index: lams_tool_mindmap/src/java/org/lamsfoundation/lams/tool/mindmap/service/MindmapService.java =================================================================== diff -u -rbab196560d074209c0fedcb1342387ded6e966ad -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_tool_mindmap/src/java/org/lamsfoundation/lams/tool/mindmap/service/MindmapService.java (.../MindmapService.java) (revision bab196560d074209c0fedcb1342387ded6e966ad) +++ lams_tool_mindmap/src/java/org/lamsfoundation/lams/tool/mindmap/service/MindmapService.java (.../MindmapService.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -69,6 +69,7 @@ import org.lamsfoundation.lams.tool.mindmap.util.xmlmodel.NodeConceptModel; import org.lamsfoundation.lams.tool.mindmap.util.xmlmodel.NodeModel; import org.lamsfoundation.lams.tool.service.ILamsToolService; +import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.JsonUtil; import org.lamsfoundation.lams.util.MessageService; @@ -84,7 +85,7 @@ public class MindmapService implements ToolSessionManager, ToolContentManager, IMindmapService, ToolContentImport102Manager, ToolRestManager { - static Logger logger = Logger.getLogger(MindmapService.class.getName()); + private static Logger logger = Logger.getLogger(MindmapService.class.getName()); private IMindmapDAO mindmapDAO = null; private IMindmapSessionDAO mindmapSessionDAO = null; @@ -106,6 +107,7 @@ } /* Methods from ToolSessionManager */ + @Override public void createToolSession(Long toolSessionId, String toolSessionName, Long toolContentId) throws ToolException { if (MindmapService.logger.isDebugEnabled()) { MindmapService.logger.debug("entering method createToolSession:" + " toolSessionId = " + toolSessionId @@ -122,45 +124,42 @@ mindmapSessionDAO.saveOrUpdate(session); } + @Override public String leaveToolSession(Long toolSessionId, Long learnerId) throws DataMissingException, ToolException { return learnerService.completeToolSession(toolSessionId, learnerId); } + @Override public ToolSessionExportOutputData exportToolSession(Long toolSessionId) throws DataMissingException, ToolException { - // TODO Auto-generated method stub return null; } + @Override public ToolSessionExportOutputData exportToolSession(List toolSessionIds) throws DataMissingException, ToolException { - // TODO Auto-generated method stub return null; } + @Override public void removeToolSession(Long toolSessionId) throws DataMissingException, ToolException { mindmapSessionDAO.deleteBySessionID(toolSessionId); // TODO check if cascade worked } - /** - * Get the tool output for the given tool output names. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.util.List, java.lang.Long, - * java.lang.Long) - */ + @Override public SortedMap getToolOutput(List names, Long toolSessionId, Long learnerId) { return getMindmapOutputFactory().getToolOutput(names, this, toolSessionId, learnerId); } - /** - * Get the tool output for the given tool output name. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.lang.String, java.lang.Long, - * java.lang.Long) - */ + @Override public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return getMindmapOutputFactory().getToolOutput(name, this, toolSessionId, learnerId); } + + @Override + public void forceCompleteUser(Long toolSessionId, User user) { + //no actions required + } /** * Get number of nodes created by particular user Index: lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/service/NoticeboardServicePOJO.java =================================================================== diff -u -racf48dfa2651bb60b7ea02898d804d79e444aa73 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/service/NoticeboardServicePOJO.java (.../NoticeboardServicePOJO.java) (revision acf48dfa2651bb60b7ea02898d804d79e444aa73) +++ lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/service/NoticeboardServicePOJO.java (.../NoticeboardServicePOJO.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -64,6 +64,7 @@ import org.lamsfoundation.lams.tool.noticeboard.dao.INoticeboardSessionDAO; import org.lamsfoundation.lams.tool.noticeboard.dao.INoticeboardUserDAO; import org.lamsfoundation.lams.tool.service.ILamsToolService; +import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.JsonUtil; import org.lamsfoundation.lams.util.WebUtil; @@ -401,15 +402,6 @@ return nbSession; } - /** - * Export the XML fragment for the tool's content, along with any files needed for the content. - * - * @throws DataMissingException - * if no tool content matches the toolSessionId - * @throws ToolException - * if any other error occurs - */ - @Override public void exportToolContent(Long toolContentId, String rootPath) throws DataMissingException, ToolException { NoticeboardContent toolContentObj = nbContentDAO.findNbContentById(toolContentId); @@ -435,12 +427,6 @@ } } - /** - * Import the XML fragment for the tool's content, along with any files needed for the content. - * - * @throws ToolException - * if any other error occurs - */ @Override public void importToolContent(Long toolContentId, Integer newUserUid, String toolContentPath, String fromVersion, String toVersion) throws ToolException { @@ -464,14 +450,6 @@ } } - /** - * Get the definitions for possible output for an activity, based on the toolContentId. These may be definitions - * that are always available for the tool (e.g. number of marks for Multiple Choice) or a custom definition created - * for a particular activity such as the answer to the third question contains the word Koala and hence the need for - * the toolContentId - * - * @return SortedMap of ToolOutputDefinitions with the key being the name of each definition - */ @Override public SortedMap getToolOutputDefinitions(Long toolContentId, int definitionType) throws ToolException { @@ -535,28 +513,21 @@ removeSession(session); } - /** - * Get the tool output for the given tool output names. - */ @Override public SortedMap getToolOutput(List names, Long toolSessionId, Long learnerId) { return new TreeMap(); } - /** - * Get the tool output for the given tool output name. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.lang.String, java.lang.Long, - * java.lang.Long) - */ @Override public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return null; } + + @Override + public void forceCompleteUser(Long toolSessionId, User user) { + //no actions required + } - /** - * Import the data for a 1.0.2 Noticeboard or HTMLNoticeboard - */ @Override public void import102ToolContent(Long toolContentId, UserDTO user, Hashtable importValues) { Date now = new Date(); @@ -574,7 +545,6 @@ nbContentDAO.saveNbContent(toolContentObj); } - /** Set the description, throws away the title value as this is not supported in 2.0 */ @Override public void setReflectiveData(Long toolContentId, String title, String description) throws ToolException, DataMissingException { Index: lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/service/NotebookService.java =================================================================== diff -u -rdfa9fb05f0b01def0777c75db7afa78c998ef5c5 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/service/NotebookService.java (.../NotebookService.java) (revision dfa9fb05f0b01def0777c75db7afa78c998ef5c5) +++ lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/service/NotebookService.java (.../NotebookService.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -64,6 +64,7 @@ import org.lamsfoundation.lams.tool.notebook.util.NotebookConstants; import org.lamsfoundation.lams.tool.notebook.util.NotebookException; import org.lamsfoundation.lams.tool.service.ILamsToolService; +import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.JsonUtil; import org.lamsfoundation.lams.util.MessageService; @@ -79,7 +80,7 @@ public class NotebookService implements ToolSessionManager, ToolContentManager, INotebookService, ToolContentImport102Manager, ToolRestManager { - static Logger logger = Logger.getLogger(NotebookService.class.getName()); + private static Logger logger = Logger.getLogger(NotebookService.class.getName()); private INotebookDAO notebookDAO = null; @@ -112,6 +113,7 @@ } /* ************ Methods from ToolSessionManager ************* */ + @Override public void createToolSession(Long toolSessionId, String toolSessionName, Long toolContentId) throws ToolException { if (NotebookService.logger.isDebugEnabled()) { NotebookService.logger.debug("entering method createToolSession:" + " toolSessionId = " + toolSessionId @@ -128,47 +130,45 @@ notebookSessionDAO.saveOrUpdate(session); } + @Override public String leaveToolSession(Long toolSessionId, Long learnerId) throws DataMissingException, ToolException { return learnerService.completeToolSession(toolSessionId, learnerId); } + @Override public ToolSessionExportOutputData exportToolSession(Long toolSessionId) throws DataMissingException, ToolException { - // TODO Auto-generated method stub return null; } + @Override public ToolSessionExportOutputData exportToolSession(List toolSessionIds) throws DataMissingException, ToolException { return null; } + @Override public void removeToolSession(Long toolSessionId) throws DataMissingException, ToolException { notebookSessionDAO.deleteBySessionID(toolSessionId); // TODO check if cascade worked } - /** - * Get the tool output for the given tool output names. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.util.List, java.lang.Long, - * java.lang.Long) - */ + @Override public SortedMap getToolOutput(List names, Long toolSessionId, Long learnerId) { return getNotebookOutputFactory().getToolOutput(names, this, toolSessionId, learnerId); } - /** - * Get the tool output for the given tool output name. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.lang.String, java.lang.Long, - * java.lang.Long) - */ + @Override public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return getNotebookOutputFactory().getToolOutput(name, this, toolSessionId, learnerId); } + + @Override + public void forceCompleteUser(Long toolSessionId, User user) { + //no actions required + } /* ************ Methods from ToolContentManager ************************* */ - + @Override public void copyToolContent(Long fromContentId, Long toContentId) throws ToolException { if (NotebookService.logger.isDebugEnabled()) { Index: lams_tool_pixlr/src/java/org/lamsfoundation/lams/tool/pixlr/service/PixlrService.java =================================================================== diff -u -r40eb54374e84591563d8b6a679ac719dbc85c8f7 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_tool_pixlr/src/java/org/lamsfoundation/lams/tool/pixlr/service/PixlrService.java (.../PixlrService.java) (revision 40eb54374e84591563d8b6a679ac719dbc85c8f7) +++ lams_tool_pixlr/src/java/org/lamsfoundation/lams/tool/pixlr/service/PixlrService.java (.../PixlrService.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -76,6 +76,7 @@ import org.lamsfoundation.lams.tool.pixlr.util.PixlrException; import org.lamsfoundation.lams.tool.pixlr.util.PixlrToolContentHandler; import org.lamsfoundation.lams.tool.service.ILamsToolService; +import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.Configuration; import org.lamsfoundation.lams.util.ConfigurationKeys; @@ -91,7 +92,7 @@ public class PixlrService implements ToolSessionManager, ToolContentManager, IPixlrService, ToolContentImport102Manager { - static Logger logger = Logger.getLogger(PixlrService.class.getName()); + private static Logger logger = Logger.getLogger(PixlrService.class.getName()); public static final String EXPORT_IMAGE_FILE_NAME = "authorImage"; @@ -119,10 +120,11 @@ public PixlrService() { super(); - // TODO Auto-generated constructor stub } /* ************ Methods from ToolSessionManager ************* */ + + @Override public void createToolSession(Long toolSessionId, String toolSessionName, Long toolContentId) throws ToolException { if (PixlrService.logger.isDebugEnabled()) { PixlrService.logger.debug("entering method createToolSession:" + " toolSessionId = " + toolSessionId @@ -139,49 +141,47 @@ pixlrSessionDAO.saveOrUpdate(session); } + @Override public String leaveToolSession(Long toolSessionId, Long learnerId) throws DataMissingException, ToolException { return learnerService.completeToolSession(toolSessionId, learnerId); } + @Override public ToolSessionExportOutputData exportToolSession(Long toolSessionId) throws DataMissingException, ToolException { - // TODO Auto-generated method stub return null; } + @Override @SuppressWarnings("unchecked") public ToolSessionExportOutputData exportToolSession(List ToolSessionIds) throws DataMissingException, ToolException { - // TODO Auto-generated method stub return null; } + @Override public void removeToolSession(Long toolSessionId) throws DataMissingException, ToolException { pixlrSessionDAO.deleteBySessionID(toolSessionId); // TODO check if cascade worked } - /** - * Get the tool output for the given tool output names. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.util.List, java.lang.Long, - * java.lang.Long) - */ + @Override public SortedMap getToolOutput(List names, Long toolSessionId, Long learnerId) { return getPixlrOutputFactory().getToolOutput(names, this, toolSessionId, learnerId); } - /** - * Get the tool output for the given tool output name. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.lang.String, java.lang.Long, - * java.lang.Long) - */ + @Override public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return getPixlrOutputFactory().getToolOutput(name, this, toolSessionId, learnerId); } + + @Override + public void forceCompleteUser(Long toolSessionId, User user) { + //no actions required + } /* ************ Methods from ToolContentManager ************************* */ - + + @Override public void copyToolContent(Long fromContentId, Long toContentId) throws ToolException { if (PixlrService.logger.isDebugEnabled()) { Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java =================================================================== diff -u -rdfa9fb05f0b01def0777c75db7afa78c998ef5c5 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java (.../SubmitFilesService.java) (revision dfa9fb05f0b01def0777c75db7afa78c998ef5c5) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java (.../SubmitFilesService.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -347,21 +347,13 @@ return getSubmitFilesContent(toolContentId).isDefineLater(); } - /* - * (non-Javadoc) - * - * @see org.lamsfoundation.lams.tool.sbmt.service.ISubmitFilesService#updateSubmitFilesContent(org.lamsfoundation.lams.tool.sbmt.SubmitFilesContent) - */ + @Override public void saveOrUpdateContent(SubmitFilesContent submitFilesContent) { submitFilesContent.setUpdated(new Date()); submitFilesContentDAO.saveOrUpdate(submitFilesContent); } - /* - * (non-Javadoc) - * - * @see org.lamsfoundation.lams.tool.sbmt.service.ISubmitFilesService#getSubmitFilesContent(java.lang.Long) - */ + @Override public SubmitFilesContent getSubmitFilesContent(Long contentID) { SubmitFilesContent content = null; try { @@ -376,11 +368,7 @@ return content; } - /* - * (non-Javadoc) - * - * @see org.lamsfoundation.lams.tool.sbmt.service.ISubmitFilesService#getSubmitFilesReport(java.lang.Long) - */ + @Override public SubmitFilesReport getSubmitFilesReport(Long reportID) { return submitFilesReportDAO.getReportByID(reportID); } @@ -410,16 +398,7 @@ } } - /** - * This method deletes the content with the given uuid and versionID from the content - * repository - * - * @param uuid - * The uuid of the node to be deleted - * @param versionID - * The version_id of the node to be deleted. - * @throws SubmitFilesException - */ + @Override public void deleteFromRepository(Long uuid, Long versionID) throws SubmitFilesException { ITicket ticket = getRepositoryLoginTicket(); try { @@ -430,12 +409,7 @@ } } - /* - * (non-Javadoc) - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#createToolSession(java.lang.Long,java.lang.String, - * java.lang.Long) - */ + @Override public void createToolSession(Long toolSessionId, String toolSessionName, Long toolContentId) { // pre-condition validation if (toolSessionId == null || toolContentId == null) { @@ -466,12 +440,7 @@ } - /* - * (non-Javadoc) - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#leaveToolSession(java.lang.Long, - * org.lamsfoundation.lams.usermanagement.User) - */ + @Override public String leaveToolSession(Long toolSessionId, Long learnerId) throws DataMissingException, ToolException { if (toolSessionId == null) { SubmitFilesService.log.error("Fail to leave tool Session based on null tool session id."); @@ -495,31 +464,17 @@ return learnerService.completeToolSession(toolSessionId, learnerId); } - /** - * (non-Javadoc) - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#exportToolSession(java.lang.Long) - */ + @Override public ToolSessionExportOutputData exportToolSession(Long toolSessionId) { - // TODO Auto-generated method stub return null; } - /** - * (non-Javadoc) - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#exportToolSession(java.util.List) - */ + @Override public ToolSessionExportOutputData exportToolSession(List toolSessionIds) { - // TODO Auto-generated method stub return null; } - /** - * (non-Javadoc) - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#removeToolSession(java.lang.Long) - */ + @Override public void removeToolSession(Long toolSessionId) throws DataMissingException, ToolException { if (toolSessionId == null) { SubmitFilesService.log.error("Fail to remove tool Session based on null tool session id."); @@ -535,7 +490,6 @@ } } - /** Remove a tool session. The session parameter must not be null. */ private void removeToolSession(SubmitFilesSession session) { Set filesUploaded = session.getSubmissionDetails(); if (filesUploaded != null) { @@ -549,31 +503,22 @@ submitFilesSessionDAO.delete(session); } - /** - * Get the tool output for the given tool output names. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.util .List, java.lang.Long, - * java.lang.Long) - */ + @Override public SortedMap getToolOutput(List names, Long toolSessionId, Long learnerId) { return getSubmitFilesOutputFactory().getToolOutput(names, this, toolSessionId, learnerId); } - /** - * Get the tool output for the given tool output name. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.lang.String, java.lang.Long, - * java.lang.Long) - */ + @Override public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return getSubmitFilesOutputFactory().getToolOutput(name, this, toolSessionId, learnerId); } + + @Override + public void forceCompleteUser(Long toolSessionId, User user) { + //no actions required + } - /** - * (non-Javadoc) - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager# uploadFileToSession(Long,FormFile,String,Long ) - */ + @Override public void uploadFileToSession(Long sessionID, FormFile uploadFile, String fileDescription, Integer userID) throws SubmitFilesException { Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java =================================================================== diff -u -rdfa9fb05f0b01def0777c75db7afa78c998ef5c5 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java (.../ScratchieServiceImpl.java) (revision dfa9fb05f0b01def0777c75db7afa78c998ef5c5) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java (.../ScratchieServiceImpl.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -30,7 +30,6 @@ import java.util.Collection; import java.util.Date; import java.util.HashMap; -import java.util.HashSet; import java.util.Hashtable; import java.util.Iterator; import java.util.LinkedHashMap; @@ -40,8 +39,8 @@ import java.util.Map; import java.util.Set; import java.util.SortedMap; -import java.util.SortedSet; import java.util.TreeSet; +import java.util.concurrent.Callable; import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang.StringUtils; @@ -92,6 +91,7 @@ import org.lamsfoundation.lams.tool.scratchie.util.ScratchieAnswerComparator; import org.lamsfoundation.lams.tool.scratchie.util.ScratchieItemComparator; import org.lamsfoundation.lams.tool.scratchie.util.ScratchieToolContentHandler; +import org.lamsfoundation.lams.tool.scratchie.web.action.LearningAction; import org.lamsfoundation.lams.tool.service.ILamsToolService; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; @@ -1851,28 +1851,39 @@ scratchieSessionDao.deleteBySessionId(toolSessionId); } - /** - * Get the tool output for the given tool output names. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.util.List, java.lang.Long, - * java.lang.Long) - */ @Override public SortedMap getToolOutput(List names, Long toolSessionId, Long learnerId) { return getScratchieOutputFactory().getToolOutput(names, this, toolSessionId, learnerId); } - /** - * Get the tool output for the given tool output name. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.lang.String, java.lang.Long, - * java.lang.Long) - */ @Override public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return getScratchieOutputFactory().getToolOutput(name, this, toolSessionId, learnerId); } + + @Override + public void forceCompleteUser(Long toolSessionId, User user) { + Long userId = user.getUserId().longValue(); + ScratchieSession session = getScratchieSessionBySessionId(toolSessionId); + if ((session == null) || (session.getScratchie() == null)) { + return; + } + Scratchie scratchie = session.getScratchie(); + + // as long as leader aware feature is always ON - copy answers from leader to non-leader user + + ScratchieUser scratchieUser = scratchieUserDao.getUserByUserIDAndSessionID(userId, toolSessionId); + // create user if he hasn't accessed this activity yet + if (scratchieUser == null) { + scratchieUser = new ScratchieUser(user.getUserDTO(), session); + createUser(scratchieUser); + } + + // as long as there is no individual results in Scratchie tool (but rather one for entire group) there is no + // need to copyAnswersFromLeader() + } + /* ===============Methods implemented from ToolContentImport102Manager =============== */ /** Index: lams_tool_scribe/src/java/org/lamsfoundation/lams/tool/scribe/service/ScribeService.java =================================================================== diff -u -ref5e87e691634eff411341802648d7deb8b4ad73 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_tool_scribe/src/java/org/lamsfoundation/lams/tool/scribe/service/ScribeService.java (.../ScribeService.java) (revision ef5e87e691634eff411341802648d7deb8b4ad73) +++ lams_tool_scribe/src/java/org/lamsfoundation/lams/tool/scribe/service/ScribeService.java (.../ScribeService.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -68,6 +68,7 @@ import org.lamsfoundation.lams.tool.scribe.util.ScribeConstants; import org.lamsfoundation.lams.tool.scribe.util.ScribeException; import org.lamsfoundation.lams.tool.service.ILamsToolService; +import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.JsonUtil; import org.lamsfoundation.lams.util.WebUtil; @@ -83,7 +84,7 @@ public class ScribeService implements ToolSessionManager, ToolContentManager, ToolContentImport102Manager, ToolRestManager, IScribeService { - static Logger logger = Logger.getLogger(ScribeService.class.getName()); + private static Logger logger = Logger.getLogger(ScribeService.class.getName()); private IScribeDAO scribeDAO = null; @@ -105,10 +106,11 @@ public ScribeService() { super(); - // TODO Auto-generated constructor stub } /* ************ Methods from ToolSessionManager ************* */ + + @Override public void createToolSession(Long toolSessionId, String toolSessionName, Long toolContentId) throws ToolException { if (ScribeService.logger.isDebugEnabled()) { ScribeService.logger.debug("entering method createToolSession:" + " toolSessionId = " + toolSessionId @@ -126,48 +128,46 @@ scribeSessionDAO.saveOrUpdate(session); } + @Override public String leaveToolSession(Long toolSessionId, Long learnerId) throws DataMissingException, ToolException { return learnerService.completeToolSession(toolSessionId, learnerId); } + @Override public ToolSessionExportOutputData exportToolSession(Long toolSessionId) throws DataMissingException, ToolException { - // TODO Auto-generated method stub return null; } + @Override public ToolSessionExportOutputData exportToolSession(List toolSessionIds) throws DataMissingException, ToolException { - // TODO Auto-generated method stub return null; } + @Override public void removeToolSession(Long toolSessionId) throws DataMissingException, ToolException { scribeSessionDAO.deleteBySessionID(toolSessionId); // TODO check if cascade worked } - /** - * Get the tool output for the given tool output names. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.util.List, java.lang.Long, - * java.lang.Long) - */ + @Override public SortedMap getToolOutput(List names, Long toolSessionId, Long learnerId) { return new TreeMap(); } - /** - * Get the tool output for the given tool output name. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.lang.String, java.lang.Long, - * java.lang.Long) - */ + @Override public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return null; } + + @Override + public void forceCompleteUser(Long toolSessionId, User user) { + //no actions required + } /* ************ Methods from ToolContentManager ************************* */ + @Override public void copyToolContent(Long fromContentId, Long toContentId) throws ToolException { if (ScribeService.logger.isDebugEnabled()) { @@ -202,11 +202,13 @@ scribeDAO.saveOrUpdate(scribe); } + @Override public void removeToolContent(Long toolContentId, boolean removeSessionData) throws SessionDataExistsException, ToolException { // TODO Auto-generated method stub } + @Override @SuppressWarnings("unchecked") public void removeLearnerContent(Long toolContentId, Integer userId) throws ToolException { if (logger.isDebugEnabled()) { @@ -252,15 +254,7 @@ } } - /** - * Export the XML fragment for the tool's content, along with any files needed for the content. - * - * @throws DataMissingException - * if no tool content matches the toolSessionId - * @throws ToolException - * if any other error occurs - */ - + @Override public void exportToolContent(Long toolContentId, String rootPath) throws DataMissingException, ToolException { Scribe scribe = scribeDAO.getByContentId(toolContentId); if (scribe == null) { @@ -287,12 +281,7 @@ } } - /** - * Import the XML fragment for the tool's content, along with any files needed for the content. - * - * @throws ToolException - * if any other error occurs - */ + @Override public void importToolContent(Long toolContentId, Integer newUserUid, String toolContentPath, String fromVersion, String toVersion) throws ToolException { try { @@ -317,23 +306,18 @@ } } - /** - * Get the definitions for possible output for an activity, based on the toolContentId. These may be definitions - * that are always available for the tool (e.g. number of marks for Multiple Choice) or a custom definition created - * for a particular activity such as the answer to the third question contains the word Koala and hence the need for - * the toolContentId - * - * @return SortedMap of ToolOutputDefinitions with the key being the name of each definition - */ + @Override public SortedMap getToolOutputDefinitions(Long toolContentId, int definitionType) throws ToolException { return new TreeMap(); } + @Override public String getToolContentTitle(Long toolContentId) { return getScribeByContentId(toolContentId).getTitle(); } + @Override public boolean isContentEdited(Long toolContentId) { return getScribeByContentId(toolContentId).isDefineLater(); } Index: lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/service/SpreadsheetServiceImpl.java =================================================================== diff -u -r40eb54374e84591563d8b6a679ac719dbc85c8f7 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/service/SpreadsheetServiceImpl.java (.../SpreadsheetServiceImpl.java) (revision 40eb54374e84591563d8b6a679ac719dbc85c8f7) +++ lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/service/SpreadsheetServiceImpl.java (.../SpreadsheetServiceImpl.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -99,7 +99,7 @@ */ public class SpreadsheetServiceImpl implements ISpreadsheetService, ToolContentManager, ToolSessionManager, ToolContentImport102Manager { - static Logger log = Logger.getLogger(SpreadsheetServiceImpl.class.getName()); + private static Logger log = Logger.getLogger(SpreadsheetServiceImpl.class.getName()); private SpreadsheetDAO spreadsheetDao; private SpreadsheetUserDAO spreadsheetUserDao; private SpreadsheetSessionDAO spreadsheetSessionDao; @@ -119,7 +119,6 @@ // Service method // ******************************************************************************* - public Spreadsheet getSpreadsheetByContentId(Long contentId) { Spreadsheet rs = spreadsheetDao.getByContentId(contentId); if (rs == null) { @@ -483,6 +482,7 @@ // ToolContentManager, ToolSessionManager methods // ******************************************************************************* + @Override public void exportToolContent(Long toolContentId, String rootPath) throws DataMissingException, ToolException { Spreadsheet toolContentObj = spreadsheetDao.getByContentId(toolContentId); if (toolContentObj == null) { @@ -506,6 +506,7 @@ } } + @Override public void importToolContent(Long toolContentId, Integer newUserUid, String toolContentPath, String fromVersion, String toVersion) throws ToolException { @@ -542,14 +543,7 @@ } } - /** - * Get the definitions for possible output for an activity, based on the toolContentId. These may be definitions - * that are always available for the tool (e.g. number of marks for Multiple Choice) or a custom definition created - * for a particular activity such as the answer to the third question contains the word Koala and hence the need for - * the toolContentId - * - * @return SortedMap of ToolOutputDefinitions with the key being the name of each definition - */ + @Override public SortedMap getToolOutputDefinitions(Long toolContentId, int definitionType) throws ToolException { return new TreeMap(); @@ -697,6 +691,11 @@ public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return null; } + + @Override + public void forceCompleteUser(Long toolSessionId, User user) { + //no actions required + } /* ===============Methods implemented from ToolContentImport102Manager =============== */ Index: lams_tool_survey/src/java/org/lamsfoundation/lams/tool/survey/service/SurveyServiceImpl.java =================================================================== diff -u -rdfa9fb05f0b01def0777c75db7afa78c998ef5c5 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_tool_survey/src/java/org/lamsfoundation/lams/tool/survey/service/SurveyServiceImpl.java (.../SurveyServiceImpl.java) (revision dfa9fb05f0b01def0777c75db7afa78c998ef5c5) +++ lams_tool_survey/src/java/org/lamsfoundation/lams/tool/survey/service/SurveyServiceImpl.java (.../SurveyServiceImpl.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -661,6 +661,7 @@ // ToolContentManager, ToolSessionManager methods // ******************************************************************************* + @Override public void exportToolContent(Long toolContentId, String rootPath) throws DataMissingException, ToolException { Survey toolContentObj = surveyDao.getByContentId(toolContentId); if (toolContentObj == null) { @@ -683,6 +684,7 @@ } } + @Override public void importToolContent(Long toolContentId, Integer newUserUid, String toolContentPath, String fromVersion, String toVersion) throws ToolException { @@ -719,14 +721,7 @@ } } - /** - * Get the definitions for possible output for an activity, based on the toolContentId. These may be definitions - * that are always available for the tool (e.g. number of marks for Multiple Choice) or a custom definition created - * for a particular activity such as the answer to the third question contains the word Koala and hence the need for - * the toolContentId - * - * @return SortedMap of ToolOutputDefinitions with the key being the name of each definition - */ + @Override public SortedMap getToolOutputDefinitions(Long toolContentId, int definitionType) throws ToolException { Survey survey = surveyDao.getByContentId(toolContentId); @@ -740,6 +735,7 @@ return getSurveyOutputFactory().getToolOutputDefinitions(survey, definitionType); } + @Override public void copyToolContent(Long fromContentId, Long toContentId) throws ToolException { if (toContentId == null) { throw new ToolException("Failed to create the SharedSurveyFiles tool seession"); @@ -771,6 +767,7 @@ } } + @Override public String getToolContentTitle(Long toolContentId) { return getSurveyByContentId(toolContentId).getTitle(); } @@ -840,6 +837,7 @@ surveySessionDao.saveObject(session); } + @Override public String leaveToolSession(Long toolSessionId, Long learnerId) throws DataMissingException, ToolException { if (toolSessionId == null) { SurveyServiceImpl.log.error("Fail to leave tool Session based on null tool session id."); @@ -852,38 +850,36 @@ return learnerService.completeToolSession(toolSessionId, learnerId); } + @Override public ToolSessionExportOutputData exportToolSession(Long toolSessionId) throws DataMissingException, ToolException { return null; } + @Override public ToolSessionExportOutputData exportToolSession(List toolSessionIds) throws DataMissingException, ToolException { return null; } + @Override public void removeToolSession(Long toolSessionId) throws DataMissingException, ToolException { surveySessionDao.deleteBySessionId(toolSessionId); } - /** - * Get the tool output for the given tool output names. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.util.List, java.lang.Long, - * java.lang.Long) - */ + @Override public SortedMap getToolOutput(List names, Long toolSessionId, Long learnerId) { return getSurveyOutputFactory().getToolOutput(names, this, toolSessionId, learnerId); } - /** - * Get the tool output for the given tool output name. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.lang.String, java.lang.Long, - * java.lang.Long) - */ + @Override public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return getSurveyOutputFactory().getToolOutput(name, this, toolSessionId, learnerId); } + + @Override + public void forceCompleteUser(Long toolSessionId, User user) { + //no actions required + } /* ===============Methods implemented from ToolContentImport102Manager =============== */ Index: lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/service/TaskListServiceImpl.java =================================================================== diff -u -r40eb54374e84591563d8b6a679ac719dbc85c8f7 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/service/TaskListServiceImpl.java (.../TaskListServiceImpl.java) (revision 40eb54374e84591563d8b6a679ac719dbc85c8f7) +++ lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/service/TaskListServiceImpl.java (.../TaskListServiceImpl.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -94,7 +94,7 @@ */ public class TaskListServiceImpl implements ITaskListService, ToolContentManager, ToolSessionManager, ToolContentImport102Manager { - static Logger log = Logger.getLogger(TaskListServiceImpl.class.getName()); + private static Logger log = Logger.getLogger(TaskListServiceImpl.class.getName()); private TaskListDAO taskListDao; private TaskListItemDAO taskListItemDao; private TaskListConditionDAO taskListConditionDAO; @@ -118,9 +118,7 @@ // Methods implements ITaskListService. // ******************************************************************************* - /** - * {@inheritDoc} - */ + @Override public TaskList getTaskListByContentId(Long contentId) { TaskList rs = taskListDao.getByContentId(contentId); if (rs == null) { @@ -129,9 +127,7 @@ return rs; } - /** - * {@inheritDoc} - */ + @Override public TaskList getDefaultContent(Long contentId) throws TaskListException { if (contentId == null) { String error = messageService.getMessage("error.msg.default.content.not.find"); @@ -146,16 +142,12 @@ return content; } - /** - * {@inheritDoc} - */ + @Override public List getAuthoredItems(Long taskListUid) { return taskListItemDao.getAuthoringItems(taskListUid); } - /** - * {@inheritDoc} - */ + @Override public TaskListItemAttachment uploadTaskListItemFile(FormFile uploadFile, TaskListUser user) throws UploadTaskListFileException { if (uploadFile == null || StringUtils.isEmpty(uploadFile.getFileName())) { @@ -177,72 +169,47 @@ return file; } - /** - * {@inheritDoc} - */ + @Override public void createUser(TaskListUser taskListUser) { taskListUserDao.saveObject(taskListUser); } - /** - * {@inheritDoc} - */ + @Override public TaskListUser getUserByIDAndContent(Long userId, Long contentId) { return taskListUserDao.getUserByUserIDAndContentID(userId, contentId); } - /** - * {@inheritDoc} - */ + @Override public TaskListUser getUserByIDAndSession(Long userId, Long sessionId) { return taskListUserDao.getUserByUserIDAndSessionID(userId, sessionId); } - /** - * {@inheritDoc} - */ + @Override public TaskListUser getUser(Long uid) { return (TaskListUser) taskListUserDao.getObject(TaskListUser.class, uid); } - /** - * {@inheritDoc} - */ + @Override public void saveOrUpdateTaskList(TaskList taskList) { taskListDao.saveObject(taskList); } - /** - * {@inheritDoc} - */ + @Override public void deleteTaskListCondition(Long conditionUid) { taskListConditionDAO.removeObject(TaskListCondition.class, conditionUid); } - /** - * {@inheritDoc} - */ - public void deleteTaskListItemAttachment(Long attachmentUid) { - taskListItemAttachmentDao.removeObject(TaskListItemAttachment.class, attachmentUid); - } - - /** - * {@inheritDoc} - */ + @Override public void saveOrUpdateTaskListItem(TaskListItem item) { taskListItemDao.saveObject(item); } - /** - * {@inheritDoc} - */ + @Override public void deleteTaskListItem(Long uid) { taskListItemDao.removeObject(TaskListItem.class, uid); } - /** - * {@inheritDoc} - */ + @Override public TaskList getTaskListBySessionId(Long sessionId) { TaskListSession session = taskListSessionDao.getSessionBySessionId(sessionId); // to skip CGLib problem @@ -251,30 +218,22 @@ return taskList; } - /** - * {@inheritDoc} - */ + @Override public TaskListItem getTaskListItemByUid(Long itemUid) { return taskListItemDao.getByUid(itemUid); } - /** - * {@inheritDoc} - */ + @Override public TaskListSession getTaskListSessionBySessionId(Long sessionId) { return taskListSessionDao.getSessionBySessionId(sessionId); } - /** - * {@inheritDoc} - */ + @Override public void saveOrUpdateTaskListSession(TaskListSession resSession) { taskListSessionDao.saveObject(resSession); } - /** - * {@inheritDoc} - */ + @Override public String finishToolSession(Long toolSessionId, Long userId) throws TaskListException { TaskListUser user = taskListUserDao.getUserByUserIDAndSessionID(userId, toolSessionId); user.setSessionFinished(true); @@ -295,9 +254,7 @@ return nextUrl; } - /** - * {@inheritDoc} - */ + @Override public void setItemComplete(Long taskListItemUid, Long userId, Long sessionId) { TaskListItemVisitLog log = taskListItemVisitDao.getTaskListItemLog(taskListItemUid, userId); if (log == null) { @@ -313,9 +270,7 @@ taskListItemVisitDao.saveObject(log); } - /** - * {@inheritDoc} - */ + @Override public void setItemAccess(Long taskListItemUid, Long userId, Long sessionId) { TaskListItemVisitLog log = taskListItemVisitDao.getTaskListItemLog(taskListItemUid, userId); if (log == null) { @@ -331,9 +286,7 @@ } } - /** - * {@inheritDoc} - */ + @Override public void retrieveComplete(Set taskListItemList, TaskListUser user) { for (TaskListItem item : taskListItemList) { TaskListItemVisitLog log = taskListItemVisitDao.getTaskListItemLog(item.getUid(), user.getUserId()); @@ -345,9 +298,7 @@ } } - /** - * {@inheritDoc} - */ + @Override public List getSummary(Long contentId) { TaskList taskList = taskListDao.getByContentId(contentId); @@ -394,9 +345,7 @@ return summaryList; } - /** - * {@inheritDoc} - */ + @Override public ItemSummary getItemSummary(Long contentId, Long taskListItemUid, boolean isExportProcessing) { TaskListItem taskListItem = taskListItemDao.getByUid(taskListItemUid); @@ -480,9 +429,7 @@ return itemSummary; } - /** - * {@inheritDoc} - */ + @Override public List exportForTeacher(Long contentId) { TaskList taskList = taskListDao.getByContentId(contentId); ArrayList itemList = new ArrayList(); @@ -508,9 +455,7 @@ return itemSummaries; } - /** - * {@inheritDoc} - */ + @Override public List exportForLearner(Long sessionId, TaskListUser learner) { Long contentId = getTaskListBySessionId(sessionId).getContentId(); @@ -545,16 +490,12 @@ return itemSummaries; } - /** - * {@inheritDoc} - */ + @Override public int getNumTasksCompletedByUser(Long toolSessionId, Long userUid) { return getTaskListItemVisitDao().getTasksCompletedCountByUser(toolSessionId, userUid); } - /** - * {@inheritDoc} - */ + @Override public boolean checkCondition(String conditionName, Long toolSessionId, Long userUid) { TaskListUser user = taskListUserDao.getUserByUserIDAndSessionID(userUid, toolSessionId); TaskList taskList = taskListSessionDao.getSessionBySessionId(toolSessionId).getTaskList(); @@ -591,9 +532,7 @@ return result; } - /** - * {@inheritDoc} - */ + @Override public List getUserListBySessionItem(Long sessionId, Long itemUid) { List logList = taskListItemVisitDao.getTaskListItemLogBySession(sessionId, itemUid); List userList = new ArrayList(logList.size()); @@ -605,25 +544,19 @@ return userList; } - /** - * {@inheritDoc} - */ + @Override public List getUserListBySessionId(Long sessionId) { return taskListUserDao.getBySessionID(sessionId); } - /** - * {@inheritDoc} - */ + @Override public Long createNotebookEntry(Long sessionId, Integer notebookToolType, String toolSignature, Integer userId, String entryText) { return coreNotebookService.createNotebookEntry(sessionId, notebookToolType, toolSignature, userId, "", entryText); } - /** - * {@inheritDoc} - */ + @Override public NotebookEntry getEntry(Long sessionId, Integer idType, String signature, Integer userID) { List list = coreNotebookService.getEntry(sessionId, idType, signature, userID); if (list == null || list.isEmpty()) { @@ -633,13 +566,12 @@ } } - /** - * {@inheritDoc} - */ + @Override public void updateEntry(NotebookEntry notebookEntry) { coreNotebookService.updateEntry(notebookEntry); } + @Override public boolean isGroupedActivity(long toolContentID) { return toolService.isGroupedActivity(toolContentID); } @@ -738,6 +670,7 @@ // Methods implementing ToolContentManager, ToolSessionManager // ******************************************************************************* + @Override public void exportToolContent(Long toolContentId, String rootPath) throws DataMissingException, ToolException { TaskList toolContentObj = taskListDao.getByContentId(toolContentId); if (toolContentObj == null) { @@ -766,9 +699,7 @@ } } - /** - * {@inheritDoc} - */ + @Override public void importToolContent(Long toolContentId, Integer newUserUid, String toolContentPath, String fromVersion, String toVersion) throws ToolException { @@ -810,15 +741,7 @@ } } - /** - * Get the definitions for possible output for an activity, based on the toolContentId. These may be definitions - * that are always available for the tool (e.g. number of marks for Multiple Choice) or a custom definition created - * for a particular activity such as the answer to the third question contains the word Koala and hence the need for - * the toolContentId - * - * @return SortedMap of ToolOutputDefinitions with the key being the name of each definition - * @throws TaskListException - */ + @Override public SortedMap getToolOutputDefinitions(Long toolContentId, int definitionType) throws ToolException { TaskList taskList = getTaskListByContentId(toolContentId); @@ -893,6 +816,7 @@ taskListDao.delete(taskList); } + @Override @SuppressWarnings("unchecked") public void removeLearnerContent(Long toolContentId, Integer userId) throws ToolException { if (log.isDebugEnabled()) { @@ -955,9 +879,7 @@ } } - /** - * {@inheritDoc} - */ + @Override public void createToolSession(Long toolSessionId, String toolSessionName, Long toolContentId) throws ToolException { TaskListSession session = new TaskListSession(); session.setSessionId(toolSessionId); @@ -967,9 +889,7 @@ taskListSessionDao.saveObject(session); } - /** - * {@inheritDoc} - */ + @Override public String leaveToolSession(Long toolSessionId, Long learnerId) throws DataMissingException, ToolException { if (toolSessionId == null) { TaskListServiceImpl.log.error("Fail to leave tool Session based on null tool session id."); @@ -993,34 +913,23 @@ return learnerService.completeToolSession(toolSessionId, learnerId); } - /** - * {@inheritDoc} - */ + @Override public ToolSessionExportOutputData exportToolSession(Long toolSessionId) throws DataMissingException, ToolException { return null; } - /** - * {@inheritDoc} - */ + @Override public ToolSessionExportOutputData exportToolSession(List toolSessionIds) throws DataMissingException, ToolException { return null; } - /** - * {@inheritDoc} - */ + @Override public void removeToolSession(Long toolSessionId) throws DataMissingException, ToolException { taskListSessionDao.deleteBySessionId(toolSessionId); } - /** - * Get the tool output for the given tool output names. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.util.List, java.lang.Long, - * java.lang.Long) - */ + @Override public SortedMap getToolOutput(List names, Long toolSessionId, Long learnerId) { return taskListOutputFactory.getToolOutput(names, this, toolSessionId, learnerId); } @@ -1034,19 +943,21 @@ public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return taskListOutputFactory.getToolOutput(name, this, toolSessionId, learnerId); } + + @Override + public void forceCompleteUser(Long toolSessionId, User user) { + //no actions required + } // ******************************************************************************* // Methods implementing ToolContentImport102Manager // ******************************************************************************* - /** - * Import the data for a 1.0.2 Noticeboard or HTMLNoticeboard. Was left only for the reasons of implementing - * ToolContentImport102Manager interface. - */ + @Override public void import102ToolContent(Long toolContentId, UserDTO user, Hashtable importValues) { } - /** Set the description, throws away the title value as this is not supported in 2.0 */ + @Override public void setReflectiveData(Long toolContentId, String title, String description) throws ToolException, DataMissingException { Index: lams_tool_videorecorder/src/java/org/lamsfoundation/lams/tool/videoRecorder/service/VideoRecorderService.java =================================================================== diff -u -r40eb54374e84591563d8b6a679ac719dbc85c8f7 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_tool_videorecorder/src/java/org/lamsfoundation/lams/tool/videoRecorder/service/VideoRecorderService.java (.../VideoRecorderService.java) (revision 40eb54374e84591563d8b6a679ac719dbc85c8f7) +++ lams_tool_videorecorder/src/java/org/lamsfoundation/lams/tool/videoRecorder/service/VideoRecorderService.java (.../VideoRecorderService.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -83,6 +83,7 @@ import org.lamsfoundation.lams.tool.videoRecorder.util.VideoRecorderConstants; import org.lamsfoundation.lams.tool.videoRecorder.util.VideoRecorderException; import org.lamsfoundation.lams.tool.videoRecorder.util.VideoRecorderToolContentHandler; +import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.FileUtil; import org.lamsfoundation.lams.util.MessageService; @@ -98,7 +99,7 @@ public class VideoRecorderService implements ToolSessionManager, ToolContentManager, IVideoRecorderService, ToolContentImport102Manager { - static Logger logger = Logger.getLogger(VideoRecorderService.class.getName()); + private static Logger logger = Logger.getLogger(VideoRecorderService.class.getName()); private IVideoRecorderDAO videoRecorderDAO = null; @@ -124,16 +125,14 @@ private VideoRecorderOutputFactory videoRecorderOutputFactory; - private Random generator = new Random(); - private MessageService messageService; public VideoRecorderService() { super(); - // TODO Auto-generated constructor stub } /* ************ Methods from ToolSessionManager ************* */ + @Override public void createToolSession(Long toolSessionId, String toolSessionName, Long toolContentId) throws ToolException { if (VideoRecorderService.logger.isDebugEnabled()) { VideoRecorderService.logger.debug("entering method createToolSession:" + " toolSessionId = " @@ -152,10 +151,12 @@ videoRecorderSessionDAO.saveOrUpdate(session); } + @Override public String leaveToolSession(Long toolSessionId, Long learnerId) throws DataMissingException, ToolException { return learnerService.completeToolSession(toolSessionId, learnerId); } + @Override public ToolSessionExportOutputData exportToolSession(Long toolSessionId) throws DataMissingException, ToolException { // TODO Auto-generated method stub return null; @@ -183,6 +184,11 @@ public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return getVideoRecorderOutputFactory().getToolOutput(name, this, toolSessionId, learnerId); } + + @Override + public void forceCompleteUser(Long toolSessionId, User user) { + //no actions required + } /* ************ Methods from ToolContentManager ************************* */ @@ -234,11 +240,13 @@ videoRecorderDAO.saveOrUpdate(videoRecorder); } + @Override public void removeToolContent(Long toolContentId, boolean removeSessionData) throws SessionDataExistsException, ToolException { // TODO Auto-generated method stub } + @Override @SuppressWarnings("unchecked") public void removeLearnerContent(Long toolContentId, Integer userId) throws ToolException { if (logger.isDebugEnabled()) { @@ -278,15 +286,7 @@ } } - /** - * Export the XML fragment for the tool's content, along with any files needed for the content. - * - * @throws DataMissingException - * if no tool content matches the toolSessionId - * @throws ToolException - * if any other error occurs - */ - + @Override public void exportToolContent(Long toolContentId, String rootPath) throws DataMissingException, ToolException { VideoRecorder videoRecorder = videoRecorderDAO.getByContentId(toolContentId); if (videoRecorder == null) { @@ -321,12 +321,7 @@ } } - /** - * Import the XML fragment for the tool's content, along with any files needed for the content. - * - * @throws ToolException - * if any other error occurs - */ + @Override public void importToolContent(Long toolContentId, Integer newUserUid, String toolContentPath, String fromVersion, String toVersion) throws ToolException { try { @@ -360,14 +355,7 @@ } } - /** - * Get the definitions for possible output for an activity, based on the toolContentId. These may be definitions - * that are always available for the tool (e.g. number of marks for Multiple Choice) or a custom definition created - * for a particular activity such as the answer to the third question contains the word Koala and hence the need for - * the toolContentId - * - * @return SortedMap of ToolOutputDefinitions with the key being the name of each definition - */ + @Override public SortedMap getToolOutputDefinitions(Long toolContentId, int definitionType) throws ToolException { VideoRecorder videoRecorder = getVideoRecorderDAO().getByContentId(toolContentId); @@ -377,28 +365,34 @@ return getVideoRecorderOutputFactory().getToolOutputDefinitions(videoRecorder, definitionType); } + @Override public String getToolContentTitle(Long toolContentId) { return getVideoRecorderByContentId(toolContentId).getTitle(); } + @Override public boolean isContentEdited(Long toolContentId) { return getVideoRecorderByContentId(toolContentId).isDefineLater(); } /* ********** IVideoRecorderService Methods ********************************* */ + @Override public Long createNotebookEntry(Long id, Integer idType, String signature, Integer userID, String entry) { return coreNotebookService.createNotebookEntry(id, idType, signature, userID, "", entry); } + @Override public NotebookEntry getEntry(Long uid) { return coreNotebookService.getEntry(uid); } + @Override public void updateEntry(Long uid, String entry) { coreNotebookService.updateEntry(uid, "", entry); } + @Override public Long getDefaultContentIdBySignature(String toolSignature) { Long toolContentId = null; toolContentId = new Long(toolService.getToolDefaultContentIdBySignature(toolSignature)); @@ -410,6 +404,7 @@ return toolContentId; } + @Override public VideoRecorder getDefaultContent() { Long defaultContentID = getDefaultContentIdBySignature(VideoRecorderConstants.TOOL_SIGNATURE); VideoRecorder defaultContent = getVideoRecorderByContentId(defaultContentID); @@ -424,6 +419,7 @@ return defaultContent; } + @Override public VideoRecorder copyDefaultContent(Long newContentID) { if (newContentID == null) { @@ -440,6 +436,7 @@ return newContent; } + @Override public VideoRecorder getVideoRecorderByContentId(Long toolContentID) { VideoRecorder videoRecorder = videoRecorderDAO.getByContentId(toolContentID); if (videoRecorder == null) { @@ -448,6 +445,7 @@ return videoRecorder; } + @Override public VideoRecorderSession getSessionBySessionId(Long toolSessionId) { VideoRecorderSession videoRecorderSession = videoRecorderSessionDAO.getBySessionId(toolSessionId); if (videoRecorderSession == null) { @@ -457,6 +455,7 @@ return videoRecorderSession; } + @Override public VideoRecorderUser getUserByUserIdAndSessionId(Long userId, Long toolSessionId) { return videoRecorderUserDAO.getByUserIdAndSessionId(userId, toolSessionId); } Index: lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/service/VoteServicePOJO.java =================================================================== diff -u -r4d139bddc3cdd41d32d9f3033f2100c711d8c0c5 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/service/VoteServicePOJO.java (.../VoteServicePOJO.java) (revision 4d139bddc3cdd41d32d9f3033f2100c711d8c0c5) +++ lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/service/VoteServicePOJO.java (.../VoteServicePOJO.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -63,7 +63,6 @@ import org.lamsfoundation.lams.tool.exception.DataMissingException; import org.lamsfoundation.lams.tool.exception.SessionDataExistsException; import org.lamsfoundation.lams.tool.exception.ToolException; -import org.lamsfoundation.lams.tool.service.ILamsCoreToolService; import org.lamsfoundation.lams.tool.service.ILamsToolService; import org.lamsfoundation.lams.tool.vote.VoteAppConstants; import org.lamsfoundation.lams.tool.vote.dao.IVoteContentDAO; @@ -1463,7 +1462,43 @@ public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return voteOutputFactory.getToolOutput(name, this, toolSessionId, learnerId); } + + @Override + public void forceCompleteUser(Long toolSessionId, User user) { + Long userId = user.getUserId().longValue(); + VoteSession session = getSessionBySessionId(toolSessionId); + if ((session == null) || (session.getVoteContent() == null)) { + return; + } + VoteContent content = session.getVoteContent(); + + // copy answers only in case leader aware feature is ON + if (content.isUseSelectLeaderToolOuput()) { + + VoteQueUsr voteUser = voteUserDAO.getVoteUserBySession(userId, toolSessionId); + // create user if he hasn't accessed this activity yet + if (voteUser == null) { + String userName = user.getLogin(); + String fullName = user.getFirstName() + " " + user.getLastName(); + + voteUser = new VoteQueUsr(userId, userName, fullName, session, new TreeSet()); + createVoteQueUsr(voteUser); + } + + VoteQueUsr groupLeader = session.getGroupLeader(); + + // check if leader has submitted answers + if (groupLeader != null && groupLeader.isResponseFinalised()) { + + // we need to make sure specified user has the same scratches as a leader + copyAnswersFromLeader(voteUser, groupLeader); + } + + } + + } + /* ===============Methods implemented from ToolContentImport102Manager =============== */ @Override Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/service/WikiService.java =================================================================== diff -u -r1d2a30e1ab320d24f13b2c56ebb9fa89a65f5e42 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/service/WikiService.java (.../WikiService.java) (revision 1d2a30e1ab320d24f13b2c56ebb9fa89a65f5e42) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/service/WikiService.java (.../WikiService.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -87,7 +87,7 @@ */ public class WikiService implements ToolSessionManager, ToolContentManager, IWikiService, ToolContentImport102Manager, ToolRestManager { - static Logger logger = Logger.getLogger(WikiService.class.getName()); + private static Logger logger = Logger.getLogger(WikiService.class.getName()); private IWikiDAO wikiDAO = null; @@ -123,12 +123,7 @@ /* ************ Methods from ToolSessionManager ************* */ - /** - * (non-Javadoc) - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#createToolSession(java.lang.Long, java.lang.String, - * java.lang.Long) - */ + @Override public void createToolSession(Long toolSessionId, String toolSessionName, Long toolContentId) throws ToolException { if (WikiService.logger.isDebugEnabled()) { WikiService.logger.debug("entering method createToolSession:" + " toolSessionId = " + toolSessionId @@ -183,27 +178,28 @@ wikiSessionDAO.saveOrUpdate(session); } + @Override public String leaveToolSession(Long toolSessionId, Long learnerId) throws DataMissingException, ToolException { return learnerService.completeToolSession(toolSessionId, learnerId); } + @Override public ToolSessionExportOutputData exportToolSession(Long toolSessionId) throws DataMissingException, ToolException { return null; } + @Override public ToolSessionExportOutputData exportToolSession(List toolSessionIds) throws DataMissingException, ToolException { return null; } + @Override public void removeToolSession(Long toolSessionId) throws DataMissingException, ToolException { wikiSessionDAO.deleteBySessionID(toolSessionId); } - /** - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.util.List, java.lang.Long, - * java.lang.Long) - */ + @Override public SortedMap getToolOutput(List names, Long toolSessionId, Long learnerId) { wikiOutputFactory = getWikiOutputFactory(); @@ -214,10 +210,7 @@ return wikiOutputFactory.getToolOutput(names, this, toolSessionId, learnerId); } - /** - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.lang.String, java.lang.Long, - * java.lang.Long) - */ + @Override public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { wikiOutputFactory = getWikiOutputFactory(); WikiSession session = this.getSessionBySessionId(toolSessionId); @@ -226,12 +219,13 @@ } return wikiOutputFactory.getToolOutput(name, this, toolSessionId, learnerId); } + + @Override + public void forceCompleteUser(Long toolSessionId, User user) { + //no actions required + } - /** - * Get the definitions for possible output for an activity, based on the toolContentId. - * - * @return SortedMap of ToolOutputDefinitions with the key being the name of each definition - */ + @Override public SortedMap getToolOutputDefinitions(Long toolContentId, int definitionType) throws ToolException { wikiOutputFactory = getWikiOutputFactory(); @@ -242,6 +236,7 @@ return wikiOutputFactory.getToolOutputDefinitions(wiki, definitionType); } + @Override public String getToolContentTitle(Long toolContentId) { return getWikiByContentId(toolContentId).getTitle(); } @@ -331,14 +326,7 @@ } } - /** - * Export the XML fragment for the tool's content, along with any files needed for the content. - * - * @throws DataMissingException - * if no tool content matches the toolSessionId - * @throws ToolException - * if any other error occurs - */ + @Override public void exportToolContent(Long toolContentId, String rootPath) throws DataMissingException, ToolException { Wiki wiki = wikiDAO.getByContentId(toolContentId); if (wiki == null) { @@ -378,12 +366,7 @@ } } - /** - * Import the XML fragment for the tool's content, along with any files needed for the content. - * - * @throws ToolException - * if any other error occurs - */ + @Override public void importToolContent(Long toolContentId, Integer newUserUid, String toolContentPath, String fromVersion, String toVersion) throws ToolException { try { Index: lams_tool_wookie/src/java/org/lamsfoundation/lams/tool/wookie/service/WookieService.java =================================================================== diff -u -r40eb54374e84591563d8b6a679ac719dbc85c8f7 -ra207bdecc16a704428826dbf402a97de2e35458b --- lams_tool_wookie/src/java/org/lamsfoundation/lams/tool/wookie/service/WookieService.java (.../WookieService.java) (revision 40eb54374e84591563d8b6a679ac719dbc85c8f7) +++ lams_tool_wookie/src/java/org/lamsfoundation/lams/tool/wookie/service/WookieService.java (.../WookieService.java) (revision a207bdecc16a704428826dbf402a97de2e35458b) @@ -80,7 +80,7 @@ public class WookieService implements ToolSessionManager, ToolContentManager, IWookieService, ToolContentImport102Manager { - static Logger logger = Logger.getLogger(WookieService.class.getName()); + private static Logger logger = Logger.getLogger(WookieService.class.getName()); private IWookieDAO wookieDAO = null; @@ -108,10 +108,11 @@ public WookieService() { super(); - // TODO Auto-generated constructor stub } /* ************ Methods from ToolSessionManager ************* */ + + @Override public void createToolSession(Long toolSessionId, String toolSessionName, Long toolContentId) throws ToolException { if (WookieService.logger.isDebugEnabled()) { @@ -175,54 +176,50 @@ wookieSessionDAO.saveOrUpdate(session); } + @Override public String leaveToolSession(Long toolSessionId, Long learnerId) throws DataMissingException, ToolException { return learnerService.completeToolSession(toolSessionId, learnerId); } + @Override public ToolSessionExportOutputData exportToolSession(Long toolSessionId) throws DataMissingException, ToolException { - // TODO Auto-generated method stub return null; } + @Override @SuppressWarnings("unchecked") public ToolSessionExportOutputData exportToolSession(List ToolSessionIds) throws DataMissingException, ToolException { - // TODO Auto-generated method stub return null; } + @Override public void removeToolSession(Long toolSessionId) throws DataMissingException, ToolException { wookieSessionDAO.deleteBySessionID(toolSessionId); // TODO check if cascade worked } - /** - * Get the tool output for the given tool output names. - * - * @see - * org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.util - * .List, java.lang.Long, java.lang.Long) - */ + @Override public SortedMap getToolOutput(List names, Long toolSessionId, Long learnerId) { return getWookieOutputFactory().getToolOutput(names, this, toolSessionId, learnerId); } - /** - * Get the tool output for the given tool output name. - * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.lang.String, - * java.lang.Long, java.lang.Long) - */ + @Override public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return getWookieOutputFactory().getToolOutput(name, this, toolSessionId, learnerId); } + + @Override + public void forceCompleteUser(Long toolSessionId, User user) { + // no actions required + } /* ************ Methods from ToolContentManager ************************* */ @@ -308,20 +305,6 @@ wookieDAO.saveOrUpdate(toContent); } - - public void copyFile(File srcFile, String destPath) throws Exception { - if (srcFile.exists() && srcFile.canRead()) { - File newFile = new File(destPath); - FileOutputStream out = new FileOutputStream(newFile); - FileInputStream in = new FileInputStream(srcFile); - byte[] buf = new byte[1024]; - int len; - while ((len = in.read(buf)) > 0) { - out.write(buf, 0, len); - } - } - - } @Override public void resetDefineLater(Long toolContentId) throws DataMissingException, ToolException { @@ -336,7 +319,6 @@ @Override public void removeToolContent(Long toolContentId, boolean removeSessionData) throws SessionDataExistsException, ToolException { - // TODO Auto-generated method stub } @Override @@ -366,16 +348,8 @@ } } - /** - * Export the XML fragment for the tool's content, along with any files - * needed for the content. - * - * @throws DataMissingException - * if no tool content matches the toolSessionId - * @throws ToolException - * if any other error occurs - */ - + + @Override public void exportToolContent(Long toolContentId, String rootPath) throws DataMissingException, ToolException { Wookie wookie = wookieDAO.getByContentId(toolContentId); @@ -400,13 +374,7 @@ } } - /** - * Import the XML fragment for the tool's content, along with any files - * needed for the content. - * - * @throws ToolException - * if any other error occurs - */ + @Override public void importToolContent(Long toolContentId, Integer newUserUid, String toolContentPath, String fromVersion, String toVersion) throws ToolException { @@ -463,6 +431,7 @@ } } + @Override public String getFileExtension(String fileName) { String ext = ""; int i = fileName.lastIndexOf('.'); @@ -472,16 +441,7 @@ return ext; } - /** - * Get the definitions for possible output for an activity, based on the - * toolContentId. These may be definitions that are always available for the - * tool (e.g. number of marks for Multiple Choice) or a custom definition - * created for a particular activity such as the answer to the third - * question contains the word Koala and hence the need for the toolContentId - * - * @return SortedMap of ToolOutputDefinitions with the key being the name of - * each definition - */ + @Override public SortedMap getToolOutputDefinitions( Long toolContentId, int definitionType) throws ToolException { Wookie wookie = getWookieDAO().getByContentId(toolContentId); @@ -492,14 +452,17 @@ definitionType); } + @Override public String getToolContentTitle(Long toolContentId) { return getWookieByContentId(toolContentId).getTitle(); } + @Override public boolean isContentEdited(Long toolContentId) { return getWookieByContentId(toolContentId).isDefineLater(); } + @Override @SuppressWarnings("unchecked") public Class[] getSupportedToolOutputDefinitionClasses(int definitionType) { return getWookieOutputFactory().getSupportedDefinitionClasses( @@ -508,6 +471,7 @@ /* ********** IWookieService Methods ********************************* */ + @Override public Long createNotebookEntry(Long id, Integer idType, String signature, Integer userID, String entry) { return coreNotebookService.createNotebookEntry(id, idType, signature,