Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== diff -u -r1f99e9e8ee4dde5436ca0e586ecb7d2f9b6afef2 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 1f99e9e8ee4dde5436ca0e586ecb7d2f9b6afef2) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r15045d0b9b0dbb930f42a9da7757207e7a325341 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 15045d0b9b0dbb930f42a9da7757207e7a325341) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r15045d0b9b0dbb930f42a9da7757207e7a325341 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_bbb/src/java/org/lamsfoundation/lams/tool/bbb/service/BbbService.java (.../BbbService.java) (revision 15045d0b9b0dbb930f42a9da7757207e7a325341) +++ lams_tool_bbb/src/java/org/lamsfoundation/lams/tool/bbb/service/BbbService.java (.../BbbService.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r15045d0b9b0dbb930f42a9da7757207e7a325341 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java (.../ChatService.java) (revision 15045d0b9b0dbb930f42a9da7757207e7a325341) +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java (.../ChatService.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r15045d0b9b0dbb930f42a9da7757207e7a325341 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/service/DacoServiceImpl.java (.../DacoServiceImpl.java) (revision 15045d0b9b0dbb930f42a9da7757207e7a325341) +++ lams_tool_daco/src/java/org/lamsfoundation/lams/tool/daco/service/DacoServiceImpl.java (.../DacoServiceImpl.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r15045d0b9b0dbb930f42a9da7757207e7a325341 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_eadventure/src/java/org/eucm/lams/tool/eadventure/service/EadventureServiceImpl.java (.../EadventureServiceImpl.java) (revision 15045d0b9b0dbb930f42a9da7757207e7a325341) +++ lams_tool_eadventure/src/java/org/eucm/lams/tool/eadventure/service/EadventureServiceImpl.java (.../EadventureServiceImpl.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r15045d0b9b0dbb930f42a9da7757207e7a325341 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java (.../ForumService.java) (revision 15045d0b9b0dbb930f42a9da7757207e7a325341) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java (.../ForumService.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r15045d0b9b0dbb930f42a9da7757207e7a325341 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/service/GmapService.java (.../GmapService.java) (revision 15045d0b9b0dbb930f42a9da7757207e7a325341) +++ lams_tool_gmap/src/java/org/lamsfoundation/lams/tool/gmap/service/GmapService.java (.../GmapService.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r15045d0b9b0dbb930f42a9da7757207e7a325341 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java (.../ImageGalleryServiceImpl.java) (revision 15045d0b9b0dbb930f42a9da7757207e7a325341) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/service/ImageGalleryServiceImpl.java (.../ImageGalleryServiceImpl.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r15045d0b9b0dbb930f42a9da7757207e7a325341 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/service/CommonCartridgeServiceImpl.java (.../CommonCartridgeServiceImpl.java) (revision 15045d0b9b0dbb930f42a9da7757207e7a325341) +++ lams_tool_imscc/src/java/org/lamsfoundation/lams/tool/commonCartridge/service/CommonCartridgeServiceImpl.java (.../CommonCartridgeServiceImpl.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r8ddb4345fdfc8904e5a7ff156cc63053e63741ca -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/IMcContentDAO.java (.../IMcContentDAO.java) (revision 8ddb4345fdfc8904e5a7ff156cc63053e63741ca) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/IMcContentDAO.java (.../IMcContentDAO.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r8ddb4345fdfc8904e5a7ff156cc63053e63741ca -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/hibernate/McContentDAO.java (.../McContentDAO.java) (revision 8ddb4345fdfc8904e5a7ff156cc63053e63741ca) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/hibernate/McContentDAO.java (.../McContentDAO.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r15045d0b9b0dbb930f42a9da7757207e7a325341 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java (.../McServicePOJO.java) (revision 15045d0b9b0dbb930f42a9da7757207e7a325341) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java (.../McServicePOJO.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r91f0740e75daa643981b757e49d1ed2ed7f0a528 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaContentDAO.java (.../IQaContentDAO.java) (revision 91f0740e75daa643981b757e49d1ed2ed7f0a528) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/IQaContentDAO.java (.../IQaContentDAO.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r629b2631320321b57015e15be850e7c6b747225f -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaContentDAO.java (.../QaContentDAO.java) (revision 629b2631320321b57015e15be850e7c6b747225f) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/dao/hibernate/QaContentDAO.java (.../QaContentDAO.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r15045d0b9b0dbb930f42a9da7757207e7a325341 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java (.../QaServicePOJO.java) (revision 15045d0b9b0dbb930f42a9da7757207e7a325341) +++ lams_tool_laqa/src/java/org/lamsfoundation/lams/tool/qa/service/QaServicePOJO.java (.../QaServicePOJO.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r15045d0b9b0dbb930f42a9da7757207e7a325341 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java (.../ResourceServiceImpl.java) (revision 15045d0b9b0dbb930f42a9da7757207e7a325341) +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java (.../ResourceServiceImpl.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r15045d0b9b0dbb930f42a9da7757207e7a325341 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/service/LeaderselectionService.java (.../LeaderselectionService.java) (revision 15045d0b9b0dbb930f42a9da7757207e7a325341) +++ lams_tool_leader/src/java/org/lamsfoundation/lams/tool/leaderselection/service/LeaderselectionService.java (.../LeaderselectionService.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r15045d0b9b0dbb930f42a9da7757207e7a325341 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_mindmap/src/java/org/lamsfoundation/lams/tool/mindmap/service/MindmapService.java (.../MindmapService.java) (revision 15045d0b9b0dbb930f42a9da7757207e7a325341) +++ lams_tool_mindmap/src/java/org/lamsfoundation/lams/tool/mindmap/service/MindmapService.java (.../MindmapService.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/dao/INoticeboardContentDAO.java (.../INoticeboardContentDAO.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf) +++ lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/dao/INoticeboardContentDAO.java (.../INoticeboardContentDAO.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/dao/hibernate/NoticeboardContentDAO.java (.../NoticeboardContentDAO.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf) +++ lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/dao/hibernate/NoticeboardContentDAO.java (.../NoticeboardContentDAO.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r15045d0b9b0dbb930f42a9da7757207e7a325341 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/service/NoticeboardServicePOJO.java (.../NoticeboardServicePOJO.java) (revision 15045d0b9b0dbb930f42a9da7757207e7a325341) +++ lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/service/NoticeboardServicePOJO.java (.../NoticeboardServicePOJO.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r15045d0b9b0dbb930f42a9da7757207e7a325341 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/service/NotebookService.java (.../NotebookService.java) (revision 15045d0b9b0dbb930f42a9da7757207e7a325341) +++ lams_tool_notebook/src/java/org/lamsfoundation/lams/tool/notebook/service/NotebookService.java (.../NotebookService.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r15045d0b9b0dbb930f42a9da7757207e7a325341 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_pixlr/src/java/org/lamsfoundation/lams/tool/pixlr/service/PixlrService.java (.../PixlrService.java) (revision 15045d0b9b0dbb930f42a9da7757207e7a325341) +++ lams_tool_pixlr/src/java/org/lamsfoundation/lams/tool/pixlr/service/PixlrService.java (.../PixlrService.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r15045d0b9b0dbb930f42a9da7757207e7a325341 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java (.../SubmitFilesService.java) (revision 15045d0b9b0dbb930f42a9da7757207e7a325341) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java (.../SubmitFilesService.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r15045d0b9b0dbb930f42a9da7757207e7a325341 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java (.../ScratchieServiceImpl.java) (revision 15045d0b9b0dbb930f42a9da7757207e7a325341) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java (.../ScratchieServiceImpl.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r15045d0b9b0dbb930f42a9da7757207e7a325341 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_scribe/src/java/org/lamsfoundation/lams/tool/scribe/service/ScribeService.java (.../ScribeService.java) (revision 15045d0b9b0dbb930f42a9da7757207e7a325341) +++ lams_tool_scribe/src/java/org/lamsfoundation/lams/tool/scribe/service/ScribeService.java (.../ScribeService.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r15045d0b9b0dbb930f42a9da7757207e7a325341 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/service/SpreadsheetServiceImpl.java (.../SpreadsheetServiceImpl.java) (revision 15045d0b9b0dbb930f42a9da7757207e7a325341) +++ lams_tool_spreadsheet/src/java/org/lamsfoundation/lams/tool/spreadsheet/service/SpreadsheetServiceImpl.java (.../SpreadsheetServiceImpl.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r15045d0b9b0dbb930f42a9da7757207e7a325341 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_survey/src/java/org/lamsfoundation/lams/tool/survey/service/SurveyServiceImpl.java (.../SurveyServiceImpl.java) (revision 15045d0b9b0dbb930f42a9da7757207e7a325341) +++ lams_tool_survey/src/java/org/lamsfoundation/lams/tool/survey/service/SurveyServiceImpl.java (.../SurveyServiceImpl.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r985bed060e3d7b9c6a20c880d3079a6e55d44ba8 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/service/TaskListServiceImpl.java (.../TaskListServiceImpl.java) (revision 985bed060e3d7b9c6a20c880d3079a6e55d44ba8) +++ lams_tool_task/src/java/org/lamsfoundation/lams/tool/taskList/service/TaskListServiceImpl.java (.../TaskListServiceImpl.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r05db875c7974d705f89231416ff6dfe91a5e70f1 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/dao/IVoteContentDAO.java (.../IVoteContentDAO.java) (revision 05db875c7974d705f89231416ff6dfe91a5e70f1) +++ lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/dao/IVoteContentDAO.java (.../IVoteContentDAO.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r601fd92095193321a6b2286ef55108fbe5f9dfc4 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/dao/hibernate/VoteContentDAO.java (.../VoteContentDAO.java) (revision 601fd92095193321a6b2286ef55108fbe5f9dfc4) +++ lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/dao/hibernate/VoteContentDAO.java (.../VoteContentDAO.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -rda8b0f0ae7240eb069dd50e09cbf190acd395bb9 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/service/VoteServicePOJO.java (.../VoteServicePOJO.java) (revision da8b0f0ae7240eb069dd50e09cbf190acd395bb9) +++ lams_tool_vote/src/java/org/lamsfoundation/lams/tool/vote/service/VoteServicePOJO.java (.../VoteServicePOJO.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r15045d0b9b0dbb930f42a9da7757207e7a325341 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/service/WikiService.java (.../WikiService.java) (revision 15045d0b9b0dbb930f42a9da7757207e7a325341) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/service/WikiService.java (.../WikiService.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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 =================================================================== diff -u -r15045d0b9b0dbb930f42a9da7757207e7a325341 -r567af22fafd6a56534cc071f3650eda4495d05ef --- lams_tool_wookie/src/java/org/lamsfoundation/lams/tool/wookie/service/WookieService.java (.../WookieService.java) (revision 15045d0b9b0dbb930f42a9da7757207e7a325341) +++ lams_tool_wookie/src/java/org/lamsfoundation/lams/tool/wookie/service/WookieService.java (.../WookieService.java) (revision 567af22fafd6a56534cc071f3650eda4495d05ef) @@ -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.