Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/MonitoringUtil.java =================================================================== diff -u -r7e081a8de40eddf0ea5398491e7df75aca73c13d -rb44f39af2238a105f7975df071600199901686aa --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/MonitoringUtil.java (.../MonitoringUtil.java) (revision 7e081a8de40eddf0ea5398491e7df75aca73c13d) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/MonitoringUtil.java (.../MonitoringUtil.java) (revision b44f39af2238a105f7975df071600199901686aa) @@ -4,15 +4,21 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.TreeMap; import javax.servlet.http.HttpServletRequest; import org.apache.log4j.Logger; import org.lamsfoundation.lams.tool.mc.McAppConstants; -import org.lamsfoundation.lams.tool.mc.McContent; import org.lamsfoundation.lams.tool.mc.McMonitoredAnswersDTO; -import org.lamsfoundation.lams.tool.mc.McQueContent; +import org.lamsfoundation.lams.tool.mc.McMonitoredUserDTO; +import org.lamsfoundation.lams.tool.mc.McStringComparator; import org.lamsfoundation.lams.tool.mc.McUtils; +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; /** @@ -25,6 +31,7 @@ static Logger logger = Logger.getLogger(MonitoringUtil.class.getName()); /** + * populates all the tool sessions in a map * populateToolSessions(HttpServletRequest request, McContent mcContent) * * @param request @@ -60,6 +67,7 @@ /** + * ends up populating the attempt history for all the users of all the tool sessions for a content * buildGroupsQuestionData(HttpServletRequest request, McContent mcContent) * * @param request @@ -87,23 +95,159 @@ mcMonitoredAnswersDTO.setQuestionUid(mcQueContent.getUid().toString()); mcMonitoredAnswersDTO.setQuestion(mcQueContent.getQuestion()); - List listCandidateAnswers=mcService.findMcOptionsContentByQueId(mcQueContent.getUid()); + List listCandidateAnswers=mcService.findMcOptionNamesByQueId(mcQueContent.getUid()); logger.debug("listCandidateAnswers:..." + listCandidateAnswers); mcMonitoredAnswersDTO.setCandidateAnswers(listCandidateAnswers); + + Map questionAttemptData= buildGroupsAttemptData(request, mcContent, mcQueContent); + logger.debug("questionAttemptData:..." + questionAttemptData); + mcMonitoredAnswersDTO.setQuestionAttempts(questionAttemptData); listMonitoredAnswersContainerDTO.add(mcMonitoredAnswersDTO); + } } logger.debug("final listMonitoredAnswersContainerDTO:..." + listMonitoredAnswersContainerDTO); return listMonitoredAnswersContainerDTO; } - - public static void buildGroupsSessionData(HttpServletRequest request, McContent mcContent) + /** + * helps populating user's attempt history + * buildGroupsAttemptData(HttpServletRequest request, McContent mcContent, McQueContent mcQueContent) + * + * @param request + * @param mcContent + * @param mcQueContent + * @return Map + */ + public static Map buildGroupsAttemptData(HttpServletRequest request, McContent mcContent, McQueContent mcQueContent) { - logger.debug("will be building groups session data for content:..." + mcContent); + logger.debug("will be building groups attempt data for mcQueContent:..." + mcQueContent); IMcService mcService =McUtils.getToolService(request); + Map mapMonitoredAttemptsContainerDTO= new TreeMap(new McStringComparator()); + List listMonitoredAttemptsContainerDTO= new LinkedList(); + + Map summaryToolSessions=populateToolSessions(request, mcContent); + logger.debug("summaryToolSessions: " + summaryToolSessions); + + 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,listMcUsers); + + listMonitoredAttemptsContainerDTO.add(sessionUsersAttempts); + } + } + } + + logger.debug("final listMonitoredAttemptsContainerDTO:..." + listMonitoredAttemptsContainerDTO); + mapMonitoredAttemptsContainerDTO=convertToMap(listMonitoredAttemptsContainerDTO); + logger.debug("final mapMonitoredAttemptsContainerDTO:..." + mapMonitoredAttemptsContainerDTO); + return mapMonitoredAttemptsContainerDTO; } + + + /** + * ends up populating all the user's attempt data of a particular tool session + * populateSessionUsersAttempts(HttpServletRequest request,List listMcUsers) + * + * @param request + * @param listMcUsers + * @return List + */ + public static Map populateSessionUsersAttempts(HttpServletRequest request,List listMcUsers) + { + IMcService mcService =McUtils.getToolService(request); + + Map mapMonitoredUserContainerDTO= new TreeMap(new McStringComparator()); + List listMonitoredUserContainerDTO= new LinkedList(); + + 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()); + List listUserAttempts=mcService.getAttemptsForUser(mcQueUsr.getUid()); + logger.debug("listUserAttempts: " + listUserAttempts); + + Iterator itAttempts=listUserAttempts.iterator(); + while (itAttempts.hasNext()) + { + McUsrAttempt mcUsrAttempt=(McUsrAttempt)itAttempts.next(); + logger.debug("mcUsrAttempt: " + 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(mcUsrAttempt.getQueUsrId().toString()); + mcMonitoredUserDTO.setQueUsrId(mcQueUsr.getUid().toString()); + listMonitoredUserContainerDTO.add(mcMonitoredUserDTO); + } + } + } + } + logger.debug("final listMonitoredUserContainerDTO: " + listMonitoredUserContainerDTO); + mapMonitoredUserContainerDTO=convertToMcMonitoredUserDTOMap(listMonitoredUserContainerDTO); + logger.debug("final mapMonitoredUserContainerDTO:..." + mapMonitoredUserContainerDTO); + return mapMonitoredUserContainerDTO; + } + + + public static Map convertToMap(List list) + { + logger.debug("using convertToMap: " + list); + Map map= new TreeMap(new McStringComparator()); + + Iterator listIterator=list.iterator(); + Long mapIndex=new Long(1); + while (listIterator.hasNext()) + { + Map data=(Map)listIterator.next(); + map.put(mapIndex.toString(), data); + mapIndex=new Long(mapIndex.longValue()+1); + } + return map; + } + + + public static Map convertToMcMonitoredUserDTOMap(List list) + { + logger.debug("using convertToMcMonitoredUserDTOMap: " + list); + Map map= new TreeMap(new McStringComparator()); + + Iterator listIterator=list.iterator(); + Long mapIndex=new Long(1); + + while (listIterator.hasNext()) + { + McMonitoredUserDTO data=(McMonitoredUserDTO)listIterator.next(); + map.put(mapIndex.toString(), data); + mapIndex=new Long(mapIndex.longValue()+1); + } + return map; + } + }