Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmissionDetailsDAO.java =================================================================== diff -u -r87916b2e9c4406342e26149d731a5ab070f4d4e0 -ra0cfee5cecae25b2c9d5ce9e12681d72e58c8dd5 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmissionDetailsDAO.java (.../ISubmissionDetailsDAO.java) (revision 87916b2e9c4406342e26149d731a5ab070f4d4e0) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmissionDetailsDAO.java (.../ISubmissionDetailsDAO.java) (revision a0cfee5cecae25b2c9d5ce9e12681d72e58c8dd5) @@ -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 =================================================================== diff -u -r087c23f9df98fb13da4aeccb43fe5a57000bc9c9 -ra0cfee5cecae25b2c9d5ce9e12681d72e58c8dd5 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmissionDetailsDAO.java (.../SubmissionDetailsDAO.java) (revision 087c23f9df98fb13da4aeccb43fe5a57000bc9c9) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmissionDetailsDAO.java (.../SubmissionDetailsDAO.java) (revision a0cfee5cecae25b2c9d5ce9e12681d72e58c8dd5) @@ -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 =================================================================== diff -u -rfb5052c8a854eee107a3c26c5f5e79fed39eccd4 -ra0cfee5cecae25b2c9d5ce9e12681d72e58c8dd5 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java (.../SubmitFilesService.java) (revision fb5052c8a854eee107a3c26c5f5e79fed39eccd4) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java (.../SubmitFilesService.java) (revision a0cfee5cecae25b2c9d5ce9e12681d72e58c8dd5) @@ -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 =================================================================== diff -u -rcd4c4671fd22ddbc11b5ffded95c721f52242c28 -ra0cfee5cecae25b2c9d5ce9e12681d72e58c8dd5 --- lams_tool_sbmt/test/java/org/lamsfoundation/lams/tool/sbmt/dao/TestSubmissionDetailsDAO.java (.../TestSubmissionDetailsDAO.java) (revision cd4c4671fd22ddbc11b5ffded95c721f52242c28) +++ lams_tool_sbmt/test/java/org/lamsfoundation/lams/tool/sbmt/dao/TestSubmissionDetailsDAO.java (.../TestSubmissionDetailsDAO.java) (revision a0cfee5cecae25b2c9d5ce9e12681d72e58c8dd5) @@ -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);