Index: lams_tool_sbmt/conf/hibernate/mappings/org/lamsfoundation/lams/tool/sbmt/SubmitFilesContent.hbm.xml =================================================================== RCS file: /usr/local/cvsroot/lams_tool_sbmt/conf/hibernate/mappings/org/lamsfoundation/lams/tool/sbmt/Attic/SubmitFilesContent.hbm.xml,v diff -u -r1.9 -r1.10 --- lams_tool_sbmt/conf/hibernate/mappings/org/lamsfoundation/lams/tool/sbmt/SubmitFilesContent.hbm.xml 5 Sep 2006 04:05:23 -0000 1.9 +++ lams_tool_sbmt/conf/hibernate/mappings/org/lamsfoundation/lams/tool/sbmt/SubmitFilesContent.hbm.xml 5 Sep 2006 04:57:28 -0000 1.10 @@ -43,25 +43,6 @@ column="instruction" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - getBySessionAndLearner(Long sessionID, Long userID); } Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmitFilesSessionDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmitFilesSessionDAO.java,v diff -u -r1.5 -r1.6 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmitFilesSessionDAO.java 6 Apr 2006 06:41:33 -0000 1.5 +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmitFilesSessionDAO.java 5 Sep 2006 04:57:28 -0000 1.6 @@ -26,6 +26,7 @@ package org.lamsfoundation.lams.tool.sbmt.dao; import java.util.List; +import java.util.Set; import org.lamsfoundation.lams.dao.IBaseDAO; import org.lamsfoundation.lams.tool.sbmt.SubmitFilesSession; @@ -49,5 +50,5 @@ */ public void createSession(SubmitFilesSession submitSession); - public List getSubmitFilesSessionByContentID(Long contentID); + public List getSubmitFilesSessionByContentID(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.14 -r1.15 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmissionDetailsDAO.java 5 Sep 2006 04:05:22 -0000 1.14 +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmissionDetailsDAO.java 5 Sep 2006 04:57:28 -0000 1.15 @@ -38,9 +38,9 @@ public class SubmissionDetailsDAO extends BaseDAO implements ISubmissionDetailsDAO { - private static final String FIND_BY_SESSION = "from " + - SubmissionDetails.class.getName() + - " where session_id=?"; + private static final String FIND_BY_SESSION = "from " + SubmissionDetails.class.getName() + " as d where d.submitFileSession.sessionID=? "; + private static final String FIND_BY_SESSION_LEARNER = "from " + SubmissionDetails.class.getName() + + " as d where d.submitFileSession.sessionID=? and d.learner.userID=?"; /** * (non-Javadoc) @@ -71,4 +71,10 @@ } return null; } + + public List getBySessionAndLearner(Long sessionID, Long userID){ + + return this.getHibernateTemplate().find(FIND_BY_SESSION_LEARNER, new Object[]{sessionID,userID}); + + } } Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmitFilesSessionDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmitFilesSessionDAO.java,v diff -u -r1.7 -r1.8 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmitFilesSessionDAO.java 5 Sep 2006 04:05:22 -0000 1.7 +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmitFilesSessionDAO.java 5 Sep 2006 04:57:28 -0000 1.8 @@ -38,8 +38,8 @@ ISubmitFilesSessionDAO { private static final String FIND_LEARNER_BY_CONTENT_ID = - " from SubmitFilesSession session " + - " where session.content.contentID = :contentID"; + " from " + SubmitFilesSession.class.getName() + + " as session where session.content.contentID = :contentID"; /** @@ -57,7 +57,7 @@ this.getHibernateTemplate().save(submitSession); } - public List getSubmitFilesSessionByContentID(Long contentID){ + public List getSubmitFilesSessionByContentID(Long contentID){ if ( contentID != null ) { return this.getSession().createQuery(FIND_LEARNER_BY_CONTENT_ID) .setLong("contentID", contentID.longValue()) Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/ISubmitFilesService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/ISubmitFilesService.java,v diff -u -r1.24 -r1.25 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/ISubmitFilesService.java 5 Sep 2006 04:05:22 -0000 1.24 +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/ISubmitFilesService.java 5 Sep 2006 04:57:29 -0000 1.25 @@ -26,6 +26,7 @@ package org.lamsfoundation.lams.tool.sbmt.service; import java.util.List; +import java.util.Set; import java.util.SortedMap; import org.apache.struts.upload.FormFile; @@ -200,6 +201,8 @@ * @param uid */ public void deleteInstructionFile(Long uid); + + public List getSessionsByContentID(Long toolContentID); //************************************************************* // get SubmitUser methods //************************************************************* @@ -239,4 +242,5 @@ + } 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.58 -r1.59 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java 5 Sep 2006 04:05:22 -0000 1.58 +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java 5 Sep 2006 04:57:30 -0000 1.59 @@ -162,8 +162,6 @@ fromContent = getDefaultSubmit(); } SubmitFilesContent toContent = SubmitFilesContent.newInstance(fromContent,toContentId,sbmtToolContentHandler); - //clear ToolSession - toContent.setToolSession(new HashSet()); submitFilesContentDAO.saveOrUpdate(toContent); } @@ -242,7 +240,7 @@ SubmitFilesContent submitFilesContent = submitFilesContentDAO.getContentByID(toolContentId); if (submitFilesContent != null) { //if session data exist and removeSessionData=false, throw an exception - Set submissionData = submitFilesContent.getToolSession(); + List submissionData = submitFilesSessionDAO.getSubmitFilesSessionByContentID(toolContentId); 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 ){ @@ -256,6 +254,9 @@ } } + public List getSessionsByContentID(Long toolContentID){ + return submitFilesSessionDAO.getSubmitFilesSessionByContentID(toolContentID); + } /** * Export the XML fragment for the tool's content, along with any files needed * for the content. @@ -269,7 +270,6 @@ //set toolContentHandler as null to avoid duplicate file node in repository. toolContentObj = SubmitFilesContent.newInstance(toolContentObj,toolContentId,null); - toolContentObj.setToolSession(null); toolContentObj.setToolContentHandler(null); try { exportContentService.exportToolContent( toolContentId, toolContentObj,sbmtToolContentHandler, toPath); @@ -624,15 +624,12 @@ * @see org.lamsfoundation.lams.tool.sbmt.service.ISubmitFilesService#getFilesUploadedByUserForContent(java.lang.Long, java.lang.Long) */ public List getFilesUploadedByUser(Integer userID, Long sessionID){ - SubmitUser learner = getSessionUser(sessionID, userID); - Set list = learner.getSubmissionDetails(); + List list = submissionDetailsDAO.getBySessionAndLearner(sessionID, new Long(userID.intValue())); SortedSet details = new TreeSet(this.new FileDtoComparator()); if(list ==null) return new ArrayList(details); - Iterator iterator = list.iterator(); - while(iterator.hasNext()){ - SubmissionDetails submissionDetails = (SubmissionDetails)iterator.next(); + for(SubmissionDetails submissionDetails : list){ FileDetailsDTO detailDto = new FileDetailsDTO(submissionDetails); details.add(detailDto); } Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/ExportServlet.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/ExportServlet.java,v diff -u -r1.9 -r1.10 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/ExportServlet.java 5 Sep 2006 04:05:23 -0000 1.9 +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/ExportServlet.java 5 Sep 2006 04:57:28 -0000 1.10 @@ -293,13 +293,13 @@ throw new SubmitFilesException(error); } // return FileDetailsDTO list according to the given sessionID - Set sessionList = content.getToolSession(); - Iterator iter = sessionList.iterator(); Map report = new TreeMap(this.new StringComparator()); Map allFileMap = new TreeMap(new LastNameAlphabeticComparator()); - while (iter.hasNext()) { + + //iterate all session in this content + List sessionList = sbmtService.getSessionsByContentID(toolContentID); + for (SubmitFilesSession session : sessionList) { SortedMap userFilesMap = new TreeMap(new LastNameAlphabeticComparator()); - SubmitFilesSession session = (SubmitFilesSession) iter.next(); userFilesMap.putAll(sbmtService.getFilesUploadedBySession(session .getSessionID())); allFileMap.putAll(userFilesMap); Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/LearnerAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/LearnerAction.java,v diff -u -r1.32 -r1.33 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/LearnerAction.java 5 Sep 2006 04:05:23 -0000 1.32 +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/LearnerAction.java 5 Sep 2006 04:57:28 -0000 1.33 @@ -192,7 +192,8 @@ Long sessionID = (Long) sessionMap.get(AttributeNames.PARAM_TOOL_SESSION_ID); if(!isTokenValid(request,true) || validateUploadForm(learnerForm,request)){ - resetToken(request); + if(!isTokenValid(request,true)) + resetToken(request); //get session from shared session. HttpSession ss = SessionManager.getSession(); Index: lams_tool_sbmt/test/java/org/lamsfoundation/lams/tool/sbmt/dao/TestModel.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_sbmt/test/java/org/lamsfoundation/lams/tool/sbmt/dao/Attic/TestModel.java,v diff -u -r1.7 -r1.8 --- lams_tool_sbmt/test/java/org/lamsfoundation/lams/tool/sbmt/dao/TestModel.java 7 Apr 2006 00:47:24 -0000 1.7 +++ lams_tool_sbmt/test/java/org/lamsfoundation/lams/tool/sbmt/dao/TestModel.java 5 Sep 2006 04:57:30 -0000 1.8 @@ -156,22 +156,14 @@ assertEquals(contentC.getTitle(),titA); assertEquals(contentC.isDefineLater(),deA); assertEquals(contentC.isRunOffline(),offA); - //test SubmitFilesSession l Set - Iterator iter = contentC.getToolSession().iterator(); - SubmitFilesSession session = new SubmitFilesSession(); - fillSessionA(session); - assertEquals(iter.next(),session); + //do more test to ensure origial object keep desired values "B" assertEquals(content.getInstruction(),insB); assertEquals(content.getTitle(),titB); assertEquals(content.isDefineLater(),deB); assertEquals(content.isRunOffline(),offB); //test SubmitFilesSession l Set - iter = content.getToolSession().iterator(); - session = new SubmitFilesSession(); - fillSessionB(session); - assertEquals(iter.next(),session); } //================Fill init data for model object========== @@ -201,7 +193,6 @@ fillSessionA(session); Set sessions = new HashSet(); sessions.add(session); - content.setToolSession(sessions); } private void fillContentB(SubmitFilesContent content){ content.setDefineLater(deB); @@ -214,7 +205,6 @@ fillSessionB(session); Set sessions = new HashSet(); sessions.add(session); - content.setToolSession(sessions); } private void fillSessionA(SubmitFilesSession session){ session.setSessionID(sessA); Index: lams_tool_sbmt/test/java/org/lamsfoundation/lams/tool/sbmt/dao/TestSubmitFilesContentDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_sbmt/test/java/org/lamsfoundation/lams/tool/sbmt/dao/Attic/TestSubmitFilesContentDAO.java,v diff -u -r1.4 -r1.5 --- lams_tool_sbmt/test/java/org/lamsfoundation/lams/tool/sbmt/dao/TestSubmitFilesContentDAO.java 6 Apr 2006 06:41:33 -0000 1.4 +++ lams_tool_sbmt/test/java/org/lamsfoundation/lams/tool/sbmt/dao/TestSubmitFilesContentDAO.java 5 Sep 2006 04:57:30 -0000 1.5 @@ -45,17 +45,8 @@ submitFilesContentDAO = (ISubmitFilesContentDAO)context.getBean("submitFilesContentDAO"); } - public void testAddSubmitFilesContent() throws Exception { - long newId = getMaxContentId() + 1; - String title = "Trial Content"; - String instructions = "Trial Instructions"; - submitFilesContent = new SubmitFilesContent(new Long(newId),title,instructions); - submitFilesContentDAO.insert(submitFilesContent); - Long contentId = submitFilesContent.getContentID(); - assertNotNull(contentId); - assertEquals(contentId.longValue(), newId); - } + public void testAddGetContentByID() throws Exception { submitFilesContent = submitFilesContentDAO.getContentByID(TEST_CONTENT_ID); assertEquals(submitFilesContent.getTitle(), TEST_CONTENT_TITLE);