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.33 -r1.34 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java 31 Oct 2013 14:25:17 -0000 1.33 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java 11 Feb 2014 13:59:54 -0000 1.34 @@ -1034,8 +1034,8 @@ // mark and feedback if (gradebookUserActivity == null || markedInGradebook || !gradebookUserActivity.getMarkedInGradebook()) { updateUserActivityGradebookMark(toolSession.getLesson(), learner, activity, mark, markedInGradebook); + updateUserActivityGradebookFeedback(activity, learner, feedback); } - } } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java,v diff -u -r1.37 -r1.38 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java 2 Feb 2014 17:18:52 -0000 1.37 +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java 11 Feb 2014 13:59:46 -0000 1.38 @@ -1265,6 +1265,7 @@ if (log.isDebugEnabled()) { log.debug("Removing Assessment results for user ID " + userId + " and toolContentId " + toolContentId); } + List sessions = assessmentSessionDao.getByContentId(toolContentId); for (AssessmentSession session : sessions) { List results = assessmentResultDao.getAssessmentResultsBySession(session.getSessionId(), @@ -1279,12 +1280,19 @@ AssessmentUser user = assessmentUserDao.getUserByUserIDAndSessionID(userId.longValue(), session.getSessionId()); if (user != null) { - user.setSessionFinished(false); - assessmentUserDao.saveObject(user); + NotebookEntry entry = getEntry(session.getSessionId(), userId); + if (entry != null) { + assessmentDao.removeObject(NotebookEntry.class, entry.getUid()); + } + + // propagade changes to Gradebook + gradebookService.updateActivityMark(null, null, userId, session.getSessionId(), false); + + assessmentUserDao.removeObject(AssessmentUser.class, user.getUid()); } } } - + public void createToolSession(Long toolSessionId, String toolSessionName, Long toolContentId) throws ToolException { AssessmentSession session = new AssessmentSession(); session.setSessionId(toolSessionId); Index: lams_tool_bbb/src/java/org/lamsfoundation/lams/tool/bbb/service/BbbService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_bbb/src/java/org/lamsfoundation/lams/tool/bbb/service/BbbService.java,v diff -u -r1.5 -r1.6 --- lams_tool_bbb/src/java/org/lamsfoundation/lams/tool/bbb/service/BbbService.java 2 Feb 2014 17:19:27 -0000 1.5 +++ lams_tool_bbb/src/java/org/lamsfoundation/lams/tool/bbb/service/BbbService.java 11 Feb 2014 13:59:57 -0000 1.6 @@ -207,10 +207,31 @@ public void removeLearnerContent(Long toolContentId, Integer userId) throws ToolException { if (logger.isDebugEnabled()) { - logger.debug("This tool does not support learner content removing yet."); + logger.debug("Resetting Web Conference completion flag for user ID " + userId + " and toolContentId " + + toolContentId); } + + Bbb bbb = getBbbByContentId(toolContentId); + if (bbb == null) { + logger.warn("Did not find activity with toolContentId: " + toolContentId + " to remove learner content"); + return; + } + + for (BbbSession session : bbb.getBbbSessions()) { + for (BbbUser user : session.getBbbUsers()) { + if (user.getUserId().equals(userId.longValue())) { + if (user.getNotebookEntryUID() != null) { + NotebookEntry entry = coreNotebookService.getEntry(user.getNotebookEntryUID()); + bbbDAO.delete(entry); + user.setNotebookEntryUID(null); + } + user.setFinishedActivity(false); + bbbUserDAO.update(user); + } + } + } } - + /** * Export the XML fragment for the tool's content, along with any files needed for the content. * Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java,v diff -u -r1.60 -r1.61 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java 2 Feb 2014 17:18:53 -0000 1.60 +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java 11 Feb 2014 13:59:38 -0000 1.61 @@ -43,6 +43,7 @@ import org.lamsfoundation.lams.learningdesign.service.IExportToolContentService; import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException; import org.lamsfoundation.lams.notebook.model.NotebookEntry; +import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; import org.lamsfoundation.lams.tool.ToolContentImport102Manager; import org.lamsfoundation.lams.tool.ToolContentManager; @@ -242,14 +243,20 @@ for (ChatSession session : (Set) chat.getChatSessions()) { ChatUser user = chatUserDAO.getByUserIdAndSessionId(userId.longValue(), session.getSessionId()); if (user != null) { - List messages = chatMessageDAO.getForUser(user); + List messages = chatMessageDAO.getSentByUser(user.getUid()); if (!messages.isEmpty()) { for (ChatMessage message : messages) { chatMessageDAO.delete(message); session.getChatMessages().remove(message); } } + NotebookEntry entry = getEntry(session.getSessionId(), CoreNotebookConstants.NOTEBOOK_TOOL, + ChatConstants.TOOL_SIGNATURE, userId); + if (entry != null) { + chatDAO.delete(entry); + } + user.setFinishedActivity(false); user.setLastPresence(null); chatUserDAO.update(user); Index: lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/service/DacoServiceImpl.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/service/DacoServiceImpl.java,v diff -u -r1.17 -r1.18 --- lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/service/DacoServiceImpl.java 2 Feb 2014 17:19:11 -0000 1.17 +++ lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/service/DacoServiceImpl.java 11 Feb 2014 14:00:02 -0000 1.18 @@ -723,7 +723,7 @@ } dacoDao.removeObject(Daco.class, daco.getUid()); } - + public void removeLearnerContent(Long toolContentId, Integer userId) throws ToolException { if (log.isDebugEnabled()) { log.debug("Removing Daco data for user ID " + userId + " and toolContentId " + toolContentId); @@ -742,10 +742,14 @@ } dacoAnswerDao.removeObject(DacoAnswer.class, answer.getUid()); } - user.getAnswers().clear(); - - user.setSessionFinished(false); - dacoUserDao.saveObject(user); + + NotebookEntry entry = getEntry(session.getSessionId(), CoreNotebookConstants.NOTEBOOK_TOOL, + DacoConstants.TOOL_SIGNATURE, userId); + if (entry != null) { + dacoDao.removeObject(NotebookEntry.class, entry.getUid()); + } + + dacoUserDao.removeObject(DacoUser.class, user.getUid()); } } } Index: lams_tool_eadventure/src/java/org/eucm/lams/tool/eadventure/service/EadventureServiceImpl.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_eadventure/src/java/org/eucm/lams/tool/eadventure/service/EadventureServiceImpl.java,v diff -u -r1.10 -r1.11 --- lams_tool_eadventure/src/java/org/eucm/lams/tool/eadventure/service/EadventureServiceImpl.java 2 Feb 2014 17:18:54 -0000 1.10 +++ lams_tool_eadventure/src/java/org/eucm/lams/tool/eadventure/service/EadventureServiceImpl.java 11 Feb 2014 14:00:16 -0000 1.11 @@ -1050,13 +1050,41 @@ } eadventureDao.delete(eadventure); } - + public void removeLearnerContent(Long toolContentId, Integer userId) throws ToolException { if (log.isDebugEnabled()) { - log.debug("This tool does not support learner content removing yet."); + log.debug("Removing Eadventure content for user ID " + userId + " and toolContentId " + toolContentId); } + + Eadventure eadventure = eadventureDao.getByContentId(toolContentId); + if (eadventure == null) { + log.warn("Did not find activity with toolContentId: " + toolContentId + " to remove learner content"); + return; + } + EadventureItemVisitLog visitLog = eadventureItemVisitDao.getEadventureItemLog(eadventure.getUid(), + userId.longValue()); + if (visitLog != null) { + eadventureItemVisitDao.removeObject(EadventureItemVisitLog.class, visitLog.getUid()); + } + + List sessions = eadventureSessionDao.getByContentId(toolContentId); + for (EadventureSession session : sessions) { + EadventureUser user = eadventureUserDao.getUserByUserIDAndSessionID(userId.longValue(), + session.getSessionId()); + if (user != null) { + NotebookEntry entry = getEntry(session.getSessionId(), CoreNotebookConstants.NOTEBOOK_TOOL, + EadventureConstants.TOOL_SIGNATURE, userId); + if (entry != null) { + eadventureDao.removeObject(NotebookEntry.class, entry.getUid()); + } + + gradebookService.updateActivityMark(null, null, userId, session.getSessionId(), false); + + eadventureUserDao.removeObject(EadventureUser.class, user.getUid()); + } + } } - + public void removeParams(Long toolContentId){ List params = getEadventureParamByContentId(toolContentId); if (params!=null){ 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.119 -r1.120 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java 2 Feb 2014 17:18:58 -0000 1.119 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java 11 Feb 2014 13:59:34 -0000 1.120 @@ -65,6 +65,7 @@ import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException; import org.lamsfoundation.lams.lesson.service.ILessonService; import org.lamsfoundation.lams.notebook.model.NotebookEntry; +import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; import org.lamsfoundation.lams.tool.ToolContentImport102Manager; import org.lamsfoundation.lams.tool.ToolContentManager; @@ -761,26 +762,63 @@ @SuppressWarnings("unchecked") public void removeLearnerContent(Long toolContentId, Integer userId) throws ToolException { if (log.isDebugEnabled()) { - log.debug("Hiding Forum messages for user ID " + userId + " and toolContentId " + toolContentId); + log.debug("Hiding or removing Forum messages for user ID " + userId + " and toolContentId " + toolContentId); } List sessionList = forumToolSessionDao.getByContentId(toolContentId); for (ForumToolSession session : sessionList) { Long sessionId = session.getSessionId(); - ForumUser learner = forumUserDao.getByUserIdAndSessionId(userId.longValue(), sessionId); - if (learner != null) { - List messages = messageDao.getByUserAndSession(learner.getUid(), sessionId); - for (Message message : messages) { - message.setHideFlag(true); - messageDao.update(message); + ForumUser user = forumUserDao.getByUserIdAndSessionId(userId.longValue(), sessionId); + if (user != null) { + List messages = messageDao.getByUserAndSession(user.getUid(), sessionId); + Iterator messageIterator = messages.iterator(); + while (messageIterator.hasNext()) { + Message message = messageIterator.next(); + + if (userOwnMessageTree(message, user.getUid())) { + messageSeqDao.deleteByTopicId(message.getUid()); + Timestamp timestamp = timestampDao.getTimestamp(message.getUid(), user.getUid()); + if (timestamp != null) { + timestampDao.delete(timestamp); + } + messageDao.delete(message.getUid()); + messageIterator.remove(); + } else { + message.setHideFlag(true); + messageDao.update(message); + } } - - learner.setSessionFinished(false); - forumUserDao.save(learner); + + NotebookEntry entry = getEntry(session.getSessionId(), CoreNotebookConstants.NOTEBOOK_TOOL, + ForumConstants.TOOL_SIGNATURE, userId); + if (entry != null) { + // hopefully it understands NotebookEntries + activityDAO.delete(entry); + } + + user.setSessionFinished(false); + forumUserDao.save(user); + + gradebookService.updateActivityMark(null, null, userId, session.getSessionId(), false); } } } + @SuppressWarnings("unchecked") + private boolean userOwnMessageTree(Message message, Long userUid) { + if (!message.getCreatedBy().getUid().equals(userUid)) { + return false; + } + List children = messageDao.getChildrenTopics(message.getUid()); + for (Message child : children) { + if (!userOwnMessageTree(child, userUid)) { + return false; + } + } + + return true; + } + /** * Export the XML fragment for the tool's content, along with any files needed for the content. * Index: lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/service/GmapService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/service/GmapService.java,v diff -u -r1.22 -r1.23 --- lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/service/GmapService.java 2 Feb 2014 17:19:16 -0000 1.22 +++ lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/service/GmapService.java 11 Feb 2014 14:00:09 -0000 1.23 @@ -24,8 +24,6 @@ package org.lamsfoundation.lams.tool.gmap.service; -import java.io.FileNotFoundException; -import java.io.IOException; import java.io.StringReader; import java.util.Date; import java.util.HashSet; @@ -40,25 +38,14 @@ import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; -import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; -import org.apache.struts.upload.FormFile; -import org.lamsfoundation.lams.contentrepository.AccessDeniedException; -import org.lamsfoundation.lams.contentrepository.ICredentials; -import org.lamsfoundation.lams.contentrepository.ITicket; -import org.lamsfoundation.lams.contentrepository.InvalidParameterException; -import org.lamsfoundation.lams.contentrepository.LoginException; -import org.lamsfoundation.lams.contentrepository.NodeKey; -import org.lamsfoundation.lams.contentrepository.RepositoryCheckedException; -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.SimpleCredentials; import org.lamsfoundation.lams.learning.service.ILearnerService; import org.lamsfoundation.lams.learningdesign.service.ExportToolContentException; import org.lamsfoundation.lams.learningdesign.service.IExportToolContentService; import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException; import org.lamsfoundation.lams.notebook.model.NotebookEntry; +import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; import org.lamsfoundation.lams.tool.ToolContentImport102Manager; import org.lamsfoundation.lams.tool.ToolContentManager; @@ -81,11 +68,8 @@ import org.lamsfoundation.lams.tool.gmap.model.GmapUser; import org.lamsfoundation.lams.tool.gmap.util.GmapConstants; import org.lamsfoundation.lams.tool.gmap.util.GmapException; -import org.lamsfoundation.lams.tool.gmap.util.GmapToolContentHandler; import org.lamsfoundation.lams.tool.service.ILamsToolService; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; -import org.lamsfoundation.lams.util.WebUtil; -import org.lamsfoundation.lams.util.audit.IAuditService; import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; import org.w3c.dom.Document; @@ -236,7 +220,7 @@ logger.warn("Did not find activity with toolContentId: " + toolContentId + " to remove learner content"); return; } - + Iterator markerIterator = gmap.getGmapMarkers().iterator(); while (markerIterator.hasNext()) { GmapMarker marker = markerIterator.next(); @@ -249,6 +233,12 @@ for (GmapSession session : gmap.getGmapSessions()) { GmapUser user = gmapUserDAO.getByUserIdAndSessionId(userId.longValue(), session.getSessionId()); if (user != null) { + NotebookEntry entry = getEntry(session.getSessionId(), CoreNotebookConstants.NOTEBOOK_TOOL, + GmapConstants.TOOL_SIGNATURE, userId); + if (entry != null) { + gmapDAO.delete(entry); + } + user.setFinishedActivity(false); gmapUserDAO.update(user); } Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java,v diff -u -r1.27 -r1.28 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java 2 Feb 2014 17:18:42 -0000 1.27 +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java 11 Feb 2014 13:59:48 -0000 1.28 @@ -921,8 +921,13 @@ ImageGalleryUser user = imageGalleryUserDao.getUserByUserIDAndContentID(userId.longValue(), toolContentId); if (user != null) { - user.setSessionFinished(false); - imageGalleryUserDao.saveObject(user); + NotebookEntry entry = getEntry(user.getSession().getSessionId(), CoreNotebookConstants.NOTEBOOK_TOOL, + ImageGalleryConstants.TOOL_SIGNATURE, userId); + if (entry != null) { + imageGalleryDao.removeObject(NotebookEntry.class, entry.getUid()); + } + + imageGalleryUserDao.removeObject(ImageGalleryUser.class, user.getUid()); } } Index: lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/service/CommonCartridgeServiceImpl.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/service/CommonCartridgeServiceImpl.java,v diff -u -r1.6 -r1.7 --- lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/service/CommonCartridgeServiceImpl.java 2 Feb 2014 17:19:14 -0000 1.6 +++ lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/service/CommonCartridgeServiceImpl.java 11 Feb 2014 13:59:45 -0000 1.7 @@ -900,12 +900,58 @@ commonCartridgeDao.delete(commonCartridge); } + @SuppressWarnings("unchecked") public void removeLearnerContent(Long toolContentId, Integer userId) throws ToolException { if (log.isDebugEnabled()) { - log.debug("This tool does not support learner content removing yet."); + log.debug("Removing Common Cartridge content for user ID " + userId + " and toolContentId " + toolContentId); } + + CommonCartridge cartridge = commonCartridgeDao.getByContentId(toolContentId); + if (cartridge == null) { + log.warn("Did not find activity with toolContentId: " + toolContentId + " to remove learner content"); + return; + } + + Iterator itemIterator = cartridge.getCommonCartridgeItems().iterator(); + while (itemIterator.hasNext()) { + CommonCartridgeItem item = itemIterator.next(); + CommonCartridgeItemVisitLog visitLog = commonCartridgeItemVisitDao.getCommonCartridgeItemLog(item.getUid(), + userId.longValue()); + if (visitLog != null) { + commonCartridgeItemVisitDao.removeObject(CommonCartridgeItemVisitLog.class, visitLog.getUid()); + } + + if (!item.isCreateByAuthor() && item.getCreateBy().getUserId().equals(userId.longValue())) { + if (item.getFileUuid() != null) { + try { + commonCartridgeToolContentHandler.deleteFile(item.getFileUuid()); + } catch (Exception e) { + throw new ToolException( + "Error while removing Common Cartridge file UUID " + item.getFileUuid(), e); + } + } + commonCartridgeItemDao.removeObject(CommonCartridgeItem.class, item.getUid()); + itemIterator.remove(); + } + } + + List sessions = commonCartridgeSessionDao.getByContentId(toolContentId); + + for (CommonCartridgeSession session : sessions) { + CommonCartridgeUser user = commonCartridgeUserDao.getUserByUserIDAndSessionID(userId.longValue(), + session.getSessionId()); + if (user != null) { + NotebookEntry entry = getEntry(session.getSessionId(), CoreNotebookConstants.NOTEBOOK_TOOL, + CommonCartridgeConstants.TOOL_SIGNATURE, userId); + if (entry != null) { + commonCartridgeDao.removeObject(NotebookEntry.class, entry.getUid()); + } + + commonCartridgeUserDao.removeObject(CommonCartridgeUser.class, user.getUserId()); + } + } } - + public void createToolSession(Long toolSessionId, String toolSessionName, Long toolContentId) throws ToolException { CommonCartridgeSession session = new CommonCartridgeSession(); session.setSessionId(toolSessionId); Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/IMcContentDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/IMcContentDAO.java,v diff -u -r1.12 -r1.13 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/IMcContentDAO.java 8 May 2013 13:18:26 -0000 1.12 +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/IMcContentDAO.java 11 Feb 2014 14:00:06 -0000 1.13 @@ -137,4 +137,6 @@ public List findAll(Class objClass); public void flush(); + + public void delete(Object object); } \ No newline at end of file Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/hibernate/McContentDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/hibernate/McContentDAO.java,v diff -u -r1.21 -r1.22 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/hibernate/McContentDAO.java 8 May 2013 13:18:26 -0000 1.21 +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/hibernate/McContentDAO.java 11 Feb 2014 14:00:06 -0000 1.22 @@ -127,4 +127,9 @@ public void flush() { this.getHibernateTemplate().flush(); } + + @Override + public void delete(Object object) { + getHibernateTemplate().delete(object); + } } Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java,v diff -u -r1.123 -r1.124 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java 2 Feb 2014 17:19:32 -0000 1.123 +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java 11 Feb 2014 14:00:06 -0000 1.124 @@ -923,7 +923,7 @@ // propagade changes to Gradebook int totalMark = (oldMark == null) ? oldTotalMark + newMark : oldTotalMark - oldMark + newMark; - gradebookService.updateActivityMark(new Double(totalMark), null, userId, toolSessionId, true); + gradebookService.updateActivityMark(new Double(totalMark), null, userId, toolSessionId, false); //record mark change with audit service auditService.logMarkChange(McAppConstants.MY_SIGNATURE, userAttempt.getMcQueUsr().getQueUsrId(), userAttempt @@ -1356,10 +1356,16 @@ McQueUsr user = mcUserDAO.getMcUserBySession(userId.longValue(), session.getUid()); if (user != null) { mcUsrAttemptDAO.removeAllUserAttempts(user.getUid()); - user.setResponseFinalised(false); - user.setLastAttemptTotalMark(null); - user.setNumberOfAttempts(0); - mcUserDAO.saveMcUser(user); + + NotebookEntry entry = getEntry(session.getMcSessionId(), CoreNotebookConstants.NOTEBOOK_TOOL, + McAppConstants.MY_SIGNATURE, userId); + if (entry != null) { + mcContentDAO.delete(entry); + } + + mcUserDAO.removeMcUser(user); + + gradebookService.updateActivityMark(null, null, userId, session.getMcSessionId(), false); } } } Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaContentDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaContentDAO.java,v diff -u -r1.14 -r1.15 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaContentDAO.java 18 Mar 2011 17:11:39 -0000 1.14 +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaContentDAO.java 11 Feb 2014 13:59:53 -0000 1.15 @@ -53,4 +53,6 @@ public void deleteCondition(QaCondition condition); public void removeQuestionsFromCache(QaContent qaContent); + + public void delete(Object object); } \ No newline at end of file Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaContentDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaContentDAO.java,v diff -u -r1.24 -r1.25 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaContentDAO.java 4 Jul 2013 10:27:29 -0000 1.24 +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaContentDAO.java 11 Feb 2014 13:59:53 -0000 1.25 @@ -139,4 +139,8 @@ } + @Override + public void delete(Object object) { + getHibernateTemplate().delete(object); + } } \ No newline at end of file Index: lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java,v diff -u -r1.101 -r1.102 --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java 2 Feb 2014 17:19:17 -0000 1.101 +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java 11 Feb 2014 13:59:53 -0000 1.102 @@ -698,11 +698,14 @@ for (QaUsrResp response : (Set) user.getQaUsrResps()) { qaUsrRespDAO.removeUserResponse(response); } - user.getQaUsrResps().clear(); - user.setLearnerFinished(false); - user.setResponseFinalized(false); - qaQueUsrDAO.updateUsr(user); + qaQueUsrDAO.deleteQaQueUsr(user); + + NotebookEntry entry = getEntry(session.getQaSessionId(), CoreNotebookConstants.NOTEBOOK_TOOL, + QaAppConstants.MY_SIGNATURE, userId); + if (entry != null) { + qaDAO.delete(entry); + } } } } Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java,v diff -u -r1.69 -r1.70 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java 2 Feb 2014 17:18:36 -0000 1.69 +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java 11 Feb 2014 14:00:04 -0000 1.70 @@ -987,40 +987,49 @@ log.debug("Removing Share Resources content for user ID " + userId + " and toolContentId " + toolContentId); } - List sessions = resourceSessionDao.getByContentId(toolContentId); - for (ResourceSession session : sessions) { - Iterator itemIterator = session.getResourceItems().iterator(); - while (itemIterator.hasNext()) { - ResourceItem item = itemIterator.next(); + Resource resource = resourceDao.getByContentId(toolContentId); + if (resource == null) { + log.warn("Did not find activity with toolContentId: " + toolContentId + " to remove learner content"); + return; + } - if (!item.isCreateByAuthor() && item.getCreateBy().getUserId().equals(userId.longValue())) { - ResourceItemVisitLog visitLog = resourceItemVisitDao.getResourceItemLog(item.getUid(), - userId.longValue()); - if (visitLog != null) { - resourceItemVisitDao.removeObject(ResourceItemVisitLog.class, visitLog.getUid()); - } + Iterator itemIterator = resource.getResourceItems().iterator(); + while (itemIterator.hasNext()) { + ResourceItem item = itemIterator.next(); + ResourceItemVisitLog visitLog = resourceItemVisitDao.getResourceItemLog(item.getUid(), userId.longValue()); + if (visitLog != null) { + resourceItemVisitDao.removeObject(ResourceItemVisitLog.class, visitLog.getUid()); + } - if (item.getFileUuid() != null) { - try { - resourceToolContentHandler.deleteFile(item.getFileUuid()); - } catch (Exception e) { - throw new ToolException("Error while removing Share Resources file UUID " - + item.getFileUuid(), e); - } + if (!item.isCreateByAuthor() && item.getCreateBy().getUserId().equals(userId.longValue())) { + if (item.getFileUuid() != null) { + try { + resourceToolContentHandler.deleteFile(item.getFileUuid()); + } catch (Exception e) { + throw new ToolException("Error while removing Share Resources file UUID " + item.getFileUuid(), + e); } - resourceItemDao.removeObject(ResourceItem.class, item.getUid()); - itemIterator.remove(); } + resourceItemDao.removeObject(ResourceItem.class, item.getUid()); + itemIterator.remove(); } - + } + + List sessions = resourceSessionDao.getByContentId(toolContentId); + for (ResourceSession session : sessions) { ResourceUser user = resourceUserDao.getUserByUserIDAndSessionID(userId.longValue(), session.getSessionId()); if (user != null) { - user.setSessionFinished(false); - resourceUserDao.saveObject(user); + NotebookEntry entry = getEntry(session.getSessionId(), CoreNotebookConstants.NOTEBOOK_TOOL, + ResourceConstants.TOOL_SIGNATURE, userId); + if (entry != null) { + resourceDao.removeObject(NotebookEntry.class, entry.getUid()); + } + + resourceUserDao.removeObject(ResourceUser.class, user.getUid()); } } } - + public void createToolSession(Long toolSessionId, String toolSessionName, Long toolContentId) throws ToolException { ResourceSession session = new ResourceSession(); session.setSessionId(toolSessionId); Index: lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/service/LeaderselectionService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/service/LeaderselectionService.java,v diff -u -r1.3 -r1.4 --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/service/LeaderselectionService.java 2 Feb 2014 17:18:40 -0000 1.3 +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/service/LeaderselectionService.java 11 Feb 2014 14:00:14 -0000 1.4 @@ -194,10 +194,12 @@ } for (LeaderselectionSession session : (Set) selection.getLeaderselectionSessions()) { + /* if (session.getGroupLeader() != null && session.getGroupLeader().getUserId().equals(userId.longValue())) { session.setGroupLeader(null); leaderselectionSessionDAO.update(session); } + */ LeaderselectionUser user = leaderselectionUserDAO.getByUserIdAndSessionId(userId.longValue(), session.getSessionId()); Index: lams_tool_mindmap/src/java/org/lamsfoundation/lams/tool/mindmap/service/MindmapService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_mindmap/src/java/org/lamsfoundation/lams/tool/mindmap/service/MindmapService.java,v diff -u -r1.12 -r1.13 --- lams_tool_mindmap/src/java/org/lamsfoundation/lams/tool/mindmap/service/MindmapService.java 2 Feb 2014 17:19:30 -0000 1.12 +++ lams_tool_mindmap/src/java/org/lamsfoundation/lams/tool/mindmap/service/MindmapService.java 11 Feb 2014 13:59:51 -0000 1.13 @@ -406,16 +406,6 @@ nodesToDelete.addAll(descendants); } } - MindmapUser user = mindmapUserDAO.getByUserIdAndSessionId(userId.longValue(), session.getSessionId()); - if (user != null) { - if (user.getEntryUID() != null) { - NotebookEntry entry = coreNotebookService.getEntry(user.getEntryUID()); - mindmapDAO.delete(entry); - user.setEntryUID(null); - mindmapUserDAO.update(user); - } - } - } for (MindmapNode node : nodesToDelete) { @@ -426,6 +416,18 @@ for (MindmapRequest request : requests) { mindmapRequestDAO.delete(request); } + + for (MindmapSession session : (Set) mindmap.getMindmapSessions()) { + MindmapUser user = mindmapUserDAO.getByUserIdAndSessionId(userId.longValue(), session.getSessionId()); + if (user != null) { + if (user.getEntryUID() != null) { + NotebookEntry entry = coreNotebookService.getEntry(user.getEntryUID()); + mindmapDAO.delete(entry); + } + + mindmapUserDAO.delete(user); + } + } } @SuppressWarnings("unchecked") Index: lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/dao/INoticeboardContentDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/dao/INoticeboardContentDAO.java,v diff -u -r1.6 -r1.7 --- lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/dao/INoticeboardContentDAO.java 17 Sep 2006 06:26:26 -0000 1.6 +++ lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/dao/INoticeboardContentDAO.java 11 Feb 2014 13:59:32 -0000 1.7 @@ -111,4 +111,5 @@ */ public void addNbSession(Long nbContentId, NoticeboardSession nbSession); + public void delete(Object object); } \ No newline at end of file Index: lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/dao/hibernate/NoticeboardContentDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/dao/hibernate/NoticeboardContentDAO.java,v diff -u -r1.8 -r1.9 --- lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/dao/hibernate/NoticeboardContentDAO.java 17 Sep 2006 06:26:26 -0000 1.8 +++ lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/dao/hibernate/NoticeboardContentDAO.java 11 Feb 2014 13:59:31 -0000 1.9 @@ -144,5 +144,10 @@ this.getHibernateTemplate().saveOrUpdate(nbSession); this.getHibernateTemplate().saveOrUpdate(content); } + + @Override + public void delete(Object object) { + getHibernateTemplate().delete(object); + } } Index: lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/service/NoticeboardServicePOJO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/service/NoticeboardServicePOJO.java,v diff -u -r1.50 -r1.51 --- lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/service/NoticeboardServicePOJO.java 2 Feb 2014 17:18:59 -0000 1.50 +++ lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/service/NoticeboardServicePOJO.java 11 Feb 2014 13:59:32 -0000 1.51 @@ -41,6 +41,7 @@ import org.lamsfoundation.lams.learningdesign.service.IExportToolContentService; import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException; import org.lamsfoundation.lams.notebook.model.NotebookEntry; +import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; import org.lamsfoundation.lams.tool.ToolContentImport102Manager; import org.lamsfoundation.lams.tool.ToolContentManager; @@ -632,7 +633,7 @@ @SuppressWarnings("unchecked") public void removeLearnerContent(Long toolContentId, Integer userId) throws ToolException { if (log.isDebugEnabled()) { - log.debug("Removing Noticeboard finished flat for user ID " + userId + " and toolContentId " + log.debug("Removing Noticeboard user for user ID " + userId + " and toolContentId " + toolContentId); } @@ -645,12 +646,17 @@ for (NoticeboardSession session : (Set) nbContent.getNbSessions()) { NoticeboardUser user = nbUserDAO.getNbUser(userId.longValue(), session.getNbSessionId()); if (user != null) { - user.setUserStatus(NoticeboardUser.INCOMPLETE); - nbUserDAO.updateNbUser(user); + NotebookEntry entry = getEntry(session.getNbSessionId(), CoreNotebookConstants.NOTEBOOK_TOOL, + NoticeboardConstants.TOOL_SIGNATURE, userId); + if (entry != null) { + nbContentDAO.delete(entry); + } + + nbUserDAO.removeNbUser(user.getUid()); } } } - + private NoticeboardContent getAndCheckIDandObject(Long toolContentId) throws ToolException, DataMissingException { if (toolContentId == null) { throw new ToolException("Tool content ID is missing. Unable to continue"); Index: lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/service/NotebookService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/service/NotebookService.java,v diff -u -r1.28 -r1.29 --- lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/service/NotebookService.java 2 Feb 2014 17:19:00 -0000 1.28 +++ lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/service/NotebookService.java 11 Feb 2014 13:59:42 -0000 1.29 @@ -205,11 +205,9 @@ if (user.getEntryUID() != null) { NotebookEntry entry = coreNotebookService.getEntry(user.getEntryUID()); notebookDAO.delete(entry); - user.setEntryUID(null); } - user.setFinishedActivity(false); - notebookUserDAO.update(user); + notebookUserDAO.delete(user); } } } Index: lams_tool_pixlr/src/java/org/lamsfoundation/lams/tool/pixlr/service/PixlrService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_pixlr/src/java/org/lamsfoundation/lams/tool/pixlr/service/PixlrService.java,v diff -u -r1.11 -r1.12 --- lams_tool_pixlr/src/java/org/lamsfoundation/lams/tool/pixlr/service/PixlrService.java 2 Feb 2014 17:18:44 -0000 1.11 +++ lams_tool_pixlr/src/java/org/lamsfoundation/lams/tool/pixlr/service/PixlrService.java 11 Feb 2014 14:00:11 -0000 1.12 @@ -53,6 +53,7 @@ import org.lamsfoundation.lams.learningdesign.service.IExportToolContentService; import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException; import org.lamsfoundation.lams.notebook.model.NotebookEntry; +import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; import org.lamsfoundation.lams.tool.ToolContentImport102Manager; import org.lamsfoundation.lams.tool.ToolContentManager; @@ -269,23 +270,18 @@ if (pixlr != null) { for (PixlrSession session : pixlr.getPixlrSessions()) { PixlrUser user = pixlrUserDAO.getByUserIdAndSessionId(userId.longValue(), session.getSessionId()); - user.setFinishedActivity(false); - user.setImageFileName(null); - user.setImageHeight(null); - user.setImageWidth(null); - user.setImageHidden(false); - user.setFinishedActivity(false); - if (user.getEntryUID() != null) { - NotebookEntry entry = coreNotebookService.getEntry(user.getEntryUID()); + NotebookEntry entry = getEntry(session.getSessionId(), CoreNotebookConstants.NOTEBOOK_TOOL, + PixlrConstants.TOOL_SIGNATURE, userId); + if (entry != null) { pixlrDAO.delete(entry); } - pixlrUserDAO.update(user); + pixlrUserDAO.delete(user); } } } } - + /** * Export the XML fragment for the tool's content, along with any files needed for the content. * 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.89 -r1.90 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java 2 Feb 2014 17:19:25 -0000 1.89 +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java 11 Feb 2014 13:59:43 -0000 1.90 @@ -67,6 +67,7 @@ import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException; import org.lamsfoundation.lams.lesson.service.ILessonService; import org.lamsfoundation.lams.notebook.model.NotebookEntry; +import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; import org.lamsfoundation.lams.tool.ToolContentImport102Manager; import org.lamsfoundation.lams.tool.ToolContentManager; @@ -237,8 +238,15 @@ SubmitUser user = submitUserDAO.getLearner(session.getSessionID(), userId); if (user != null) { - user.setFinished(false); - submitUserDAO.update(user); + NotebookEntry entry = getEntry(session.getSessionID(), CoreNotebookConstants.NOTEBOOK_TOOL, + SbmtConstants.TOOL_SIGNATURE, userId); + if (entry != null) { + submitFilesContentDAO.delete(entry); + } + + gradebookService.updateActivityMark(null, null, user.getUserID(), session.getSessionID(), false); + + submitUserDAO.delete(user); } } } Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java,v diff -u -r1.42 -r1.43 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java 2 Feb 2014 17:19:18 -0000 1.42 +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java 11 Feb 2014 14:00:13 -0000 1.43 @@ -303,7 +303,7 @@ for (ScratchieUser user : users) { gradebookService.updateActivityMark(new Double(newMark), null, user.getUserId().intValue(), user - .getSession().getSessionId(), true); + .getSession().getSessionId(), false); // record mark change with audit service auditService.logMarkChange(ScratchieConstants.TOOL_SIGNATURE, user.getUserId(), user.getLoginName(), "" @@ -437,7 +437,7 @@ + user.getUserId() + " and ScratchieSession ID: " + user.getSession().getSessionId()); } gradebookService.updateActivityMark(new Double(mark), null, user.getUserId().intValue(), user - .getSession().getSessionId(), true); + .getSession().getSessionId(), false); } } if (ScratchieServiceImpl.log.isDebugEnabled()) { @@ -1827,10 +1827,28 @@ public void removeLearnerContent(Long toolContentId, Integer userId) throws ToolException { if (log.isDebugEnabled()) { - log.debug("This tool does not support learner content removing yet."); + log.debug("Removing Scratchie content for user ID " + userId + " and toolContentId " + toolContentId); } + + List sessions = scratchieSessionDao.getByContentId(toolContentId); + for (ScratchieSession session : sessions) { + ScratchieUser user = scratchieUserDao.getUserByUserIDAndSessionID(userId.longValue(), + session.getSessionId()); + + if (user != null) { + NotebookEntry entry = getEntry(session.getSessionId(), CoreNotebookConstants.NOTEBOOK_TOOL, + ScratchieConstants.TOOL_SIGNATURE, userId); + if (entry != null) { + scratchieDao.removeObject(NotebookEntry.class, entry.getUid()); + } + + scratchieUserDao.removeObject(ScratchieUser.class, user.getUid()); + + gradebookService.updateActivityMark(null, null, userId, session.getSessionId(), false); + } + } } - + @Override public void createToolSession(Long toolSessionId, String toolSessionName, Long toolContentId) throws ToolException { if (ScratchieServiceImpl.log.isDebugEnabled()) { Index: lams_tool_scribe/src/java/org/lamsfoundation/lams/tool/scribe/service/ScribeService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scribe/src/java/org/lamsfoundation/lams/tool/scribe/service/ScribeService.java,v diff -u -r1.27 -r1.28 --- lams_tool_scribe/src/java/org/lamsfoundation/lams/tool/scribe/service/ScribeService.java 2 Feb 2014 17:19:35 -0000 1.27 +++ lams_tool_scribe/src/java/org/lamsfoundation/lams/tool/scribe/service/ScribeService.java 11 Feb 2014 13:59:37 -0000 1.28 @@ -54,6 +54,7 @@ import org.lamsfoundation.lams.learningdesign.service.IExportToolContentService; import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException; import org.lamsfoundation.lams.notebook.model.NotebookEntry; +import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; import org.lamsfoundation.lams.tool.ToolContentImport102Manager; import org.lamsfoundation.lams.tool.ToolContentManager; @@ -221,16 +222,32 @@ for (ScribeSession session : (Set) scribe.getScribeSessions()) { if (session.getAppointedScribe() != null && session.getAppointedScribe().getUserId().equals(userId.longValue())) { + + for (ScribeUser user : (Set) session.getScribeUsers()) { + if (user.getUserId().equals(userId.longValue())) { + scribeUserDAO.delete(user); + } else { + user.setReportApproved(false); + scribeUserDAO.saveOrUpdate(user); + } + } + session.setAppointedScribe(null); + session.setForceComplete(false); + session.setReportSubmitted(false); + session.getScribeReportEntries().clear(); scribeSessionDAO.update(session); + } else { + ScribeUser user = scribeUserDAO.getByUserIdAndSessionId(userId.longValue(), session.getSessionId()); + if (user != null) { + scribeUserDAO.delete(user); + } } - ScribeUser user = scribeUserDAO.getByUserIdAndSessionId(userId.longValue(), session.getSessionId()); - if (user != null) { - user.setFinishedActivity(false); - user.setStartedActivity(false); - user.setReportApproved(false); - scribeUserDAO.saveOrUpdate(user); + NotebookEntry entry = getEntry(session.getSessionId(), CoreNotebookConstants.NOTEBOOK_TOOL, + ScribeConstants.TOOL_SIGNATURE, userId); + if (entry != null) { + scribeDAO.delete(entry); } } } Index: lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/service/SpreadsheetServiceImpl.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/service/SpreadsheetServiceImpl.java,v diff -u -r1.11 -r1.12 --- lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/service/SpreadsheetServiceImpl.java 2 Feb 2014 17:19:22 -0000 1.11 +++ lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/service/SpreadsheetServiceImpl.java 11 Feb 2014 13:59:50 -0000 1.12 @@ -608,13 +608,19 @@ if (user.getUserModifiedSpreadsheet() != null) { userModifiedSpreadsheetDao.removeObject(UserModifiedSpreadsheet.class, user .getUserModifiedSpreadsheet().getUid()); - user.setUserModifiedSpreadsheet(null); } - spreadsheetUserDao.saveObject(user); + + NotebookEntry entry = getEntry(session.getSessionId(), CoreNotebookConstants.NOTEBOOK_TOOL, + SpreadsheetConstants.TOOL_SIGNATURE, userId); + if (entry != null) { + spreadsheetDao.removeObject(NotebookEntry.class, entry.getUid()); + } + + spreadsheetUserDao.removeObject(SpreadsheetUser.class, user.getUid()); } } } - + public void createToolSession(Long toolSessionId, String toolSessionName, Long toolContentId) throws ToolException { SpreadsheetSession session = new SpreadsheetSession(); session.setSessionId(toolSessionId); Index: lams_tool_survey/src/java/org/lamsfoundation/lams/tool/survey/service/SurveyServiceImpl.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_survey/src/java/org/lamsfoundation/lams/tool/survey/service/SurveyServiceImpl.java,v diff -u -r1.33 -r1.34 --- lams_tool_survey/src/java/org/lamsfoundation/lams/tool/survey/service/SurveyServiceImpl.java 2 Feb 2014 17:18:41 -0000 1.33 +++ lams_tool_survey/src/java/org/lamsfoundation/lams/tool/survey/service/SurveyServiceImpl.java 11 Feb 2014 13:59:35 -0000 1.34 @@ -23,8 +23,6 @@ /* $$Id$$ */ package org.lamsfoundation.lams.tool.survey.service; -import java.io.FileNotFoundException; -import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -44,17 +42,6 @@ import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; -import org.apache.struts.upload.FormFile; -import org.lamsfoundation.lams.contentrepository.AccessDeniedException; -import org.lamsfoundation.lams.contentrepository.ICredentials; -import org.lamsfoundation.lams.contentrepository.ITicket; -import org.lamsfoundation.lams.contentrepository.InvalidParameterException; -import org.lamsfoundation.lams.contentrepository.LoginException; -import org.lamsfoundation.lams.contentrepository.NodeKey; -import org.lamsfoundation.lams.contentrepository.RepositoryCheckedException; -import org.lamsfoundation.lams.contentrepository.WorkspaceNotFoundException; -import org.lamsfoundation.lams.contentrepository.service.IRepositoryService; -import org.lamsfoundation.lams.contentrepository.service.SimpleCredentials; import org.lamsfoundation.lams.events.IEventNotificationService; import org.lamsfoundation.lams.learning.service.ILearnerService; import org.lamsfoundation.lams.learningdesign.service.ExportToolContentException; @@ -99,7 +86,6 @@ import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.WebUtil; -import org.lamsfoundation.lams.util.audit.IAuditService; import org.lamsfoundation.lams.util.wddx.WDDXProcessor; import org.lamsfoundation.lams.util.wddx.WDDXProcessorConversionException; @@ -712,13 +698,21 @@ surveyAnswerDao.removeObject(SurveyAnswer.class, answer.getUid()); } - SurveyUser user = surveyUserDao.getUserByUserIDAndContentID(userId.longValue(), toolContentId); - if (user != null) { - user.setSessionFinished(false); - surveyUserDao.saveObject(user); + List sessions = surveySessionDao.getByContentId(toolContentId); + for (SurveySession session : sessions) { + SurveyUser user = surveyUserDao.getUserByUserIDAndSessionID(userId.longValue(), session.getSessionId()); + if (user != null) { + NotebookEntry entry = getEntry(session.getSessionId(), CoreNotebookConstants.NOTEBOOK_TOOL, + SurveyConstants.TOOL_SIGNATURE, userId); + if (entry != null) { + surveyDao.removeObject(NotebookEntry.class, entry.getUid()); + } + + surveyUserDao.removeObject(SurveyUser.class, user.getUid()); + } } } - + public void createToolSession(Long toolSessionId, String toolSessionName, Long toolContentId) throws ToolException { SurveySession session = new SurveySession(); session.setSessionId(toolSessionId); Index: lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/service/TaskListServiceImpl.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/service/TaskListServiceImpl.java,v diff -u -r1.34 -r1.35 --- lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/service/TaskListServiceImpl.java 4 Feb 2014 14:09:50 -0000 1.34 +++ lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/service/TaskListServiceImpl.java 11 Feb 2014 13:59:40 -0000 1.35 @@ -934,9 +934,13 @@ for (TaskListSession session : sessions) { TaskListUser user = taskListUserDao.getUserByUserIDAndSessionID(userId.longValue(), session.getSessionId()); if (user != null) { - user.setSessionFinished(false); - user.setVerifiedByMonitor(false); - taskListUserDao.saveObject(user); + NotebookEntry entry = getEntry(user.getSession().getSessionId(), CoreNotebookConstants.NOTEBOOK_TOOL, + TaskListConstants.TOOL_SIGNATURE, userId); + if (entry != null) { + taskListDao.removeObject(NotebookEntry.class, entry.getUid()); + } + + taskListUserDao.removeObject(TaskListUser.class, user.getUid()); } } } Index: lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/dao/IVoteContentDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/dao/IVoteContentDAO.java,v diff -u -r1.7 -r1.8 --- lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/dao/IVoteContentDAO.java 9 Dec 2008 05:38:13 -0000 1.7 +++ lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/dao/IVoteContentDAO.java 11 Feb 2014 14:00:08 -0000 1.8 @@ -60,4 +60,6 @@ public void flush(); public void removeNominationsFromCache(VoteContent voteContent); + + public void delete(Object object); } \ No newline at end of file Index: lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/dao/hibernate/VoteContentDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/dao/hibernate/VoteContentDAO.java,v diff -u -r1.8 -r1.9 --- lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/dao/hibernate/VoteContentDAO.java 4 Jul 2013 15:01:25 -0000 1.8 +++ lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/dao/hibernate/VoteContentDAO.java 11 Feb 2014 14:00:08 -0000 1.9 @@ -144,4 +144,9 @@ } } + + @Override + public void delete(Object object) { + getHibernateTemplate().delete(object); + } } Index: lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/service/VoteServicePOJO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/service/VoteServicePOJO.java,v diff -u -r1.79 -r1.80 --- lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/service/VoteServicePOJO.java 6 Feb 2014 22:07:15 -0000 1.79 +++ lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/service/VoteServicePOJO.java 11 Feb 2014 14:00:08 -0000 1.80 @@ -544,14 +544,14 @@ VoteUsrAttempt voteUsrAttempt = (VoteUsrAttempt) itUserRecords.next(); if (!showUserEntriesBySession) { - voteMonitoredUserDTO.setAttemptTime(voteUsrAttempt.getAttemptTime()); - voteMonitoredUserDTO.setTimeZone(voteUsrAttempt.getTimeZone()); - voteMonitoredUserDTO.setUserName(voteUsrAttempt.getVoteQueUsr().getFullname()); - voteMonitoredUserDTO.setQueUsrId(voteUsrAttempt.getVoteQueUsr().getUid().toString()); - voteMonitoredUserDTO.setUserEntry(voteUsrAttempt.getUserEntry()); - voteMonitoredUserDTO.setUid(voteUsrAttempt.getUid().toString()); - voteMonitoredUserDTO.setVisible(new Boolean(voteUsrAttempt.isVisible()).toString()); - listMonitoredUserContainerDTO.add(voteMonitoredUserDTO); + voteMonitoredUserDTO.setAttemptTime(voteUsrAttempt.getAttemptTime()); + voteMonitoredUserDTO.setTimeZone(voteUsrAttempt.getTimeZone()); + voteMonitoredUserDTO.setUserName(voteUsrAttempt.getVoteQueUsr().getFullname()); + voteMonitoredUserDTO.setQueUsrId(voteUsrAttempt.getVoteQueUsr().getUid().toString()); + voteMonitoredUserDTO.setUserEntry(voteUsrAttempt.getUserEntry()); + voteMonitoredUserDTO.setUid(voteUsrAttempt.getUid().toString()); + voteMonitoredUserDTO.setVisible(new Boolean(voteUsrAttempt.isVisible()).toString()); + listMonitoredUserContainerDTO.add(voteMonitoredUserDTO); } else { // showUserEntriesBySession is true: the case with learner export portfolio @@ -560,39 +560,39 @@ .toString(); if (showUserEntriesByUserId) { - if (userSessionId.equals(currentSessionId)) { - String localUserId = voteUsrAttempt.getVoteQueUsr().getQueUsrId().toString(); - if (userId.equals(localUserId)) { - voteMonitoredUserDTO.setAttemptTime(voteUsrAttempt.getAttemptTime()); - voteMonitoredUserDTO.setTimeZone(voteUsrAttempt.getTimeZone()); - voteMonitoredUserDTO.setUserName(voteUsrAttempt.getVoteQueUsr().getFullname()); + if (userSessionId.equals(currentSessionId)) { + String localUserId = voteUsrAttempt.getVoteQueUsr().getQueUsrId().toString(); + if (userId.equals(localUserId)) { + voteMonitoredUserDTO.setAttemptTime(voteUsrAttempt.getAttemptTime()); + voteMonitoredUserDTO.setTimeZone(voteUsrAttempt.getTimeZone()); + voteMonitoredUserDTO.setUserName(voteUsrAttempt.getVoteQueUsr().getFullname()); voteMonitoredUserDTO .setQueUsrId(voteUsrAttempt.getVoteQueUsr().getUid().toString()); - voteMonitoredUserDTO.setUserEntry(voteUsrAttempt.getUserEntry()); - listMonitoredUserContainerDTO.add(voteMonitoredUserDTO); - voteMonitoredUserDTO.setUid(voteUsrAttempt.getUid().toString()); + voteMonitoredUserDTO.setUserEntry(voteUsrAttempt.getUserEntry()); + listMonitoredUserContainerDTO.add(voteMonitoredUserDTO); + voteMonitoredUserDTO.setUid(voteUsrAttempt.getUid().toString()); voteMonitoredUserDTO.setVisible(new Boolean(voteUsrAttempt.isVisible()).toString()); - if (voteUsrAttempt.isVisible() == false) { - voteMonitoredAnswersDTO.setQuestion("Nomination Hidden"); - } + if (voteUsrAttempt.isVisible() == false) { + voteMonitoredAnswersDTO.setQuestion("Nomination Hidden"); + } + } } - } } else { // showUserEntriesByUserId is false // show user entries by same session - if (userSessionId.equals(currentSessionId)) { - voteMonitoredUserDTO.setAttemptTime(voteUsrAttempt.getAttemptTime()); - voteMonitoredUserDTO.setTimeZone(voteUsrAttempt.getTimeZone()); - voteMonitoredUserDTO.setUserName(voteUsrAttempt.getVoteQueUsr().getFullname()); + if (userSessionId.equals(currentSessionId)) { + voteMonitoredUserDTO.setAttemptTime(voteUsrAttempt.getAttemptTime()); + voteMonitoredUserDTO.setTimeZone(voteUsrAttempt.getTimeZone()); + voteMonitoredUserDTO.setUserName(voteUsrAttempt.getVoteQueUsr().getFullname()); voteMonitoredUserDTO.setQueUsrId(voteUsrAttempt.getVoteQueUsr().getUid().toString()); - voteMonitoredUserDTO.setUserEntry(voteUsrAttempt.getUserEntry()); - listMonitoredUserContainerDTO.add(voteMonitoredUserDTO); - voteMonitoredUserDTO.setUid(voteUsrAttempt.getUid().toString()); - voteMonitoredUserDTO.setVisible(new Boolean(voteUsrAttempt.isVisible()).toString()); + voteMonitoredUserDTO.setUserEntry(voteUsrAttempt.getUserEntry()); + listMonitoredUserContainerDTO.add(voteMonitoredUserDTO); + voteMonitoredUserDTO.setUid(voteUsrAttempt.getUid().toString()); + voteMonitoredUserDTO.setVisible(new Boolean(voteUsrAttempt.isVisible()).toString()); + } } } - } } @@ -1487,11 +1487,14 @@ VoteQueUsr user = voteUserDAO.getVoteUserBySession(userId.longValue(), session.getUid()); if (user != null) { voteUsrAttemptDAO.removeAttemptsForUserandSession(user.getUid(), session.getUid()); - user.getVoteUsrAttempts().clear(); - - user.setFinalScreenRequested(false); - user.setResponseFinalised(false); - voteUserDAO.updateVoteUser(user); + + NotebookEntry entry = getEntry(session.getVoteSessionId(), CoreNotebookConstants.NOTEBOOK_TOOL, + VoteAppConstants.MY_SIGNATURE, userId); + if (entry != null) { + voteContentDAO.delete(entry); + } + + voteUserDAO.removeVoteUser(user); } } } Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/service/WikiService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/service/WikiService.java,v diff -u -r1.22 -r1.23 --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/service/WikiService.java 2 Feb 2014 17:18:50 -0000 1.22 +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/service/WikiService.java 11 Feb 2014 14:00:00 -0000 1.23 @@ -43,6 +43,7 @@ import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException; import org.lamsfoundation.lams.lesson.service.ILessonService; import org.lamsfoundation.lams.notebook.model.NotebookEntry; +import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; import org.lamsfoundation.lams.tool.ToolContentImport102Manager; import org.lamsfoundation.lams.tool.ToolContentManager; @@ -289,22 +290,24 @@ } for (WikiSession session : wiki.getWikiSessions()) { + /* for (WikiPage page : session.getWikiPages()) { - if (page.getAddedBy() != null && page.getAddedBy().getUserId().equals(userId.longValue())) { - page.setDeleted(true); - wikiPageDAO.update(page); - } + if (page.getAddedBy() != null && page.getAddedBy().getUserId().equals(userId.longValue())) { + page.setDeleted(true); + wikiPageDAO.update(page); + } } + */ WikiUser user = wikiUserDAO.getByUserIdAndSessionId(userId.longValue(), session.getSessionId()); if (user != null) { - if (user.getEntryUID() != null) { - NotebookEntry entry = coreNotebookService.getEntry(user.getEntryUID()); + NotebookEntry entry = getEntry(session.getSessionId(), CoreNotebookConstants.NOTEBOOK_TOOL, + WikiConstants.TOOL_SIGNATURE, userId); + if (entry != null) { wikiDAO.delete(entry); - user.setEntryUID(null); } user.setFinishedActivity(false); - user.setWikiEdits(0); + // user.setWikiEdits(0); wikiUserDAO.update(user); } } Index: lams_tool_wookie/src/java/org/lamsfoundation/lams/tool/wookie/service/WookieService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_wookie/src/java/org/lamsfoundation/lams/tool/wookie/service/WookieService.java,v diff -u -r1.11 -r1.12 --- lams_tool_wookie/src/java/org/lamsfoundation/lams/tool/wookie/service/WookieService.java 2 Feb 2014 17:19:23 -0000 1.11 +++ lams_tool_wookie/src/java/org/lamsfoundation/lams/tool/wookie/service/WookieService.java 11 Feb 2014 14:00:03 -0000 1.12 @@ -26,34 +26,21 @@ import java.io.File; import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.FileOutputStream; -import java.io.IOException; import java.util.Date; import java.util.Hashtable; import java.util.List; -import java.util.Set; import java.util.SortedMap; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; -import org.apache.struts.upload.FormFile; -import org.lamsfoundation.lams.contentrepository.AccessDeniedException; -import org.lamsfoundation.lams.contentrepository.ICredentials; -import org.lamsfoundation.lams.contentrepository.ITicket; -import org.lamsfoundation.lams.contentrepository.InvalidParameterException; -import org.lamsfoundation.lams.contentrepository.LoginException; -import org.lamsfoundation.lams.contentrepository.NodeKey; -import org.lamsfoundation.lams.contentrepository.RepositoryCheckedException; -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.SimpleCredentials; import org.lamsfoundation.lams.learning.service.ILearnerService; import org.lamsfoundation.lams.learningdesign.service.ExportToolContentException; import org.lamsfoundation.lams.learningdesign.service.IExportToolContentService; import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException; import org.lamsfoundation.lams.notebook.model.NotebookEntry; +import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; import org.lamsfoundation.lams.tool.ToolContentImport102Manager; import org.lamsfoundation.lams.tool.ToolContentManager; @@ -76,14 +63,12 @@ import org.lamsfoundation.lams.tool.wookie.model.WookieUser; import org.lamsfoundation.lams.tool.wookie.util.WookieConstants; import org.lamsfoundation.lams.tool.wookie.util.WookieException; -import org.lamsfoundation.lams.tool.wookie.util.WookieToolContentHandler; import org.lamsfoundation.lams.tool.wookie.util.WookieUtil; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.WebUtil; -import org.lamsfoundation.lams.util.audit.IAuditService; /** * An implementation of the IWookieService interface. @@ -342,13 +327,33 @@ throws SessionDataExistsException, ToolException { // TODO Auto-generated method stub } - - public void removeLearnerContent(Long toolContentId, Integer userId) throws ToolException { - if (logger.isDebugEnabled()) { - logger.debug("This tool does not support learner content removing yet."); + + public void removeLearnerContent(Long toolContentId, Integer userId) throws ToolException { + if (logger.isDebugEnabled()) { + logger.debug("Resetting Wookie completion flag for user ID " + userId + " and toolContentId " + + toolContentId); + } + + Wookie wookie = getWookieByContentId(toolContentId); + if (wookie == null) { + logger.warn("Did not find activity with toolContentId: " + toolContentId + " to remove learner content"); + return; + } + + for (WookieSession session : wookie.getWookieSessions()) { + WookieUser user = wookieUserDAO.getByUserIdAndSessionId(userId.longValue(), session.getSessionId()); + if (user != null) { + NotebookEntry entry = getEntry(session.getSessionId(), CoreNotebookConstants.NOTEBOOK_TOOL, + WookieConstants.TOOL_SIGNATURE, userId); + if (entry != null) { + wookieDAO.delete(entry); } + user.setFinishedActivity(false); + wookieUserDAO.update(user); } - + + } + } /** * Export the XML fragment for the tool's content, along with any files * needed for the content.