Index: lams_tool_lamc/conf/hibernate/mappings/org/lamsfoundation/lams/tool/mc/McUsrAttempt.hbm.xml =================================================================== diff -u -r7d9590c15a0ee3175f63dec067d4b5191a8a6e4d -r59fe1db88f298509908caae77a8ddfd6fb7d2292 --- lams_tool_lamc/conf/hibernate/mappings/org/lamsfoundation/lams/tool/mc/McUsrAttempt.hbm.xml (.../McUsrAttempt.hbm.xml) (revision 7d9590c15a0ee3175f63dec067d4b5191a8a6e4d) +++ lams_tool_lamc/conf/hibernate/mappings/org/lamsfoundation/lams/tool/mc/McUsrAttempt.hbm.xml (.../McUsrAttempt.hbm.xml) (revision 59fe1db88f298509908caae77a8ddfd6fb7d2292) @@ -50,6 +50,16 @@ length="1" /> + + returns the highest mark of a learner + * with the given identifier queUsrId

+ * + * @param uid + * @return + */ + public List getHighestMark(Long queUsrId); } Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/hibernate/McUsrAttemptDAO.java =================================================================== diff -u -rd6cf8ad18993af7a9d51820aa2cd2274d1560ac7 -r59fe1db88f298509908caae77a8ddfd6fb7d2292 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/hibernate/McUsrAttemptDAO.java (.../McUsrAttemptDAO.java) (revision d6cf8ad18993af7a9d51820aa2cd2274d1560ac7) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/hibernate/McUsrAttemptDAO.java (.../McUsrAttemptDAO.java) (revision 59fe1db88f298509908caae77a8ddfd6fb7d2292) @@ -22,10 +22,13 @@ package org.lamsfoundation.lams.tool.mc.dao.hibernate; +import java.util.List; + import org.apache.log4j.Logger; import org.hibernate.FlushMode; import org.lamsfoundation.lams.tool.mc.McUsrAttempt; import org.lamsfoundation.lams.tool.mc.dao.IMcUsrAttemptDAO; +import org.springframework.orm.hibernate3.HibernateTemplate; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; /** @@ -35,6 +38,8 @@ public class McUsrAttemptDAO extends HibernateDaoSupport implements IMcUsrAttemptDAO { static Logger logger = Logger.getLogger(McUsrAttemptDAO.class.getName()); + private static final String LOAD_HIGHEST_MARK_BY_USER_ID = "from mcUsrAttempt in class McUsrAttempt where mcUsrAttempt.queUsrId=:queUsrId"; + public McUsrAttempt getMcUserAttemptByUID(Long uid) { return (McUsrAttempt) this.getHibernateTemplate() @@ -46,6 +51,16 @@ this.getHibernateTemplate().save(mcUsrAttempt); } + public List getHighestMark(Long queUsrId) + { + HibernateTemplate templ = this.getHibernateTemplate(); + List list = getSession().createQuery(LOAD_HIGHEST_MARK_BY_USER_ID) + .setLong("queUsrId", queUsrId.longValue()) + .list(); + + return list; + } + public void updateMcUsrAttempt(McUsrAttempt mcUsrAttempt) { this.getHibernateTemplate().update(mcUsrAttempt); Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/IMcService.java =================================================================== diff -u -r5e1d707c3adf190cd76bb2459b89a60d511e7077 -r59fe1db88f298509908caae77a8ddfd6fb7d2292 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/IMcService.java (.../IMcService.java) (revision 5e1d707c3adf190cd76bb2459b89a60d511e7077) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/IMcService.java (.../IMcService.java) (revision 59fe1db88f298509908caae77a8ddfd6fb7d2292) @@ -201,5 +201,7 @@ public void cleanUploadedFilesMetaData() throws McApplicationException; public void persistFile(String uuid, boolean isOnlineFile, String fileName, McContent mcContent) throws McApplicationException; + + public List getHighestMark(Long queUsrId) throws McApplicationException; } Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java =================================================================== diff -u -r5e1d707c3adf190cd76bb2459b89a60d511e7077 -r59fe1db88f298509908caae77a8ddfd6fb7d2292 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java (.../McServicePOJO.java) (revision 5e1d707c3adf190cd76bb2459b89a60d511e7077) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java (.../McServicePOJO.java) (revision 59fe1db88f298509908caae77a8ddfd6fb7d2292) @@ -322,8 +322,22 @@ } } + + public List getHighestMark(Long queUsrId) throws McApplicationException + { + try + { + return mcUsrAttemptDAO.getHighestMark(queUsrId); + } + catch (DataAccessException e) + { + throw new McApplicationException("Exception occured when lams is getting the learner's highest mark: " + + e.getMessage(), + e); + } + } + - public McQueContent retrieveMcQueContentByUID(Long uid) throws McApplicationException { try @@ -1874,4 +1888,5 @@ public void setMcUploadedFileDAO(IMcUploadedFileDAO mcUploadedFileDAO) { this.mcUploadedFileDAO = mcUploadedFileDAO; } + } Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/LearningUtil.java =================================================================== diff -u -r7d9590c15a0ee3175f63dec067d4b5191a8a6e4d -r59fe1db88f298509908caae77a8ddfd6fb7d2292 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/LearningUtil.java (.../LearningUtil.java) (revision 7d9590c15a0ee3175f63dec067d4b5191a8a6e4d) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/LearningUtil.java (.../LearningUtil.java) (revision 59fe1db88f298509908caae77a8ddfd6fb7d2292) @@ -14,6 +14,7 @@ import org.apache.log4j.Logger; import org.lamsfoundation.lams.tool.mc.McAppConstants; +import org.lamsfoundation.lams.tool.mc.McApplicationException; import org.lamsfoundation.lams.tool.mc.McComparator; import org.lamsfoundation.lams.tool.mc.McContent; import org.lamsfoundation.lams.tool.mc.McOptsContent; @@ -304,7 +305,28 @@ } return correctAnswerCount; } + + public static int getHighestMark(HttpServletRequest request, Long queUsrId) + { + logger.debug("queUsrId : " + queUsrId); + IMcService mcService =McUtils.getToolService(request); + List listMarks=mcService.getHighestMark(queUsrId); + + Iterator itMarks=listMarks.iterator(); + int highestMark=0; + while (itMarks.hasNext()) + { + McUsrAttempt mcUsrAttempt=(McUsrAttempt)itMarks.next(); + logger.debug("mcUsrAttempt mark: " + mcUsrAttempt.getMark()); + int currentMark=mcUsrAttempt.getMark().intValue(); + logger.debug("currentMark: " + currentMark); + if (currentMark > highestMark) + highestMark= currentMark; + } + logger.debug("highestMark : " + highestMark); + return highestMark; + } public static Map buildMapCorrectOptions(List correctOptions) Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McAction.java =================================================================== diff -u -r7d9590c15a0ee3175f63dec067d4b5191a8a6e4d -r59fe1db88f298509908caae77a8ddfd6fb7d2292 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McAction.java (.../McAction.java) (revision 7d9590c15a0ee3175f63dec067d4b5191a8a6e4d) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McAction.java (.../McAction.java) (revision 59fe1db88f298509908caae77a8ddfd6fb7d2292) @@ -2203,9 +2203,17 @@ logger.debug("requested redoQuestions..."); request.getSession().setAttribute(CURRENT_QUESTION_INDEX, "1"); request.getSession().setAttribute(TOTAL_COUNT_REACHED, new Boolean(false).toString()); + + McQueUsr mcQueUsr=LearningUtil.getUser(request); + Long queUsrId=mcQueUsr.getUid(); + logger.debug("queUsrId: " + queUsrId); + + int learnerBestMark=LearningUtil.getHighestMark(request, queUsrId); + logger.debug("learnerBestMark: " + learnerBestMark); + request.getSession().setAttribute(LEARNER_BEST_MARK,new Integer(learnerBestMark).toString()); + mcLearningForm.resetCommands(); return (mapping.findForward(REDO_QUESTIONS)); - //return redoQuestions(request, mcLearningForm, mapping); } else if (mcLearningForm.getRedoQuestionsOk() != null) { Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McLearningStarterAction.java =================================================================== diff -u -r7d9590c15a0ee3175f63dec067d4b5191a8a6e4d -r59fe1db88f298509908caae77a8ddfd6fb7d2292 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McLearningStarterAction.java (.../McLearningStarterAction.java) (revision 7d9590c15a0ee3175f63dec067d4b5191a8a6e4d) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McLearningStarterAction.java (.../McLearningStarterAction.java) (revision 59fe1db88f298509908caae77a8ddfd6fb7d2292) @@ -237,8 +237,8 @@ if (mcQueUsr != null) { - logger.debug("the learner has already responsed to this content, just generate a read-only report."); - return (mapping.findForward(LEARNER_REPORT)); + logger.debug("the learner has already responsed to this content, just generate a read-only report. Use redo questions for this."); + return (mapping.findForward(REDO_QUESTIONS)); } Index: lams_tool_lamc/web/RedoQuestions.jsp =================================================================== diff -u -rcad6df7d203a1565dbbedf61b9088288ed13c19c -r59fe1db88f298509908caae77a8ddfd6fb7d2292 --- lams_tool_lamc/web/RedoQuestions.jsp (.../RedoQuestions.jsp) (revision cad6df7d203a1565dbbedf61b9088288ed13c19c) +++ lams_tool_lamc/web/RedoQuestions.jsp (.../RedoQuestions.jsp) (revision 59fe1db88f298509908caae77a8ddfd6fb7d2292) @@ -44,8 +44,10 @@ - 1 - 2 + + + + Fisheye: Tag 59fe1db88f298509908caae77a8ddfd6fb7d2292 refers to a dead (removed) revision in file `lams_tool_lamc/web/SequentialAnswersContent.jsp'. Fisheye: No comparison available. Pass `N' to diff?