Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmissionDetailsDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmissionDetailsDAO.java,v diff -u -r1.5 -r1.6 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmissionDetailsDAO.java 3 Aug 2005 06:19:03 -0000 1.5 +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmissionDetailsDAO.java 1 Mar 2006 04:38:29 -0000 1.6 @@ -26,15 +26,6 @@ */ public SubmissionDetails getSubmissionDetailsByID(Long submissionID); - /** - * Returns a list of records coresponding to the given contentID. - * - * @param contentID The content_id to be looked up - * @return List The list of required details - */ - public List getSubmissionDetailsByContentID(Long contentID); - - public List getUsersForSession(Long contentID); /** Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmissionDetailsDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmissionDetailsDAO.java,v diff -u -r1.9 -r1.10 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmissionDetailsDAO.java 3 Nov 2005 00:00:50 -0000 1.9 +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmissionDetailsDAO.java 1 Mar 2006 04:38:29 -0000 1.10 @@ -23,9 +23,6 @@ private static final String TABLENAME = "tl_lasbmt11_submission_details"; - private static final String FIND_BY_CONTENT_ID = "from " + TABLENAME + " in class " + SubmissionDetails.class.getName() + - " where content_id=? ORDER BY learner_id"; - private static final String FIND_BY_SESSION = "from " + TABLENAME + " in class " + SubmissionDetails.class.getName() + " where session_id=?"; @@ -45,14 +42,6 @@ get(SubmissionDetails.class, submissionID); } - /** - * (non-Javadoc) - * @see org.lamsfoundation.lams.tool.sbmt.dao.ISubmissionDetailsDAO#getSubmissionDetailsByContentID(java.lang.Long) - */ - public List getSubmissionDetailsByContentID(Long contentID){ - return this.getHibernateTemplate().find(FIND_BY_CONTENT_ID,contentID); - } - public List getUsersForSession(final Long sessionID){ return (List) this.getHibernateTemplate().execute(new HibernateCallback(){ public Object doInHibernate(Session session) throws HibernateException{ 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.37 -r1.38 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java 23 Feb 2006 22:41:11 -0000 1.37 +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java 1 Mar 2006 04:38:29 -0000 1.38 @@ -57,6 +57,7 @@ import org.lamsfoundation.lams.tool.ToolSessionExportOutputData; import org.lamsfoundation.lams.tool.ToolSessionManager; import org.lamsfoundation.lams.tool.exception.DataMissingException; +import org.lamsfoundation.lams.tool.exception.SessionDataExistsException; import org.lamsfoundation.lams.tool.exception.ToolException; import org.lamsfoundation.lams.tool.sbmt.InstructionFiles; import org.lamsfoundation.lams.tool.sbmt.Learner; @@ -188,26 +189,25 @@ /** * (non-Javadoc) + * @throws SessionDataExistsException * * @see org.lamsfoundation.lams.tool.ToolContentManager#removeToolContent(java.lang.Long) */ - public void removeToolContent(Long toolContentId, boolean removeSessionData)throws DataMissingException { + public void removeToolContent(Long toolContentId, boolean removeSessionData) throws SessionDataExistsException { SubmitFilesContent submitFilesContent = submitFilesContentDAO.getContentByID(toolContentId); - if (submitFilesContent == null) - throw new DataMissingException( - "No such content with a contentID of : " + toolContentId - + " exists"); - else { - List filesUploaded = submissionDetailsDAO.getSubmissionDetailsByContentID(toolContentId); - if(filesUploaded!=null){ - Iterator fileIterator = filesUploaded.iterator(); - while(fileIterator.hasNext()){ - SubmissionDetails details = (SubmissionDetails)fileIterator.next(); - deleteFromRepository(details.getUuid(),details.getVersionID()); - submissionDetailsDAO.delete(details); + if (submitFilesContent != null) { + //if session data exist and removeSessionData=false, throw an exception + Set submissionData = submitFilesContent.getToolSession(); + if ( !(submissionData==null || submissionData.isEmpty()) && ! removeSessionData) { + throw new SessionDataExistsException("Delete failed: There is session data that belongs to this tool content id"); + } else if ( submissionData != null ){ + Iterator iter = submissionData.iterator(); + while (iter.hasNext()) { + SubmitFilesSession element = (SubmitFilesSession) iter.next(); + removeToolSession(element); } - submitFilesContentDAO.delete(submitFilesContent); - } + } + submitFilesContentDAO.delete(submitFilesContent); } } @@ -408,14 +408,28 @@ } SubmitFilesSession session = submitFilesSessionDAO.getSessionByID(toolSessionId); - if(session != null) - submitFilesSessionDAO.delete(session); - else{ + if ( session != null ) { + removeToolSession(session); + } else { log.error("Could not find submit file session by given session id: "+toolSessionId); throw new DataMissingException("Could not find submit file session by given session id: "+toolSessionId); } - return; } + + /** Remove a tool session. The session parameter must not be null. */ + private void removeToolSession(SubmitFilesSession session) { + Set filesUploaded = session.getSubmissionDetails(); + if(filesUploaded!=null){ + Iterator fileIterator = filesUploaded.iterator(); + while(fileIterator.hasNext()){ + SubmissionDetails details = (SubmissionDetails)fileIterator.next(); + deleteFromRepository(details.getUuid(),details.getVersionID()); + submissionDetailsDAO.delete(details); + } + } + submitFilesSessionDAO.delete(session); + } + /** * (non-Javadoc) * Index: lams_tool_sbmt/test/java/org/lamsfoundation/lams/tool/sbmt/dao/TestSubmissionDetailsDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_sbmt/test/java/org/lamsfoundation/lams/tool/sbmt/dao/Attic/TestSubmissionDetailsDAO.java,v diff -u -r1.6 -r1.7 --- lams_tool_sbmt/test/java/org/lamsfoundation/lams/tool/sbmt/dao/TestSubmissionDetailsDAO.java 9 Sep 2005 00:33:18 -0000 1.6 +++ lams_tool_sbmt/test/java/org/lamsfoundation/lams/tool/sbmt/dao/TestSubmissionDetailsDAO.java 1 Mar 2006 04:38:29 -0000 1.7 @@ -60,15 +60,6 @@ assertEquals(details.getFilePath(),TEST_FILE_NAME); } - public void testGetSubmissionDetailsByContentID() { - List list = submissionDetailsDAO.getSubmissionDetailsByContentID(TEST_CONTENT_ID); - assertEquals("Expect only 1 submission", list.size(), 1); - SubmissionDetails details = (SubmissionDetails) list.iterator().next(); - assertNotNull("details", details); - assertEquals(details.getSubmissionID(),TEST_SUBMISSION_ID); - assertEquals(details.getFilePath(),TEST_FILE_NAME); - } - public void testGetSubmissionDetailsBySession() { List list = submissionDetailsDAO.getSubmissionDetailsBySession(TEST_SESSION_ID); assertEquals("Expect only 1 submission", list.size(), 1);