Index: lams_tool_sbmt/db/sql/create_lams_tool_sbmt.sql =================================================================== diff -u -rf66f1839407b038bc217a2af60599ac3edde342f -r75de919817a4bfa05924724631118b092da74cf7 --- lams_tool_sbmt/db/sql/create_lams_tool_sbmt.sql (.../create_lams_tool_sbmt.sql) (revision f66f1839407b038bc217a2af60599ac3edde342f) +++ lams_tool_sbmt/db/sql/create_lams_tool_sbmt.sql (.../create_lams_tool_sbmt.sql) (revision 75de919817a4bfa05924724631118b092da74cf7) @@ -46,7 +46,7 @@ REFERENCES tl_lasbmt11_report (report_id) )TYPE=InnoDB; -INSERT INTO `tl_lasbmt11_content` (content_id,title,instructions) values(1,"Java Submission","Submit your java programs"); +INSERT INTO `tl_lasbmt11_content` (content_id,title,instructions,defineLater,runOffline) values(1,"Java Submission","Submit your java programs",0,0); INSERT INTO `tl_lasbmt11_session` (session_id,content_id,status) values(1,1,1); SET FOREIGN_KEY_CHECKS=1; Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/SbmtResources.properties =================================================================== diff -u -r279fcb721d30c71b3d61cb67351348a41a9709de -r75de919817a4bfa05924724631118b092da74cf7 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/SbmtResources.properties (.../SbmtResources.properties) (revision 279fcb721d30c71b3d61cb67351348a41a9709de) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/SbmtResources.properties (.../SbmtResources.properties) (revision 75de919817a4bfa05924724631118b092da74cf7) @@ -29,6 +29,7 @@ #-------------------------Exception Labels-----------------# sbmt.web.action.upload.exception = Upload of file failed. +monitoring.download.error = Download failed becuase of this reason: {0} submit.upload.twice=You already upload this file, please waiting for a while. Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/SubmitFilesContent.java =================================================================== diff -u -rf66f1839407b038bc217a2af60599ac3edde342f -r75de919817a4bfa05924724631118b092da74cf7 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/SubmitFilesContent.java (.../SubmitFilesContent.java) (revision f66f1839407b038bc217a2af60599ac3edde342f) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/SubmitFilesContent.java (.../SubmitFilesContent.java) (revision 75de919817a4bfa05924724631118b092da74cf7) @@ -157,7 +157,7 @@ /** * @hibernate.property column="defineLater" length="1" - * + * not-null="true" */ public boolean isDefineLater() { @@ -171,7 +171,7 @@ /** * @hibernate.property column="runOffline" length="1" - * + * not-null="true" */ public boolean isRunOffline() { Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmissionDetailsDAO.java =================================================================== diff -u -r8ad8873eb5b2b790da1c136795b0fdc9ac89027c -r75de919817a4bfa05924724631118b092da74cf7 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmissionDetailsDAO.java (.../ISubmissionDetailsDAO.java) (revision 8ad8873eb5b2b790da1c136795b0fdc9ac89027c) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmissionDetailsDAO.java (.../ISubmissionDetailsDAO.java) (revision 75de919817a4bfa05924724631118b092da74cf7) @@ -51,4 +51,10 @@ * @param session */ public void saveOrUpdate(SubmitFilesSession session); + + /** + * @param sessionID + * @return + */ + public List getSubmissionDetailsBySession(Long sessionID); } Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmitFilesReportDAO.java =================================================================== diff -u -reb8df38a09efc89ecb2524cb7cf70ad9f3ec69d8 -r75de919817a4bfa05924724631118b092da74cf7 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmitFilesReportDAO.java (.../ISubmitFilesReportDAO.java) (revision eb8df38a09efc89ecb2524cb7cf70ad9f3ec69d8) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/ISubmitFilesReportDAO.java (.../ISubmitFilesReportDAO.java) (revision 75de919817a4bfa05924724631118b092da74cf7) @@ -33,4 +33,9 @@ */ public SubmitFilesReport getReportBySubmissionID(Long submissionID); + /** + * @param report + */ + public void updateReport(SubmitFilesReport report); + } Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmissionDetailsDAO.java =================================================================== diff -u -r8ad8873eb5b2b790da1c136795b0fdc9ac89027c -r75de919817a4bfa05924724631118b092da74cf7 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmissionDetailsDAO.java (.../SubmissionDetailsDAO.java) (revision 8ad8873eb5b2b790da1c136795b0fdc9ac89027c) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmissionDetailsDAO.java (.../SubmissionDetailsDAO.java) (revision 75de919817a4bfa05924724631118b092da74cf7) @@ -33,6 +33,9 @@ private static final String FIND_FOR_USER_BY_SESSION = "from " + TABLENAME + " in class " + SubmissionDetails.class.getName() + " where user_id=? AND session_id=?"; + private static final String FIND_BY_SESSION = "from " + TABLENAME + + " in class " + SubmissionDetails.class.getName() + + " where session_id=?"; private static final String FIND_DISTINCT_USER = " select distinct details.userID from SubmissionDetails details " + " where details.submitFileSession =:sessionID"; @@ -83,4 +86,13 @@ this.getSession().setFlushMode(FlushMode.AUTO); this.getHibernateTemplate().saveOrUpdate(session); } + /* (non-Javadoc) + * @see org.lamsfoundation.lams.tool.sbmt.dao.ISubmissionDetailsDAO#getSubmissionDetailsBySession(java.lang.Long) + */ + public List getSubmissionDetailsBySession(Long sessionID) { + List list = this.getHibernateTemplate().find(FIND_BY_SESSION, + new Object[]{sessionID}, + new Type[]{Hibernate.LONG}); + return list; + } } Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmitFilesReportDAO.java =================================================================== diff -u -reb8df38a09efc89ecb2524cb7cf70ad9f3ec69d8 -r75de919817a4bfa05924724631118b092da74cf7 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmitFilesReportDAO.java (.../SubmitFilesReportDAO.java) (revision eb8df38a09efc89ecb2524cb7cf70ad9f3ec69d8) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/dao/hibernate/SubmitFilesReportDAO.java (.../SubmitFilesReportDAO.java) (revision 75de919817a4bfa05924724631118b092da74cf7) @@ -7,6 +7,9 @@ package org.lamsfoundation.lams.tool.sbmt.dao.hibernate; import java.util.List; + +import net.sf.hibernate.FlushMode; + import org.lamsfoundation.lams.learningdesign.dao.hibernate.BaseDAO; import org.lamsfoundation.lams.tool.sbmt.SubmitFilesReport; import org.lamsfoundation.lams.tool.sbmt.dao.ISubmitFilesReportDAO; @@ -43,4 +46,12 @@ return null; } + /* (non-Javadoc) + * @see org.lamsfoundation.lams.tool.sbmt.dao.ISubmitFilesReportDAO#updateReport(org.lamsfoundation.lams.tool.sbmt.SubmitFilesReport) + */ + public void updateReport(SubmitFilesReport report) { + this.getSession().setFlushMode(FlushMode.AUTO); + getHibernateTemplate().update(report); + getHibernateTemplate().flush(); + } } Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/ISubmitFilesService.java =================================================================== diff -u -r8880f4178b1950bfd55ad3a1a94d27140bb223e3 -r75de919817a4bfa05924724631118b092da74cf7 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/ISubmitFilesService.java (.../ISubmitFilesService.java) (revision 8880f4178b1950bfd55ad3a1a94d27140bb223e3) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/ISubmitFilesService.java (.../ISubmitFilesService.java) (revision 75de919817a4bfa05924724631118b092da74cf7) @@ -25,6 +25,7 @@ import java.util.Hashtable; import java.util.List; +import org.lamsfoundation.lams.contentrepository.IVersionedNode; import org.lamsfoundation.lams.tool.sbmt.SubmitFilesContent; import org.lamsfoundation.lams.tool.sbmt.SubmitFilesReport; import org.lamsfoundation.lams.tool.sbmt.SubmitFilesSession; @@ -147,5 +148,12 @@ * @return */ public SubmitFilesSession getSessionById(Long sessionID); - public InputStream downloadFile(Long uuid, Long versionID); + public IVersionedNode downloadFile(Long uuid, Long versionID); + + /** + * Release marks and comments information to learners, for a special session. + * @param sessionID + * @return success return true, otherwise return false. + */ + public boolean releaseMarksForSession(Long sessionID); } Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java =================================================================== diff -u -r8880f4178b1950bfd55ad3a1a94d27140bb223e3 -r75de919817a4bfa05924724631118b092da74cf7 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java (.../SubmitFilesService.java) (revision 8880f4178b1950bfd55ad3a1a94d27140bb223e3) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/service/SubmitFilesService.java (.../SubmitFilesService.java) (revision 75de919817a4bfa05924724631118b092da74cf7) @@ -27,6 +27,7 @@ import java.io.FileNotFoundException; import java.io.InputStream; import java.util.ArrayList; +import java.util.Calendar; import java.util.Date; import java.util.Hashtable; import java.util.Iterator; @@ -184,6 +185,15 @@ } /** + * @param toolContentId + * @return + */ + private SubmitFilesContent duplicateDefaultToolContent(Long toolContentId) { + //TODO + return null; + } + + /** * @see org.lamsfoundation.lams.tool.ToolContentManager#setAsDefineLater(java.lang.Long) */ public void setAsDefineLater(Long toolContentId) { @@ -661,11 +671,11 @@ User user = userDAO.getUserById(new Integer(userID.intValue())); return user.getUserDTO(); } - public InputStream downloadFile(Long uuid, Long versionID)throws SubmitFilesException{ + public IVersionedNode downloadFile(Long uuid, Long versionID)throws SubmitFilesException{ ITicket ticket = getRepositoryLoginTicket(); try{ IVersionedNode node = repositoryService.getFileItem(ticket,uuid,null); - return node.getFile(); + return node; }catch(AccessDeniedException ae){ throw new SubmitFilesException("AccessDeniedException occured while trying to download file " + ae.getMessage()); }catch(FileException fe){ @@ -677,14 +687,21 @@ public SubmitFilesSession getSessionById(Long sessionID){ return submitFilesSessionDAO.getSessionByID(sessionID); } - /** - * @param toolContentId - * @return - */ - private SubmitFilesContent duplicateDefaultToolContent(Long toolContentId) { - // TODO Auto-generated method stub - return null; + + public boolean releaseMarksForSession(Long sessionID){ + List list = submissionDetailsDAO.getSubmissionDetailsBySession(sessionID); + Iterator iter = list.iterator(); + SubmissionDetails details; + SubmitFilesReport report; + Date now = Calendar.getInstance().getTime(); + while(iter.hasNext()){ + details = (SubmissionDetails) iter.next(); + report = details.getReport(); + report.setDateMarksReleased(now); + submitFilesReportDAO.updateReport(report); + } + //current there is no false return + return true; } - } \ No newline at end of file Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/LearnerAction.java =================================================================== diff -u -r8880f4178b1950bfd55ad3a1a94d27140bb223e3 -r75de919817a4bfa05924724631118b092da74cf7 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/LearnerAction.java (.../LearnerAction.java) (revision 8880f4178b1950bfd55ad3a1a94d27140bb223e3) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/LearnerAction.java (.../LearnerAction.java) (revision 75de919817a4bfa05924724631118b092da74cf7) @@ -6,6 +6,7 @@ */ package org.lamsfoundation.lams.tool.sbmt.web; +import java.util.Iterator; import java.util.List; import javax.servlet.http.HttpServletRequest; @@ -22,6 +23,7 @@ import org.apache.struts.actions.DispatchAction; import org.lamsfoundation.lams.tool.sbmt.SubmitFilesContent; import org.lamsfoundation.lams.tool.sbmt.SubmitFilesSession; +import org.lamsfoundation.lams.tool.sbmt.dto.FileDetailsDTO; import org.lamsfoundation.lams.tool.sbmt.exception.SubmitFilesException; import org.lamsfoundation.lams.tool.sbmt.service.ISubmitFilesService; import org.lamsfoundation.lams.tool.sbmt.service.SubmitFilesServiceProxy; @@ -60,16 +62,16 @@ HttpSession httpSession = request.getSession(true); httpSession.setAttribute("content",content); - + List filesUploaded = submitFilesService.getFilesUploadedByUser(userID,sessionID); - authForm.set("filesUploaded",filesUploaded); + listUploadFiles(authForm, filesUploaded); //to avoid user without patience click "upload" button too fast saveToken(request); return mapping.getInputForward(); } - + public ActionForward uploadFile(ActionMapping mapping, ActionForm form, HttpServletRequest request, @@ -79,9 +81,10 @@ if(!isTokenValid(request,true)){ Long sessionID =(Long) authForm.get("toolSessionID"); Long userID = (Long)authForm.get("userID"); - submitFilesService = SubmitFilesServiceProxy.getSubmitFilesService(this.getServlet().getServletContext()); + submitFilesService = SubmitFilesServiceProxy.getSubmitFilesService(this.getServlet().getServletContext()); List filesUploaded = submitFilesService.getFilesUploadedByUser(userID,sessionID); - authForm.set("filesUploaded",filesUploaded); + + listUploadFiles(authForm, filesUploaded); return returnErrors(mapping,request,"submit.upload.twice","upload"); } @@ -96,7 +99,7 @@ try{ submitFilesService.uploadFile(sessionID,filePath,fileDescription,userID); List filesUploaded = submitFilesService.getFilesUploadedByUser(userID,sessionID); - authForm.set("filesUploaded",filesUploaded); + listUploadFiles(authForm, filesUploaded); return mapping.getInputForward(); }catch(SubmitFilesException se){ logger.error("uploadFile: Submit Files Exception has occured" + se.getMessage()); @@ -123,5 +126,24 @@ saveErrors(request,messages); return mapping.findForward(forward); } - + + /** + * Fill file list uploaded by the special user into web form. Remove the unauthorized mark and + * comment information according to the release flag (release date). + * @param authForm + * @param sessionID + * @param userID + */ + private void listUploadFiles(DynaActionForm authForm, List filesUploaded) { + //if Monitoring does not release marks, then screen this mark and comment content. + Iterator iter = filesUploaded.iterator(); + while(iter.hasNext()){ + FileDetailsDTO dto = (FileDetailsDTO) iter.next(); + if(dto.getDateMarksReleased() == null){ + dto.setComments(null); + dto.setMarks(null); + } + } + authForm.set("filesUploaded",filesUploaded); + } } Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/MonitoringAction.java =================================================================== diff -u -r279fcb721d30c71b3d61cb67351348a41a9709de -r75de919817a4bfa05924724631118b092da74cf7 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/MonitoringAction.java (.../MonitoringAction.java) (revision 279fcb721d30c71b3d61cb67351348a41a9709de) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/MonitoringAction.java (.../MonitoringAction.java) (revision 75de919817a4bfa05924724631118b092da74cf7) @@ -22,6 +22,8 @@ */ package org.lamsfoundation.lams.tool.sbmt.web; +import java.io.IOException; +import java.io.InputStream; import java.util.ArrayList; import java.util.Hashtable; import java.util.List; @@ -36,6 +38,9 @@ import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; import org.apache.struts.actions.DispatchAction; +import org.lamsfoundation.lams.contentrepository.FileException; +import org.lamsfoundation.lams.contentrepository.IVersionedNode; +import org.lamsfoundation.lams.contentrepository.ValueFormatException; import org.lamsfoundation.lams.tool.sbmt.dto.FileDetailsDTO; import org.lamsfoundation.lams.tool.sbmt.service.ISubmitFilesService; import org.lamsfoundation.lams.tool.sbmt.service.SubmitFilesServiceProxy; @@ -51,10 +56,11 @@ * name="emptyForm" * * @struts.action-forward name="userlist" path="/userlist.jsp" - * @struts.action-forward name="report" path="/allLearners.jsp" - * @struts.action-forward name="status" path="/Status.jsp" * @struts.action-forward name="userReport" path="/userReport.jsp" * @struts.action-forward name="updateMarks" path="/updateMarks.jsp" + * + * @struts.action-forward name="status" path="/Status.jsp" + * @struts.action-forward name="report" path="/allLearners.jsp" * */ public class MonitoringAction extends DispatchAction { @@ -162,6 +168,75 @@ request.getSession().setAttribute("userID",userID); return mapping.findForward("userReport"); } + /** + * Download upload file for a special submission detail. + * @param mapping + * @param form + * @param request + * @param response + * @return + */ + + public ActionForward downloadFile(ActionMapping mapping, + ActionForm form, + HttpServletRequest request, + HttpServletResponse response){ + Long versionID =new Long(WebUtil.readLongParam(request,"versionID")); + Long uuID = new Long(WebUtil.readLongParam(request,"uuID")); + + ISubmitFilesService service = getSubmitFilesService(); + IVersionedNode node = service.downloadFile(uuID,versionID); + int len; + ActionMessages errors = new ActionMessages(); + try { + InputStream is = node.getFile(); + String mineType = node.getProperty("MIMETYPE").getString(); + response.setContentType(mineType); + String header = "attachment; filename=\"" + node.getProperty("FILENAME").getString() + "\";"; + response.setHeader("Content-Disposition",header); + byte[] data = new byte[4 * 1024]; + while(is != null && (len = is.read(data)) != -1){ + response.getOutputStream().write(data,0,len); + } + response.getOutputStream().flush(); + } catch (Exception e) { + log.error(e); + errors.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage("monitoring.download.error",e.toString())); + } + //if download throw any exception, then display it in current page. + if(!errors.isEmpty()){ + saveErrors(request,errors); + return mapping.findForward("userReport"); + } + + return null; + } + public ActionForward viewAllMarks(ActionMapping mapping, + ActionForm form, + HttpServletRequest request, + HttpServletResponse response){ + return null; + } + public ActionForward releaseMarks(ActionMapping mapping, + ActionForm form, + HttpServletRequest request, + HttpServletResponse response){ + + //get service then update report table + submitFilesService = getSubmitFilesService(); + Long sessionID =new Long(WebUtil.readLongParam(request,"toolSessionID")); + submitFilesService.releaseMarksForSession(sessionID); + //todo: need display some success info + return mapping.findForward("userReport"); + } + public ActionForward downloadMarks(ActionMapping mapping, + ActionForm form, + HttpServletRequest request, + HttpServletResponse response){ + return null; + } + + //TODO public ActionForward getStatus(ActionMapping mapping, ActionForm form, Index: lams_tool_sbmt/web/WEB-INF/struts/struts-config.xml =================================================================== diff -u -rf66f1839407b038bc217a2af60599ac3edde342f -r75de919817a4bfa05924724631118b092da74cf7 --- lams_tool_sbmt/web/WEB-INF/struts/struts-config.xml (.../struts-config.xml) (revision f66f1839407b038bc217a2af60599ac3edde342f) +++ lams_tool_sbmt/web/WEB-INF/struts/struts-config.xml (.../struts-config.xml) (revision 75de919817a4bfa05924724631118b092da74cf7) @@ -88,23 +88,23 @@ redirect="false" /> Fisheye: Tag 75de919817a4bfa05924724631118b092da74cf7 refers to a dead (removed) revision in file `lams_tool_sbmt/web/myEditor.jsp'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 75de919817a4bfa05924724631118b092da74cf7 refers to a dead (removed) revision in file `lams_tool_sbmt/web/sampleposteddata.jsp'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_sbmt/web/userReport.jsp =================================================================== diff -u -r1031a7fe932a67f63f9606370fb1a35adcb9731a -r75de919817a4bfa05924724631118b092da74cf7 --- lams_tool_sbmt/web/userReport.jsp (.../userReport.jsp) (revision 1031a7fe932a67f63f9606370fb1a35adcb9731a) +++ lams_tool_sbmt/web/userReport.jsp (.../userReport.jsp) (revision 75de919817a4bfa05924724631118b092da74cf7) @@ -2,7 +2,7 @@ <%@ page language="java"%> <%@ taglib uri="tags-bean" prefix="bean" %> -<%@ taglib uri="tags-html" prefix="html" %> +<%@ taglib uri="tags-html-el" prefix="html" %> <%@ taglib uri="tags-logic" prefix="logic" %> <%@ taglib uri="tags-tiles" prefix="tiles" %> <%@ taglib uri="tags-c" prefix="c" %> @@ -26,7 +26,10 @@ - File Path: + + File Path: + ( &versionID= ">Download) + File Description: Index: lams_tool_sbmt/web/userlist.jsp =================================================================== diff -u -r1031a7fe932a67f63f9606370fb1a35adcb9731a -r75de919817a4bfa05924724631118b092da74cf7 --- lams_tool_sbmt/web/userlist.jsp (.../userlist.jsp) (revision 1031a7fe932a67f63f9606370fb1a35adcb9731a) +++ lams_tool_sbmt/web/userlist.jsp (.../userlist.jsp) (revision 75de919817a4bfa05924724631118b092da74cf7) @@ -39,7 +39,31 @@ - + + + + + + "/> + + + + + + + "/> + + + + + + + "/> + + + + +