Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java,v diff -u -r1.1.2.10 -r1.1.2.11 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java 22 Apr 2009 08:41:37 -0000 1.1.2.10 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java 23 Apr 2009 00:26:41 -0000 1.1.2.11 @@ -533,10 +533,17 @@ // If gradebook user activity is null, save the mark and feedback if (gradebookUserActivity == null) { updateUserActivityGradebookMark(toolSession.getLesson(), learner, activity, mark); - } + } } } + + /** + * @see org.lamsfoundation.lams.gradebook.service.IGradebookService#getActivityById(java.lang.Long) + */ + public Activity getActivityById(Long activityID) { + return activityDAO.getActivityByActivityId(activityID); + } /** * Gets the internationalised date Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java,v diff -u -r1.1.2.3 -r1.1.2.4 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java 22 Apr 2009 08:41:37 -0000 1.1.2.3 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java 23 Apr 2009 00:26:41 -0000 1.1.2.4 @@ -169,5 +169,13 @@ * @param toolSessionID */ public void updateActivityMark(Double mark, String feedback, Integer userID, Long toolSessionID); + + /** + * Get an activity from the db by id + * + * @param activityID + * @return + */ + public Activity getActivityById(Long activityID); } Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookAction.java,v diff -u -r1.1.2.5 -r1.1.2.6 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookAction.java 22 Apr 2009 06:39:06 -0000 1.1.2.5 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/web/action/GradebookAction.java 23 Apr 2009 00:26:40 -0000 1.1.2.6 @@ -232,7 +232,7 @@ // Getting the group id if it is there Long groupId = WebUtil.readLongParam(request, GradebookConstants.PARAM_GROUP_ID, true); - Activity activity = (Activity)userService.findById(Activity.class, activityID); + Activity activity = gradebookService.getActivityById(activityID); if (activity != null && activity instanceof ToolActivity) { gradebookUserDTOs = gradebookService.getGBUserRowsForActivity(lesson, (ToolActivity)activity, groupId); } else { @@ -371,7 +371,7 @@ initServices(); Long activityID = WebUtil.readLongParam(request, AttributeNames.PARAM_ACTIVITY_ID); - Activity activity = (Activity)userService.findById(Activity.class, activityID); + Activity activity = gradebookService.getActivityById(activityID); if (activity != null) { Double averageMark = gradebookService.getAverageMarkForActivity(activityID); Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java,v diff -u -r1.99.4.1 -r1.99.4.2 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java 22 Apr 2009 08:41:38 -0000 1.99.4.1 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java 23 Apr 2009 00:26:42 -0000 1.99.4.2 @@ -1138,8 +1138,9 @@ } /** - * @see org.lamsfoundation.lams.tool.forum.service.IForumService#sendMarksToGradebook(org.lamsfoundation.lams.tool.forum.persistence.ForumReport, - * java.lang.Integer, java.lang.Long) + * Sends marks straight to gradebook from a forum report + * @param user + * @param toolSessionID */ @SuppressWarnings("unchecked") public void sendMarksToGradebook(ForumUser user, Long toolSessionID) { Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java,v diff -u -r1.44.4.1 -r1.44.4.2 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java 22 Apr 2009 08:41:38 -0000 1.44.4.1 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java 23 Apr 2009 00:26:42 -0000 1.44.4.2 @@ -431,12 +431,4 @@ public String createTextSearchConditionName(Collection existingConditions); public void deleteCondition(ForumCondition condition) throws PersistenceException; - - /** - * Sends marks straight to gradebook from a forum report - * - * @param user - * @param toolSessionID - */ - public void sendMarksToGradebook(ForumUser user, Long toolSessionID); } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java,v diff -u -r1.39.6.2 -r1.39.6.3 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java 22 Apr 2009 08:41:38 -0000 1.39.6.2 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java 23 Apr 2009 00:26:42 -0000 1.39.6.3 @@ -795,18 +795,7 @@ SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(markForm.getSessionMapID()); Long sessionId = (Long) sessionMap.get(AttributeNames.PARAM_TOOL_SESSION_ID); String updateMode = (String) sessionMap.get(ForumConstants.PARAM_UPDATE_MODE); - - // update gradebook marks if they have been released - if(report.getDateMarksReleased() != null) { - forumService.sendMarksToGradebook(user, sessionId); - } - //only session has been released mark, the data of mark release will have value. - ForumToolSession toolSession = forumService.getSessionBySessionId(sessionId); - if (toolSession.isMarkReleased()) { - report.setDateMarksReleased(new Date()); - } - report.setMark(mark); report.setComment(markForm.getComment()); forumService.updateTopic(msg); Index: lams_tool_sbmt/.classpath =================================================================== RCS file: /usr/local/cvsroot/lams_tool_sbmt/.classpath,v diff -u -r1.17 -r1.17.6.1 --- lams_tool_sbmt/.classpath 30 Oct 2008 03:48:30 -0000 1.17 +++ lams_tool_sbmt/.classpath 23 Apr 2009 00:26:40 -0000 1.17.6.1 @@ -11,5 +11,6 @@ + Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/submitFilesApplicationContext.xml =================================================================== RCS file: /usr/local/cvsroot/lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/submitFilesApplicationContext.xml,v diff -u -r1.23 -r1.23.2.1 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/submitFilesApplicationContext.xml 26 Mar 2009 10:00:39 -0000 1.23 +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/submitFilesApplicationContext.xml 23 Apr 2009 00:26:40 -0000 1.23.2.1 @@ -57,6 +57,7 @@ + Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java,v diff -u -r1.78 -r1.78.4.1 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java 16 Mar 2009 05:56:03 -0000 1.78 +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java 23 Apr 2009 00:26:40 -0000 1.78.4.1 @@ -58,9 +58,9 @@ import org.lamsfoundation.lams.contentrepository.WorkspaceNotFoundException; import org.lamsfoundation.lams.contentrepository.client.IToolContentHandler; import org.lamsfoundation.lams.contentrepository.service.IRepositoryService; -import org.lamsfoundation.lams.contentrepository.service.RepositoryProxy; import org.lamsfoundation.lams.contentrepository.service.SimpleCredentials; import org.lamsfoundation.lams.events.IEventNotificationService; +import org.lamsfoundation.lams.gradebook.service.IGradebookService; import org.lamsfoundation.lams.learning.service.ILearnerService; import org.lamsfoundation.lams.learningdesign.service.ExportToolContentException; import org.lamsfoundation.lams.learningdesign.service.IExportToolContentService; @@ -143,6 +143,8 @@ private ILessonService lessonService; + private IGradebookService gradebookService; + private class FileDtoComparator implements Comparator { public int compare(FileDetailsDTO o1, FileDetailsDTO o2) { @@ -181,7 +183,8 @@ /** * (non-Javadoc) * - * @see org.lamsfoundation.lams.tool.ToolContentManager#copyToolContent(java.lang.Long, java.lang.Long) + * @see org.lamsfoundation.lams.tool.ToolContentManager#copyToolContent(java.lang.Long, + * java.lang.Long) */ public void copyToolContent(Long fromContentId, Long toContentId) throws ToolException { if (toContentId == null) { @@ -223,8 +226,9 @@ } /** - * If the toolContentID does not exist, then get default tool content id from tool core and initialize a emtpy - * SubmitFilesContent return. + * If the toolContentID does not exist, then get default tool content id + * from tool core and initialize a emtpy SubmitFilesContent + * return. * * @param toolContentId * @return @@ -289,7 +293,8 @@ } /** - * Export the XML fragment for the tool's content, along with any files needed for the content. + * Export the XML fragment for the tool's content, along with any files + * needed for the content. * * @throws ExportToolContentException */ @@ -354,12 +359,14 @@ } /** - * 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 + * 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 + * @return SortedMap of ToolOutputDefinitions with the key being the name of + * each definition */ public SortedMap getToolOutputDefinitions(Long toolContentId) throws ToolException { return new TreeMap(); @@ -404,11 +411,12 @@ } /** - * This method verifies the credentials of the SubmitFiles Tool and gives it the Ticket to login and - * access the Content Repository. + * This method verifies the credentials of the SubmitFiles Tool and gives it + * the Ticket to login and access the Content Repository. * - * A valid ticket is needed in order to access the content from the repository. This method would be called evertime - * the tool needs to upload/download files from the content repository. + * A valid ticket is needed in order to access the content from the + * repository. This method would be called evertime the tool needs to + * upload/download files from the content repository. * * @return ITicket The ticket for repostory access * @throws SubmitFilesException @@ -429,8 +437,8 @@ } /** - * This method deletes the content with the given uuid and versionID from the content - * repository + * 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 @@ -574,8 +582,8 @@ /** * 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) + * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.util.List, + * java.lang.Long, java.lang.Long) */ public SortedMap getToolOutput(List names, Long toolSessionId, Long learnerId) { return new TreeMap(); @@ -584,8 +592,8 @@ /** * 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) + * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.lang.String, + * java.lang.Long, java.lang.Long) */ public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return null; @@ -594,7 +602,8 @@ /** * (non-Javadoc) * - * @see org.lamsfoundation.lams.tool.ToolSessionManager# uploadFileToContent(Long,FormFile ) + * @see org.lamsfoundation.lams.tool.ToolSessionManager# + * uploadFileToContent(Long,FormFile ) */ public InstructionFiles uploadFileToContent(Long contentID, FormFile uploadFile, String fileType) throws SubmitFilesException { @@ -616,7 +625,8 @@ /** * (non-Javadoc) * - * @see org.lamsfoundation.lams.tool.ToolSessionManager# uploadFileToSession(Long,FormFile,String,Long ) + * @see org.lamsfoundation.lams.tool.ToolSessionManager# + * uploadFileToSession(Long,FormFile,String,Long ) */ public void uploadFileToSession(Long sessionID, FormFile uploadFile, String fileDescription, Integer userID) throws SubmitFilesException { @@ -708,8 +718,9 @@ } /** - * This method save SubmissionDetails list into a map container: key is user id, value is a list container, which - * contains all FileDetailsDTO object belong to this user. + * This method save SubmissionDetails list into a map container: key is user + * id, value is a list container, which contains all + * FileDetailsDTO object belong to this user. */ public SortedMap getFilesUploadedBySession(Long sessionID, Locale currentLocale) { List list = submissionDetailsDAO.getSubmissionDetailsBySession(sessionID); @@ -831,6 +842,17 @@ notificationMessageParameters); } } + + // pushing outputs to gradebook + List users = getUsersBySession(sessionID); + + if (users != null) { + for (SubmitUser user : users) { + // send marks to gradebook where applicable + sendMarksToGradebook(user, sessionID); + } + } + return true; } @@ -840,6 +862,37 @@ submitUserDAO.saveOrUpdateUser(learner); } + /** + * Sends marks to gradebook + * + * @param user + * @param toolSessionID + */ + @SuppressWarnings("unchecked") + public void sendMarksToGradebook(SubmitUser user, Long toolSessionID) { + submissionDetailsDAO.getSubmissionDetailsBySession(toolSessionID); + List detailsList = (List) submissionDetailsDAO.getBySessionAndLearner( + toolSessionID, user.getUserID()); + if (detailsList != null) { + Float totalMark = null; + for (SubmissionDetails details : detailsList) { + SubmitFilesReport report = details.getReport(); + if (report != null) { + if (totalMark == null) { + totalMark = details.getReport().getMarks(); + } else if (report.getMarks() != null) { + totalMark += report.getMarks(); + } + } + + } + if (totalMark != null) { + Double mark = new Double(totalMark); + gradebookService.updateActivityMark(mark, null, user.getUserID(), toolSessionID); + } + } + } + /* * (non-Javadoc) * @@ -930,7 +983,10 @@ submitFilesContentDAO.saveOrUpdate(toolContentObj); } - /** Set the description, throws away the title value as this is not supported in 2.0 */ + /** + * Set the description, throws away the title value as this is not supported + * in 2.0 + */ public void setReflectiveData(Long toolContentId, String title, String description) throws ToolException, DataMissingException { @@ -993,9 +1049,9 @@ return submitUserDAO.getContentUser(contentId, userID); } - /******************************************************************************************************************* + /*************************************************************************** * Property Injection Methods - ******************************************************************************************************************/ + **************************************************************************/ /** * @param submitFilesContentDAO @@ -1066,13 +1122,13 @@ public void setLearnerService(ILearnerService learnerService) { this.learnerService = learnerService; } - + public IRepositoryService getRepositoryService() { - return repositoryService; + return repositoryService; } public void setRepositoryService(IRepositoryService repositoryService) { - this.repositoryService = repositoryService; + this.repositoryService = repositoryService; } public ILamsToolService getToolService() { @@ -1134,4 +1190,8 @@ public void setLessonService(ILessonService lessonService) { this.lessonService = lessonService; } + + public void setGradebookService(IGradebookService gradebookService) { + this.gradebookService = gradebookService; + } } \ No newline at end of file