Index: lams_tool_lamc/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== diff -u -r26ea61eae29934bddf4595c3c1aededeeeaca933 -rc3a5c8f5a2521c37b0484e5aac67ff5ae716fefc --- lams_tool_lamc/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 26ea61eae29934bddf4595c3c1aededeeeaca933) +++ lams_tool_lamc/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision c3a5c8f5a2521c37b0484e5aac67ff5ae716fefc) @@ -287,6 +287,8 @@ label.info.use.select.leader.outputs =Group leader's option is enabled label.monitoring.group.leader =Group leader label.authoring.export.qti =Export IMS QTI +label.tool.output =Tool Output +label.tool.output.has.been.changed =Tool Output has been changed +label.operation.failed =Operation failed. - #======= End labels: Exported 281 labels for en AU ===== Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/IMcUsrAttemptDAO.java =================================================================== diff -u -r26ea61eae29934bddf4595c3c1aededeeeaca933 -rc3a5c8f5a2521c37b0484e5aac67ff5ae716fefc --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/IMcUsrAttemptDAO.java (.../IMcUsrAttemptDAO.java) (revision 26ea61eae29934bddf4595c3c1aededeeeaca933) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/IMcUsrAttemptDAO.java (.../IMcUsrAttemptDAO.java) (revision c3a5c8f5a2521c37b0484e5aac67ff5ae716fefc) @@ -24,6 +24,7 @@ import java.util.List; +import org.lamsfoundation.lams.tool.mc.dto.ToolOutputDTO; import org.lamsfoundation.lams.tool.mc.pojos.McUsrAttempt; /** @@ -101,5 +102,13 @@ int getUserTotalMark(final Long userUid); McUsrAttempt getUserAttemptByUid(Long uid); + + /** + * Returns all existing total marks for users belonging to tool content. + * + * @param toolContentId + * @return + */ + List getLearnerMarksByContentId(Long toolContentId); } Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/hibernate/McUsrAttemptDAO.java =================================================================== diff -u -r26ea61eae29934bddf4595c3c1aededeeeaca933 -rc3a5c8f5a2521c37b0484e5aac67ff5ae716fefc --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/hibernate/McUsrAttemptDAO.java (.../McUsrAttemptDAO.java) (revision 26ea61eae29934bddf4595c3c1aededeeeaca933) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dao/hibernate/McUsrAttemptDAO.java (.../McUsrAttemptDAO.java) (revision c3a5c8f5a2521c37b0484e5aac67ff5ae716fefc) @@ -22,10 +22,13 @@ package org.lamsfoundation.lams.tool.mc.dao.hibernate; +import java.util.ArrayList; import java.util.List; import org.hibernate.FlushMode; import org.lamsfoundation.lams.tool.mc.dao.IMcUsrAttemptDAO; +import org.lamsfoundation.lams.tool.mc.dto.ToolOutputDTO; +import org.lamsfoundation.lams.tool.mc.pojos.McQueUsr; import org.lamsfoundation.lams.tool.mc.pojos.McUsrAttempt; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; @@ -128,5 +131,32 @@ } return ((Number) list.get(0)).intValue(); } + + @Override + public List getLearnerMarksByContentId(Long toolContentId) { + + final String FIND_MARKS_FOR_CONTENT_ID = "SELECT user.queUsrId, user.lastAttemptTotalMark FROM " + + McQueUsr.class.getName() + + " user WHERE user.mcSession.mcContent.mcContentId = ? AND user.responseFinalised = true"; + List list = getHibernateTemplate().find(FIND_MARKS_FOR_CONTENT_ID, new Object[] { toolContentId }); + + List toolOutputDtos = new ArrayList(); + if (list != null && list.size() > 0) { + for (Object[] element : list) { + + Long userId = ((Number) element[0]).longValue(); + Integer grade = (Integer) element[1]; + + ToolOutputDTO toolOutputDto = new ToolOutputDTO(); + toolOutputDto.setUserId(userId.intValue()); + toolOutputDto.setMark(grade); + toolOutputDtos.add(toolOutputDto); + } + + } + + return toolOutputDtos; + } + } \ No newline at end of file Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dto/ToolOutputDTO.java =================================================================== diff -u --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dto/ToolOutputDTO.java (revision 0) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/dto/ToolOutputDTO.java (revision c3a5c8f5a2521c37b0484e5aac67ff5ae716fefc) @@ -0,0 +1,29 @@ +package org.lamsfoundation.lams.tool.mc.dto; + +import org.lamsfoundation.lams.tool.ToolOutputValue; + +/** + * An output for a tool. + */ +public class ToolOutputDTO { + + private Integer userId; + private Integer mark; + + public Integer getMark() { + return mark; + } + + public void setMark(Integer mark) { + this.mark = mark; + } + + public Integer getUserId() { + return userId; + } + + public void setUserId(Integer userId) { + this.userId = userId; + } +} + Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/IMcService.java =================================================================== diff -u -r8a907fb13d71011aa7faf97c4a4ca8aedda0a00b -rc3a5c8f5a2521c37b0484e5aac67ff5ae716fefc --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/IMcService.java (.../IMcService.java) (revision 8a907fb13d71011aa7faf97c4a4ca8aedda0a00b) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/IMcService.java (.../IMcService.java) (revision c3a5c8f5a2521c37b0484e5aac67ff5ae716fefc) @@ -38,6 +38,7 @@ import org.lamsfoundation.lams.tool.mc.McSessionMarkDTO; import org.lamsfoundation.lams.tool.mc.McUserMarkDTO; import org.lamsfoundation.lams.tool.mc.ReflectionDTO; +import org.lamsfoundation.lams.tool.mc.dto.ToolOutputDTO; import org.lamsfoundation.lams.tool.mc.pojos.McContent; import org.lamsfoundation.lams.tool.mc.pojos.McOptsContent; import org.lamsfoundation.lams.tool.mc.pojos.McQueContent; @@ -131,6 +132,8 @@ void updateMcOptionsContent(McOptsContent mcOptsContent) throws McApplicationException; McUsrAttempt getUserAttemptByQuestion(Long queUsrUid, Long mcQueContentId) throws McApplicationException; + + List getLearnerMarksByContentId(Long toolContentId); void copyToolContent(Long fromContentId, Long toContentId) throws ToolException; Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/MCOutputFactory.java =================================================================== diff -u -r8a907fb13d71011aa7faf97c4a4ca8aedda0a00b -rc3a5c8f5a2521c37b0484e5aac67ff5ae716fefc --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/MCOutputFactory.java (.../MCOutputFactory.java) (revision 8a907fb13d71011aa7faf97c4a4ca8aedda0a00b) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/MCOutputFactory.java (.../MCOutputFactory.java) (revision c3a5c8f5a2521c37b0484e5aac67ff5ae716fefc) @@ -23,15 +23,18 @@ package org.lamsfoundation.lams.tool.mc.service; +import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Set; import java.util.SortedMap; import java.util.TreeMap; import org.lamsfoundation.lams.tool.OutputFactory; import org.lamsfoundation.lams.tool.ToolOutput; import org.lamsfoundation.lams.tool.ToolOutputDefinition; import org.lamsfoundation.lams.tool.mc.McAppConstants; +import org.lamsfoundation.lams.tool.mc.dto.ToolOutputDTO; import org.lamsfoundation.lams.tool.mc.pojos.McContent; import org.lamsfoundation.lams.tool.mc.pojos.McOptsContent; import org.lamsfoundation.lams.tool.mc.pojos.McQueContent; @@ -107,7 +110,54 @@ } return null; } + + public List getToolOutputs(String name, IMcService assessmentService, Long toolContentId) { + if ((name != null) && (toolContentId != null)) { + if (name.equals(McAppConstants.OUTPUT_NAME_LEARNER_MARK)) { + List toolOutputDtos = assessmentService.getLearnerMarksByContentId(toolContentId); + + //convert toolOutputDtos to toolOutputs + List toolOutputs = new ArrayList(); + for (ToolOutputDTO toolOutputDto : toolOutputDtos) { + float totalMark = toolOutputDto.getMark() == null ? 0 : toolOutputDto.getMark().floatValue(); + + ToolOutput toolOutput = new ToolOutput(McAppConstants.OUTPUT_NAME_LEARNER_MARK, + getI18NText(McAppConstants.OUTPUT_NAME_LEARNER_MARK, true), totalMark); + toolOutput.setUserId(toolOutputDto.getUserId().intValue()); + toolOutputs.add(toolOutput); + } + + return toolOutputs; + + } else if (name.equals(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT)) { + List toolOutputDtos = assessmentService.getLearnerMarksByContentId(toolContentId); + + //calculate max possible total mark + int maxMark = 0; + McContent mcContent = assessmentService.getMcContent(toolContentId); + for (McQueContent question : (Set)mcContent.getMcQueContents()) { + maxMark += question.getMark(); + } + + //convert toolOutputDtos to toolOutputs + List toolOutputs = new ArrayList(); + for (ToolOutputDTO toolOutputDto : toolOutputDtos) { + float totalMark = toolOutputDto.getMark() == null ? 0 : toolOutputDto.getMark().floatValue(); + boolean isAllQuestionAnswersCorrect = totalMark == maxMark; + + ToolOutput toolOutput = new ToolOutput(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT, + getI18NText(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT, true), isAllQuestionAnswersCorrect); + toolOutput.setUserId(toolOutputDto.getUserId().intValue()); + toolOutputs.add(toolOutput); + } + + return toolOutputs; + } + } + return null; + } + /** * Get the mark for a specific user. This gets the mark associated with the last attempt. Will always return a * ToolOutput object. Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java =================================================================== diff -u -rde44e2e970afac102177634d2e9106919f65f773 -rc3a5c8f5a2521c37b0484e5aac67ff5ae716fefc --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java (.../McServicePOJO.java) (revision de44e2e970afac102177634d2e9106919f65f773) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McServicePOJO.java (.../McServicePOJO.java) (revision c3a5c8f5a2521c37b0484e5aac67ff5ae716fefc) @@ -96,6 +96,7 @@ import org.lamsfoundation.lams.tool.mc.dao.IMcSessionDAO; import org.lamsfoundation.lams.tool.mc.dao.IMcUserDAO; import org.lamsfoundation.lams.tool.mc.dao.IMcUsrAttemptDAO; +import org.lamsfoundation.lams.tool.mc.dto.ToolOutputDTO; import org.lamsfoundation.lams.tool.mc.pojos.McContent; import org.lamsfoundation.lams.tool.mc.pojos.McOptsContent; import org.lamsfoundation.lams.tool.mc.pojos.McQueContent; @@ -679,6 +680,11 @@ e); } } + + @Override + public List getLearnerMarksByContentId(Long toolContentId) { + return mcUsrAttemptDAO.getLearnerMarksByContentId(toolContentId); + } @Override public List getQuestionsByContentUid(final Long contentUid) throws McApplicationException { @@ -1615,7 +1621,7 @@ @Override public List getToolOutputs(String name, Long toolContentId) { - return new ArrayList(); + return mcOutputFactory.getToolOutputs(name, this, toolContentId); } @Override Index: lams_tool_lamc/web/monitoring/Stats.jsp =================================================================== diff -u -r4d139bddc3cdd41d32d9f3033f2100c711d8c0c5 -rc3a5c8f5a2521c37b0484e5aac67ff5ae716fefc --- lams_tool_lamc/web/monitoring/Stats.jsp (.../Stats.jsp) (revision 4d139bddc3cdd41d32d9f3033f2100c711d8c0c5) +++ lams_tool_lamc/web/monitoring/Stats.jsp (.../Stats.jsp) (revision c3a5c8f5a2521c37b0484e5aac67ff5ae716fefc) @@ -1,8 +1,36 @@ <%@ include file="/common/taglibs.jsp"%> - + + -
@@ -21,4 +49,29 @@
\ No newline at end of file + + +

+ + + + + +

+
+ +