Index: lams_tool_lamc/conf/language/ApplicationResources.properties =================================================================== RCS file: /usr/local/cvsroot/lams_tool_lamc/conf/language/Attic/ApplicationResources.properties,v diff -u -r1.10 -r1.11 --- lams_tool_lamc/conf/language/ApplicationResources.properties 21 Jun 2006 03:08:50 -0000 1.10 +++ lams_tool_lamc/conf/language/ApplicationResources.properties 23 Jun 2006 16:16:50 -0000 1.11 @@ -244,6 +244,7 @@ label.groupName =Group Name: label.yourAnswers =Your answers: label.learner= Learner +label.yourMark =Your Mark: error.system.mc =A system exception has occured. Please contact Lams International technical support at 95806666. The error to report is\:
{0}
Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/ExportServlet.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/ExportServlet.java,v diff -u -r1.6 -r1.7 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/ExportServlet.java 21 Jun 2006 03:08:50 -0000 1.6 +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/ExportServlet.java 23 Jun 2006 16:16:50 -0000 1.7 @@ -24,7 +24,10 @@ package org.lamsfoundation.lams.tool.mc.web; +import java.util.Iterator; import java.util.List; +import java.util.Map; +import java.util.TreeMap; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; @@ -35,9 +38,12 @@ import org.lamsfoundation.lams.tool.ToolAccessMode; 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.pojos.McContent; +import org.lamsfoundation.lams.tool.mc.pojos.McQueContent; import org.lamsfoundation.lams.tool.mc.pojos.McQueUsr; import org.lamsfoundation.lams.tool.mc.pojos.McSession; +import org.lamsfoundation.lams.tool.mc.pojos.McUsrAttempt; import org.lamsfoundation.lams.tool.mc.service.IMcService; import org.lamsfoundation.lams.tool.mc.service.McServiceProxy; import org.lamsfoundation.lams.web.servlet.AbstractExportPortfolioServlet; @@ -76,6 +82,7 @@ request.getSession().setAttribute(PORTFOLIO_EXPORT_MODE, "learner"); IMcService mcService = McServiceProxy.getMcService(getServletContext()); + logger.debug("mcService:" + mcService); logger.debug("userID:" + userID); logger.debug("toolSessionID:" + toolSessionID); @@ -109,26 +116,192 @@ logger.error(error); throw new McApplicationException(error); } - - - logger.debug("calling learning mode toolSessionID:" + toolSessionID + " userID: " + userID ); - McMonitoringAction mcMonitoringAction= new McMonitoringAction(); - List listMonitoredAnswersContainerDTO=MonitoringUtil.buildSessionQuestionData(request, content, toolSessionID, userID); + + McMonitoringAction mcMonitoringAction= new McMonitoringAction(); + List listMonitoredAnswersContainerDTO=MonitoringUtil.buildGroupsQuestionDataForExportLearner(request, content, mcService, mcSession, learner ); request.getSession().setAttribute(LIST_MONITORED_ANSWERS_CONTAINER_DTO, listMonitoredAnswersContainerDTO); logger.debug("LIST_MONITORED_ANSWERS_CONTAINER_DTO: " + request.getSession().getAttribute(LIST_MONITORED_ANSWERS_CONTAINER_DTO)); + + String intTotalMark=viewAnswers(request, content, learner, mcSession, mcService); + logger.debug("intTotalMark: " + intTotalMark); - - List listMonitoredMarksContainerDTO=MonitoringUtil.buildGroupsMarkDataForExportLearner(request, content, mcService, mcSession, learner.getUid() ); - request.getSession().setAttribute(LIST_MONITORED_MARKS_CONTAINER_DTO, listMonitoredMarksContainerDTO); - logger.debug("LIST_MONITORED_MARKS_CONTAINER_DTO: " + request.getSession().getAttribute(LIST_MONITORED_MARKS_CONTAINER_DTO)); - + request.getSession().setAttribute(LEARNER_MARK,intTotalMark); request.getSession().setAttribute(LEARNER_NAME,learner.getFullname() ); - + request.getSession().setAttribute(PASSMARK,content.getPassMark().toString()); logger.debug("ending learner mode: "); } + - + + public String viewAnswers(HttpServletRequest request, McContent content, McQueUsr mcQueUsr, McSession mcSession, IMcService mcService) + { + logger.debug("starting viewAnswers..."); + int intTotalMark=0; + + McUsrAttempt mcUsrAttempt = mcService.getAttemptWithLastAttemptOrderForUserInSession(mcQueUsr.getUid(), mcSession.getUid()); + logger.debug("mcUsrAttempt with highest attempt order: " + mcUsrAttempt); + + int totalQuestionCount=content.getMcQueContents().size(); + logger.debug("totalQuestionCount: " + totalQuestionCount); + + Long toolContentUID=content.getUid(); + logger.debug("toolContentUID: " + toolContentUID); + logger.debug("mcQueUsr: " + mcQueUsr); + + Long queUsrId=mcQueUsr.getUid(); + logger.debug("queUsrId: " + queUsrId); + + Map mapQueAttempts= new TreeMap(new McComparator()); + + for (int i=1; i<= new Integer(totalQuestionCount).intValue(); i++) + { + logger.debug("doing question with display order: " + i); + McQueContent mcQueContent=mcService.getQuestionContentByDisplayOrder(new Long(i), toolContentUID); + logger.debug("mcQueContent uid: " + mcQueContent.getUid()); + + int intCurrentMark=0; + + + /**calculating learner's mark*/ + if (mcUsrAttempt != null) + { + String highestAttemptOrder=mcUsrAttempt.getAttemptOrder().toString(); + logger.debug("highestAttemptOrder: " + highestAttemptOrder); + + List listUserAttempts=mcService.getAttemptsOnHighestAttemptOrder(mcQueUsr.getUid(), mcQueContent.getUid(), mcSession.getUid(), new Integer(highestAttemptOrder)); + logger.debug("listUserAttempts: " + listUserAttempts); + + Iterator itAttempts=listUserAttempts.iterator(); + + if (!mcSession.getMcContent().isRetries()) + { + logger.debug("retries is OFF."); + boolean isAttemptCorrect=false; + McUsrAttempt mcUsrAttemptUser=null; + + while (itAttempts.hasNext()) + { + mcUsrAttempt=(McUsrAttempt)itAttempts.next(); + logger.debug("mcUsrAttempt: " + mcUsrAttempt); + mcUsrAttemptUser=mcUsrAttempt; + + if (mcUsrAttempt != null) + { + if (mcUsrAttempt.isAttemptCorrect()) + { + isAttemptCorrect=true; + } + } + } + logger.debug("final isAttemptCorrect: " + isAttemptCorrect); + logger.debug("mcUsrAttemptUser: " + mcUsrAttemptUser); + + String currentMark=""; + if (isAttemptCorrect) + { + currentMark= mcUsrAttemptUser.getMcQueContent().getWeight().toString(); + } + else + { + currentMark= "0"; + } + intCurrentMark=new Integer(currentMark).intValue(); + logger.debug("intCurrentMark: " + intCurrentMark); + + } + else + { + logger.debug("retries is ON. User had to PASS. Print the final attempt's data"); + boolean isAttemptCorrect=false; + McUsrAttempt mcUsrAttemptGeneral=null; + while (itAttempts.hasNext()) + { + mcUsrAttempt=(McUsrAttempt)itAttempts.next(); + logger.debug("mcUsrAttempt: " + mcUsrAttempt); + mcUsrAttemptGeneral=mcUsrAttempt; + + if (mcUsrAttempt != null) + { + if (mcUsrAttempt.isFinished() && mcUsrAttempt.isPassed()) + { + logger.debug("this is a individual question attempt that is finished and passed: " + mcUsrAttempt); + isAttemptCorrect=mcService.getUserAttemptCorrectForQuestionContentAndSessionUid(mcQueUsr.getUid(), + mcQueContent.getUid(), mcSession.getUid(), new Integer(highestAttemptOrder)); + logger.debug("isAttemptCorrect: " + isAttemptCorrect); + break; + } + } + } + + logger.debug("final isAttemptCorrect: " + isAttemptCorrect); + + String currentMark=""; + if (isAttemptCorrect) + { + currentMark= mcUsrAttempt.getMcQueContent().getWeight().toString(); + } + else + { + currentMark= "0"; + } + + intCurrentMark=new Integer(currentMark).intValue(); + logger.debug("intCurrentMark: " + intCurrentMark); + } + } + else + { + intCurrentMark=0; + } + + intTotalMark=intTotalMark + intCurrentMark; + logger.debug("intTotalMark: " + intTotalMark); + + + Map mapAttemptOrderAttempts= new TreeMap(new McComparator()); + for (int j=1; j <= MAX_ATTEMPT_HISTORY ; j++ ) + { + logger.debug("getting list for queUsrId: " + queUsrId); + List attemptsByAttemptOrder=mcService.getAttemptByAttemptOrder(queUsrId, mcQueContent.getUid(), new Integer(j)); + logger.debug("attemptsByAttemptOrder: " + j + " is: " + attemptsByAttemptOrder); + + Map mapAttempts= new TreeMap(new McComparator()); + Iterator attemptIterator=attemptsByAttemptOrder.iterator(); + Long mapIndex=new Long(1); + while (attemptIterator.hasNext()) + { + McUsrAttempt localMcUsrAttempt=(McUsrAttempt)attemptIterator.next(); + logger.debug("localMcUsrAttempt: " + localMcUsrAttempt); + + mapAttempts.put(mapIndex.toString(), localMcUsrAttempt.getMcOptionsContent().getMcQueOptionText()); + logger.debug("added attempt with order: " + localMcUsrAttempt.getAttemptOrder() + " , option text is: " + localMcUsrAttempt.getMcOptionsContent().getMcQueOptionText()); + mapIndex=new Long(mapIndex.longValue()+1); + } + + logger.debug("final mapAttempts is: " + mapAttempts); + if (mapAttempts.size() > 0) + { + mapAttemptOrderAttempts.put(new Integer(j).toString(), mapAttempts); + } + } + + logger.debug("final mapAttemptOrderAttempts is: " + mapAttemptOrderAttempts); + if (mapAttemptOrderAttempts.size() > 0) + { + mapQueAttempts.put(new Integer(i).toString(), mapAttemptOrderAttempts); + } + } + request.getSession().setAttribute(MAP_QUE_ATTEMPTS, mapQueAttempts); + logger.debug("final mapQueAttempts is: " + mapQueAttempts); + + + + logger.debug("final intTotalMark is: " + intTotalMark); + return new Integer(intTotalMark).toString(); + } + + public void teacher(HttpServletRequest request, HttpServletResponse response, String directoryName, Cookie[] cookies) { logger.debug("starting teacher mode..."); @@ -155,7 +328,8 @@ logger.debug("starting teacher mode: "); McMonitoringAction mcMonitoringAction= new McMonitoringAction(); - List listMonitoredAnswersContainerDTO=MonitoringUtil.buildGroupsQuestionData(request, content); + + List listMonitoredAnswersContainerDTO=MonitoringUtil.buildGroupsQuestionData(request, content, mcService); request.getSession().setAttribute(LIST_MONITORED_ANSWERS_CONTAINER_DTO, listMonitoredAnswersContainerDTO); logger.debug("LIST_MONITORED_ANSWERS_CONTAINER_DTO: " + request.getSession().getAttribute(LIST_MONITORED_ANSWERS_CONTAINER_DTO)); Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McMonitoringStarterAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McMonitoringStarterAction.java,v diff -u -r1.28 -r1.29 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McMonitoringStarterAction.java 21 Jun 2006 00:55:09 -0000 1.28 +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McMonitoringStarterAction.java 23 Jun 2006 16:16:50 -0000 1.29 @@ -344,7 +344,7 @@ request.getSession().setAttribute(CURRENT_MONITORED_TOOL_SESSION, "All"); logger.debug("CURRENT_MONITORED_TOOL_SESSION: " + request.getSession().getAttribute(CURRENT_MONITORED_TOOL_SESSION)); - List listMonitoredAnswersContainerDTO=MonitoringUtil.buildGroupsQuestionData(request, mcContent); + List listMonitoredAnswersContainerDTO=MonitoringUtil.buildGroupsQuestionData(request, mcContent, mcService); request.getSession().setAttribute(LIST_MONITORED_ANSWERS_CONTAINER_DTO, listMonitoredAnswersContainerDTO); logger.debug("LIST_MONITORED_ANSWERS_CONTAINER_DTO: " + request.getSession().getAttribute(LIST_MONITORED_ANSWERS_CONTAINER_DTO)); Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/MonitoringUtil.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/MonitoringUtil.java,v diff -u -r1.20 -r1.21 --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/MonitoringUtil.java 22 Jun 2006 01:43:22 -0000 1.20 +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/MonitoringUtil.java 23 Jun 2006 16:16:50 -0000 1.21 @@ -100,10 +100,11 @@ * @param mcContent * @return List */ - public static List buildGroupsQuestionData(HttpServletRequest request, McContent mcContent) + public static List buildGroupsQuestionData(HttpServletRequest request, McContent mcContent, IMcService mcService) { logger.debug("will be building groups question data for content:..." + mcContent); - IMcService mcService =McUtils.getToolService(request); + logger.debug("mcService: " + mcService); + List listQuestions=mcService.getAllQuestionEntries(mcContent.getUid()); logger.debug("listQuestions:..." + listQuestions); @@ -130,7 +131,7 @@ logger.debug("listCandidateAnswersDTO:..." + listCandidateAnswersDTO); mcMonitoredAnswersDTO.setCandidateAnswersCorrect(listCandidateAnswersDTO); - Map questionAttemptData= buildGroupsAttemptData(request, mcContent, mcQueContent, mcQueContent.getUid().toString(), mcService); + Map questionAttemptData= buildGroupsAttemptData(request, mcContent, mcQueContent, mcQueContent.getUid().toString(), mcService, null); logger.debug("questionAttemptData:..." + questionAttemptData); mcMonitoredAnswersDTO.setQuestionAttempts(questionAttemptData); listMonitoredAnswersContainerDTO.add(mcMonitoredAnswersDTO); @@ -142,6 +143,53 @@ } + public static List buildGroupsQuestionDataForExportLearner(HttpServletRequest request, McContent mcContent, + IMcService mcService, McSession mcSession, McQueUsr mcQueUsr) + { + logger.debug("will be building groups question data for content:..." + mcContent); + logger.debug("using mcSession:..." + mcSession); + logger.debug("using mcQueUsr:..." + mcQueUsr); + logger.debug("mcService: " + mcService); + + List listQuestions=mcService.getAllQuestionEntries(mcContent.getUid()); + logger.debug("listQuestions:..." + listQuestions); + + List listMonitoredAnswersContainerDTO= new LinkedList(); + + Iterator itListQuestions = listQuestions.iterator(); + while (itListQuestions.hasNext()) + { + McQueContent mcQueContent =(McQueContent)itListQuestions.next(); + logger.debug("mcQueContent:..." + mcQueContent); + + if (mcQueContent != null) + { + McMonitoredAnswersDTO mcMonitoredAnswersDTO= new McMonitoredAnswersDTO(); + mcMonitoredAnswersDTO.setQuestionUid(mcQueContent.getUid().toString()); + mcMonitoredAnswersDTO.setQuestion(mcQueContent.getQuestion()); + mcMonitoredAnswersDTO.setWeight(mcQueContent.getWeight().toString()); + + List listCandidateAnswers=mcService.findMcOptionNamesByQueId(mcQueContent.getUid()); + logger.debug("listCandidateAnswers:..." + listCandidateAnswers); + mcMonitoredAnswersDTO.setCandidateAnswers(listCandidateAnswers); + + List listCandidateAnswersDTO=mcService.populateCandidateAnswersDTO(mcQueContent.getUid()); + logger.debug("listCandidateAnswersDTO:..." + listCandidateAnswersDTO); + mcMonitoredAnswersDTO.setCandidateAnswersCorrect(listCandidateAnswersDTO); + + Map questionAttemptData= buildGroupsAttemptData(request, mcContent, mcQueContent, mcQueContent.getUid().toString(), mcService, mcQueUsr); + logger.debug("questionAttemptData:..." + questionAttemptData); + mcMonitoredAnswersDTO.setQuestionAttempts(questionAttemptData); + listMonitoredAnswersContainerDTO.add(mcMonitoredAnswersDTO); + + } + } + logger.debug("final listMonitoredAnswersContainerDTO:..." + listMonitoredAnswersContainerDTO); + return listMonitoredAnswersContainerDTO; + } + + + public static List buildGroupsMarkDataForExportLearner(HttpServletRequest request, McContent mcContent, IMcService mcService, McSession mcSession, Long learnerUid) { logger.debug("will be building export learner groups mark data for content:..." + mcContent); @@ -436,7 +484,8 @@ * @param mcQueContent * @return Map */ - public static Map buildGroupsAttemptData(HttpServletRequest request, McContent mcContent, McQueContent mcQueContent, String questionUid, IMcService mcService) + public static Map buildGroupsAttemptData(HttpServletRequest request, McContent mcContent, McQueContent mcQueContent, + String questionUid, IMcService mcService, McQueUsr mcQueUsr) { logger.debug("will be building groups attempt data for mcQueContent:..." + mcQueContent + " questionUid:" + questionUid); Map mapMonitoredAttemptsContainerDTO= new TreeMap(new McStringComparator()); @@ -445,26 +494,83 @@ Map summaryToolSessions=populateToolSessionsId(request, mcContent, mcService); logger.debug("summaryToolSessions: " + summaryToolSessions); - Iterator itMap = summaryToolSessions.entrySet().iterator(); - while (itMap.hasNext()) + if (mcQueUsr == null) { - Map.Entry pairs = (Map.Entry)itMap.next(); - logger.debug("using the summary tool sessions pair: " + pairs.getKey() + " = " + pairs.getValue()); + Iterator itMap = summaryToolSessions.entrySet().iterator(); + while (itMap.hasNext()) + { + Map.Entry pairs = (Map.Entry)itMap.next(); + logger.debug("using the summary tool sessions pair: " + pairs.getKey() + " = " + pairs.getValue()); + + if (!(pairs.getValue().toString().equals("None")) && !(pairs.getValue().toString().equals("All"))) + { + logger.debug("using the numerical summary tool sessions pair: " + " = " + pairs.getValue()); + McSession mcSession= mcService.findMcSessionById(new Long(pairs.getValue().toString())); + logger.debug("mcSession: " + " = " + mcSession); + if (mcSession != null) + { + List listMcUsers=mcService.getMcUserBySessionOnly(mcSession); + logger.debug("listMcUsers for session id:" + mcSession.getMcSessionId() + " = " + listMcUsers); + Map sessionUsersAttempts=populateSessionUsersAttempts(request,mcSession.getMcSessionId(), listMcUsers, questionUid, null, mcService); + + listMonitoredAttemptsContainerDTO.add(sessionUsersAttempts); + } + } + } + } + else + { + Iterator itMap = summaryToolSessions.entrySet().iterator(); + while (itMap.hasNext()) + { + Map.Entry pairs = (Map.Entry)itMap.next(); + logger.debug("using the summary tool sessions pair: " + pairs.getKey() + " = " + pairs.getValue()); + + if (!(pairs.getValue().toString().equals("None")) && !(pairs.getValue().toString().equals("All"))) + { + logger.debug("using the numerical summary tool sessions pair: " + " = " + pairs.getValue()); + McSession mcSession= mcService.findMcSessionById(new Long(pairs.getValue().toString())); + logger.debug("mcSession: " + " = " + mcSession); + if (mcSession != null) + { + List listMcUsers=mcService.getMcUserBySessionOnly(mcSession); + logger.debug("listMcUsers for session id:" + mcSession.getMcSessionId() + " = " + listMcUsers); + Map sessionUsersAttempts=populateSessionUsersAttempts(request,mcSession.getMcSessionId(), listMcUsers, questionUid, mcQueUsr.getQueUsrId(), mcService); + + listMonitoredAttemptsContainerDTO.add(sessionUsersAttempts); + } + } + } + + } + + + + logger.debug("final listMonitoredAttemptsContainerDTO:..." + listMonitoredAttemptsContainerDTO); + mapMonitoredAttemptsContainerDTO=convertToMap(listMonitoredAttemptsContainerDTO); + logger.debug("final mapMonitoredAttemptsContainerDTO:..." + mapMonitoredAttemptsContainerDTO); + return mapMonitoredAttemptsContainerDTO; + } + + + public static Map buildGroupsAttemptDataForExportLearner(HttpServletRequest request, McContent mcContent, McQueContent mcQueContent, String questionUid, + IMcService mcService, McSession mcSession, McQueUsr mcQueUsr ) + { + logger.debug("will be building groups attempt data for mcQueContent:..." + mcQueContent + " questionUid:" + questionUid); + logger.debug("using mcSession: " +mcSession); + logger.debug("using mcQueUsr: " +mcQueUsr); + + Map mapMonitoredAttemptsContainerDTO= new TreeMap(new McStringComparator()); + List listMonitoredAttemptsContainerDTO= new LinkedList(); - if (!(pairs.getValue().toString().equals("None")) && !(pairs.getValue().toString().equals("All"))) - { - logger.debug("using the numerical summary tool sessions pair: " + " = " + pairs.getValue()); - McSession mcSession= mcService.findMcSessionById(new Long(pairs.getValue().toString())); - logger.debug("mcSession: " + " = " + mcSession); - if (mcSession != null) - { - List listMcUsers=mcService.getMcUserBySessionOnly(mcSession); - logger.debug("listMcUsers for session id:" + mcSession.getMcSessionId() + " = " + listMcUsers); - Map sessionUsersAttempts=populateSessionUsersAttempts(request,mcSession.getMcSessionId(), listMcUsers, questionUid, null, mcService); - - listMonitoredAttemptsContainerDTO.add(sessionUsersAttempts); - } - } + logger.debug("mcSession: " + " = " + mcSession); + if (mcSession != null) + { + List listMcUsers=mcService.getMcUserBySessionOnly(mcSession); + logger.debug("listMcUsers for session id:" + mcSession.getMcSessionId() + " = " + listMcUsers); + Map sessionUsersAttempts=populateSessionUsersAttempts(request,mcSession.getMcSessionId(), listMcUsers, questionUid, mcQueUsr.getQueUsrId(), mcService); + + listMonitoredAttemptsContainerDTO.add(sessionUsersAttempts); } logger.debug("final listMonitoredAttemptsContainerDTO:..." + listMonitoredAttemptsContainerDTO); @@ -474,6 +580,8 @@ } + + public static Map buildSessionAttemptData(HttpServletRequest request, McContent mcContent, McQueContent mcQueContent, String questionUid, Long sessionId, Long userID) { logger.debug("doing buildSessionAttemptData with sessionId: " + sessionId); @@ -525,7 +633,8 @@ * @param listMcUsers * @return List */ - public static Map populateSessionUsersAttempts(HttpServletRequest request,Long sessionId, List listMcUsers, String questionUid, Long userID, IMcService mcService) + public static Map populateSessionUsersAttempts(HttpServletRequest request,Long sessionId, List listMcUsers, String questionUid, + Long userID, IMcService mcService) { logger.debug("starting populateSessionUsersAttempts"); logger.debug("will be populating users marks for session id: " + sessionId); @@ -537,187 +646,175 @@ Map mapMonitoredUserContainerDTO= new TreeMap(new McStringComparator()); List listMonitoredUserContainerDTO= new LinkedList(); - if (userID == null) + logger.debug("generating standard summary page"); + Iterator itUsers=listMcUsers.iterator(); + while (itUsers.hasNext()) { - logger.debug("generating standard summary page"); - Iterator itUsers=listMcUsers.iterator(); - while (itUsers.hasNext()) - { - McQueUsr mcQueUsr=(McQueUsr)itUsers.next(); - logger.debug("mcQueUsr: " + mcQueUsr); - - if (mcQueUsr != null) - { - logger.debug("getting listUserAttempts for user id: " + mcQueUsr.getUid() + " and que content id: " + questionUid); - - McUsrAttempt mcUsrAttempt = mcService.getAttemptWithLastAttemptOrderForUserInSession(mcQueUsr.getUid(), mcSession.getUid()); - logger.debug("mcUsrAttempt with highest attempt order: " + mcUsrAttempt); - String highestAttemptOrder=""; - - List listUserAttempts=null; - boolean attempExists=true; - if (mcUsrAttempt != null) - { - highestAttemptOrder=mcUsrAttempt.getAttemptOrder().toString(); - logger.debug("highestAttemptOrder: " + highestAttemptOrder); + McQueUsr mcQueUsr=(McQueUsr)itUsers.next(); + logger.debug("current User is: " + mcQueUsr); + + if (mcQueUsr != null) + { + if (userID != null) + { + logger.debug("request is export portfolio " + userID); + logger.debug("mcQueUsr: " + mcQueUsr); + logger.debug("local mcQueUsr userID: " + mcQueUsr.getQueUsrId()); + logger.debug("mcQueUsr.getQueUsrId().toString versus userID.toString(): " + mcQueUsr.getQueUsrId().toString() + " versus " + userID.toString()); - listUserAttempts=mcService.getAttemptsOnHighestAttemptOrder(mcQueUsr.getUid(), new Long(questionUid), mcSession.getUid(), new Integer(highestAttemptOrder)); - logger.debug("listUserAttempts: " + listUserAttempts); - } - else - { - attempExists=false; - McMonitoredUserDTO mcMonitoredUserDTO = new McMonitoredUserDTO(); - mcMonitoredUserDTO.setUserName(mcQueUsr.getFullname()); - mcMonitoredUserDTO.setSessionId(sessionId.toString()); - mcMonitoredUserDTO.setQuestionUid(questionUid); - mcMonitoredUserDTO.setMark("0"); - logger.debug("final constructed mcMonitoredUserDTO: " + mcMonitoredUserDTO); - listMonitoredUserContainerDTO.add(mcMonitoredUserDTO); - } - logger.debug("attempExists: " + attempExists); - - if (attempExists) - { - Iterator itAttempts=listUserAttempts.iterator(); - - if (!mcSession.getMcContent().isRetries()) - { - logger.debug("retries is OFF."); - boolean isAttemptCorrect=false; - McUsrAttempt mcUsrAttemptUser=null; - - while (itAttempts.hasNext()) - { - mcUsrAttempt=(McUsrAttempt)itAttempts.next(); - logger.debug("mcUsrAttempt: " + mcUsrAttempt); - mcUsrAttemptUser=mcUsrAttempt; - - if (mcUsrAttempt != null) - { - if (mcUsrAttempt.isAttemptCorrect()) - { - isAttemptCorrect=true; - } - } - } - logger.debug("final isAttemptCorrect: " + isAttemptCorrect); - logger.debug("mcUsrAttemptUser: " + mcUsrAttemptUser); - - McMonitoredUserDTO mcMonitoredUserDTO = new McMonitoredUserDTO(); - mcMonitoredUserDTO.setUserName(mcQueUsr.getFullname()); - mcMonitoredUserDTO.setSessionId(sessionId.toString()); - mcMonitoredUserDTO.setQuestionUid(questionUid); - - if (isAttemptCorrect) - { - mcMonitoredUserDTO.setMark(mcUsrAttemptUser.getMcQueContent().getWeight().toString()); - } - else - { - mcMonitoredUserDTO.setMark("0"); - } - - logger.debug("final constructed mcMonitoredUserDTO: " + mcMonitoredUserDTO); - listMonitoredUserContainerDTO.add(mcMonitoredUserDTO); - } - else - { - logger.debug("retries is ON. User had to PASS. Print the final attempt's data"); - McMonitoredUserDTO mcMonitoredUserDTO = new McMonitoredUserDTO(); - boolean isAttemptCorrect=false; - McUsrAttempt mcUsrAttemptGeneral=null; - while (itAttempts.hasNext()) - { - mcUsrAttempt=(McUsrAttempt)itAttempts.next(); - logger.debug("mcUsrAttempt: " + mcUsrAttempt); - mcUsrAttemptGeneral=mcUsrAttempt; - - if (mcUsrAttempt != null) - { - if (mcUsrAttempt.isFinished() && mcUsrAttempt.isPassed()) - { - logger.debug("this is a individual question attempt that is finished and passed: " + mcUsrAttempt); - isAttemptCorrect=mcService.getUserAttemptCorrectForQuestionContentAndSessionUid(mcQueUsr.getUid(), new Long(questionUid), mcSession.getUid(), new Integer(highestAttemptOrder)); - logger.debug("isAttemptCorrect: " + isAttemptCorrect); - break; - } - } - } - - logger.debug("final isAttemptCorrect: " + isAttemptCorrect); - if (isAttemptCorrect) - { - mcMonitoredUserDTO.setMark(mcUsrAttemptGeneral.getMcQueContent().getWeight().toString()); - } - else - { - mcMonitoredUserDTO.setMark("0"); - } - - mcMonitoredUserDTO.setUserName(mcQueUsr.getFullname()); - mcMonitoredUserDTO.setSessionId(sessionId.toString()); - mcMonitoredUserDTO.setQuestionUid(questionUid); - - logger.debug("final constructed mcMonitoredUserDTO: " + mcMonitoredUserDTO); - listMonitoredUserContainerDTO.add(mcMonitoredUserDTO); - - } - } - } - } - logger.debug("final listMonitoredUserContainerDTO: " + listMonitoredUserContainerDTO); - mapMonitoredUserContainerDTO=convertToMcMonitoredUserDTOMap(listMonitoredUserContainerDTO); - logger.debug("final mapMonitoredUserContainerDTO:..." + mapMonitoredUserContainerDTO); - return mapMonitoredUserContainerDTO; + if (mcQueUsr.getQueUsrId().toString().equals(userID.toString())) + { + logger.debug("returning attempt entries for : " + mcQueUsr); + mapMonitoredUserContainerDTO=getAttemptEntries(request, mcService, mcQueUsr, mcSession, questionUid, listMonitoredUserContainerDTO, mapMonitoredUserContainerDTO); + } + } + else + { + logger.debug("request is standard summary page."); + mapMonitoredUserContainerDTO=getAttemptEntries(request, mcService, mcQueUsr, mcSession, questionUid, listMonitoredUserContainerDTO, mapMonitoredUserContainerDTO); + } + } } - else + logger.debug("returning: " + mapMonitoredUserContainerDTO); + return mapMonitoredUserContainerDTO; + } + + + + public static Map getAttemptEntries(HttpServletRequest request, IMcService mcService, McQueUsr mcQueUsr, McSession mcSession, + String questionUid, List listMonitoredUserContainerDTO, Map mapMonitoredUserContainerDTO) + { + logger.debug("starting getAttemptEntries."); + logger.debug("mcQueUsr: " + mcQueUsr); + logger.debug("mcSession: " + mcSession); + + if (mcQueUsr != null) { - logger.debug("request is for learner export portfolio: " + userID); - Iterator itUsers=listMcUsers.iterator(); - while (itUsers.hasNext()) - { - McQueUsr mcQueUsr=(McQueUsr)itUsers.next(); - logger.debug("mcQueUsr: " + mcQueUsr); - logger.debug("local mcQueUsr userID: " + mcQueUsr.getQueUsrId()); - logger.debug("mcQueUsr.getQueUsrId().toString versus userID.toString(): " + mcQueUsr.getQueUsrId().toString() + " versus " + userID.toString()); - if ((mcQueUsr != null) && (mcQueUsr.getQueUsrId().toString().equals(userID.toString()))) - { - logger.debug("the user in question is found: " + mcQueUsr.getQueUsrId()); - logger.debug("getting listUserAttempts for user id: " + mcQueUsr.getUid() + " and que content id: " + questionUid); - //List listUserAttempts=mcService.getAttemptsForUserAndQuestionContent(mcQueUsr.getUid(), new Long(questionUid)); - List listUserAttempts=mcService.getUserAttemptsForQuestionContentAndSessionUid(mcQueUsr.getUid(), new Long(questionUid), mcSession.getUid()); - logger.debug("listUserAttempts: " + listUserAttempts); + logger.debug("getting listUserAttempts for user id: " + mcQueUsr.getUid() + " and que content id: " + questionUid); + + McUsrAttempt mcUsrAttempt = mcService.getAttemptWithLastAttemptOrderForUserInSession(mcQueUsr.getUid(), mcSession.getUid()); + logger.debug("mcUsrAttempt with highest attempt order: " + mcUsrAttempt); + String highestAttemptOrder=""; + + List listUserAttempts=null; + boolean attempExists=true; + if (mcUsrAttempt != null) + { + highestAttemptOrder=mcUsrAttempt.getAttemptOrder().toString(); + logger.debug("highestAttemptOrder: " + highestAttemptOrder); - Iterator itAttempts=listUserAttempts.iterator(); + listUserAttempts=mcService.getAttemptsOnHighestAttemptOrder(mcQueUsr.getUid(), new Long(questionUid), mcSession.getUid(), new Integer(highestAttemptOrder)); + logger.debug("listUserAttempts: " + listUserAttempts); + } + else + { + attempExists=false; + McMonitoredUserDTO mcMonitoredUserDTO = new McMonitoredUserDTO(); + mcMonitoredUserDTO.setUserName(mcQueUsr.getFullname()); + //mcMonitoredUserDTO.setSessionId(sessionId.toString()); + mcMonitoredUserDTO.setSessionId(mcSession.getMcSessionId().toString()); + mcMonitoredUserDTO.setQuestionUid(questionUid); + mcMonitoredUserDTO.setMark("0"); + logger.debug("final constructed mcMonitoredUserDTO: " + mcMonitoredUserDTO); + listMonitoredUserContainerDTO.add(mcMonitoredUserDTO); + } + logger.debug("attempExists: " + attempExists); + + if (attempExists) + { + Iterator itAttempts=listUserAttempts.iterator(); + + if (!mcSession.getMcContent().isRetries()) + { + logger.debug("retries is OFF."); + boolean isAttemptCorrect=false; + McUsrAttempt mcUsrAttemptUser=null; + while (itAttempts.hasNext()) { - McUsrAttempt mcUsrAttempt=(McUsrAttempt)itAttempts.next(); + mcUsrAttempt=(McUsrAttempt)itAttempts.next(); logger.debug("mcUsrAttempt: " + mcUsrAttempt); - + mcUsrAttemptUser=mcUsrAttempt; + if (mcUsrAttempt != null) { - McMonitoredUserDTO mcMonitoredUserDTO = new McMonitoredUserDTO(); - mcMonitoredUserDTO.setAttemptTime(mcUsrAttempt.getAttemptTime().toString()); - mcMonitoredUserDTO.setIsCorrect(new Boolean(mcUsrAttempt.isAttemptCorrect()).toString()); - mcMonitoredUserDTO.setResponse(mcUsrAttempt.getMcOptionsContent().getMcQueOptionText().toString()); - mcMonitoredUserDTO.setTimeZone(mcUsrAttempt.getTimeZone()); - mcMonitoredUserDTO.setUid(mcUsrAttempt.getUid().toString()); - mcMonitoredUserDTO.setUserName(mcQueUsr.getFullname()); - mcMonitoredUserDTO.setQueUsrId(mcQueUsr.getUid().toString()); - mcMonitoredUserDTO.setSessionId(sessionId.toString()); - mcMonitoredUserDTO.setQuestionUid(questionUid); - listMonitoredUserContainerDTO.add(mcMonitoredUserDTO); + if (mcUsrAttempt.isAttemptCorrect()) + { + isAttemptCorrect=true; + } } } - } - } - logger.debug("final listMonitoredUserContainerDTO: " + listMonitoredUserContainerDTO); - mapMonitoredUserContainerDTO=convertToMcMonitoredUserDTOMap(listMonitoredUserContainerDTO); - logger.debug("final mapMonitoredUserContainerDTO:..." + mapMonitoredUserContainerDTO); - return mapMonitoredUserContainerDTO; - + logger.debug("final isAttemptCorrect: " + isAttemptCorrect); + logger.debug("mcUsrAttemptUser: " + mcUsrAttemptUser); + + McMonitoredUserDTO mcMonitoredUserDTO = new McMonitoredUserDTO(); + mcMonitoredUserDTO.setUserName(mcQueUsr.getFullname()); + //mcMonitoredUserDTO.setSessionId(sessionId.toString()); + mcMonitoredUserDTO.setSessionId(mcSession.getMcSessionId().toString()); + mcMonitoredUserDTO.setQuestionUid(questionUid); + + if (isAttemptCorrect) + { + mcMonitoredUserDTO.setMark(mcUsrAttemptUser.getMcQueContent().getWeight().toString()); + } + else + { + mcMonitoredUserDTO.setMark("0"); + } + + logger.debug("final constructed mcMonitoredUserDTO: " + mcMonitoredUserDTO); + listMonitoredUserContainerDTO.add(mcMonitoredUserDTO); + } + else + { + logger.debug("retries is ON. User had to PASS. Print the final attempt's data"); + McMonitoredUserDTO mcMonitoredUserDTO = new McMonitoredUserDTO(); + boolean isAttemptCorrect=false; + McUsrAttempt mcUsrAttemptGeneral=null; + while (itAttempts.hasNext()) + { + mcUsrAttempt=(McUsrAttempt)itAttempts.next(); + logger.debug("mcUsrAttempt: " + mcUsrAttempt); + mcUsrAttemptGeneral=mcUsrAttempt; + + if (mcUsrAttempt != null) + { + if (mcUsrAttempt.isFinished() && mcUsrAttempt.isPassed()) + { + logger.debug("this is a individual question attempt that is finished and passed: " + mcUsrAttempt); + isAttemptCorrect=mcService.getUserAttemptCorrectForQuestionContentAndSessionUid(mcQueUsr.getUid(), new Long(questionUid), mcSession.getUid(), new Integer(highestAttemptOrder)); + logger.debug("isAttemptCorrect: " + isAttemptCorrect); + break; + } + } + } + + logger.debug("final isAttemptCorrect: " + isAttemptCorrect); + if (isAttemptCorrect) + { + mcMonitoredUserDTO.setMark(mcUsrAttemptGeneral.getMcQueContent().getWeight().toString()); + } + else + { + mcMonitoredUserDTO.setMark("0"); + } + + mcMonitoredUserDTO.setUserName(mcQueUsr.getFullname()); + //mcMonitoredUserDTO.setSessionId(sessionId.toString()); + mcMonitoredUserDTO.setSessionId(mcSession.getMcSessionId().toString()); + mcMonitoredUserDTO.setQuestionUid(questionUid); + + logger.debug("final constructed mcMonitoredUserDTO: " + mcMonitoredUserDTO); + listMonitoredUserContainerDTO.add(mcMonitoredUserDTO); + } + } } + logger.debug("returning : " + listMonitoredUserContainerDTO); + //return listMonitoredUserContainerDTO; + logger.debug("final listMonitoredUserContainerDTO: " + listMonitoredUserContainerDTO); + mapMonitoredUserContainerDTO=convertToMcMonitoredUserDTOMap(listMonitoredUserContainerDTO); + logger.debug("final mapMonitoredUserContainerDTO:..." + mapMonitoredUserContainerDTO); + return mapMonitoredUserContainerDTO; } Index: lams_tool_lamc/web/export/ExportContent.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_lamc/web/export/Attic/ExportContent.jsp,v diff -u -r1.5 -r1.6 --- lams_tool_lamc/web/export/ExportContent.jsp 21 Jun 2006 03:09:11 -0000 1.5 +++ lams_tool_lamc/web/export/ExportContent.jsp 23 Jun 2006 16:16:50 -0000 1.6 @@ -182,21 +182,18 @@ - - - - : - - + + + - +     - : + :   ( ) @@ -210,23 +207,79 @@         + + +   () + - - - + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + + +
+ +         + + +
+
+ + + + + + - -
+ + + + + + + + +