Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McAppConstants.java =================================================================== diff -u -r26ea61eae29934bddf4595c3c1aededeeeaca933 -r8a907fb13d71011aa7faf97c4a4ca8aedda0a00b --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McAppConstants.java (.../McAppConstants.java) (revision 26ea61eae29934bddf4595c3c1aededeeeaca933) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McAppConstants.java (.../McAppConstants.java) (revision 8a907fb13d71011aa7faf97c4a4ca8aedda0a00b) @@ -276,6 +276,12 @@ public static final String LEARNING_MODE = "learningMode"; public static final String EXPORT_USER_ID = "exportUserId"; public static final String REFLECT = "reflect"; + + //output definitions + public static final String ATTR_ACTIVITY_EVALUATION = "activityEvaluation"; + public static final String ATTR_TOOL_OUTPUT_DEFINITIONS = "toolOutputDefinitions"; + public static final String OUTPUT_NAME_LEARNER_MARK = "learner.mark"; + public static final String OUTPUT_NAME_LEARNER_ALL_CORRECT = "learner.all.correct"; /* * exception constants Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/mcApplicationContext.xml =================================================================== diff -u -r3446506b8acd4257a342ac698bede2317c3fcdda -r8a907fb13d71011aa7faf97c4a4ca8aedda0a00b --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/mcApplicationContext.xml (.../mcApplicationContext.xml) (revision 3446506b8acd4257a342ac698bede2317c3fcdda) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/mcApplicationContext.xml (.../mcApplicationContext.xml) (revision 8a907fb13d71011aa7faf97c4a4ca8aedda0a00b) @@ -94,6 +94,7 @@ PROPAGATION_REQUIRED,-McApplicationException PROPAGATION_REQUIRED,-McApplicationException PROPAGATION_REQUIRED, -McApplicationException + PROPAGATION_REQUIRED,-McApplicationException PROPAGATION_REQUIRED,-McApplicationException PROPAGATION_REQUIRED, -MccpApplicationException PROPAGATION_REQUIRED,-McApplicationException Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/IMcService.java =================================================================== diff -u -r26ea61eae29934bddf4595c3c1aededeeeaca933 -r8a907fb13d71011aa7faf97c4a4ca8aedda0a00b --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/IMcService.java (.../IMcService.java) (revision 26ea61eae29934bddf4595c3c1aededeeeaca933) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/IMcService.java (.../IMcService.java) (revision 8a907fb13d71011aa7faf97c4a4ca8aedda0a00b) @@ -171,6 +171,18 @@ * @return */ boolean isGroupedActivity(long toolContentID); + + /** + * Get the definitions for possible output for an activity, based on the toolContentId. These may be definitions + * that are always available for the tool (e.g. number of marks for Multiple Choice) or a custom definition created + * for a particular activity such as the answer to the third question contains the word Koala and hence the need for + * the toolContentId + * + * @return SortedMap of ToolOutputDefinitions with the key being the name of each definition + */ + String getActivityEvaluation(Long toolContentId); + + void setActivityEvaluation(Long toolContentId, String toolOutputDefinition); /** * @param mcContent Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/MCOutputFactory.java =================================================================== diff -u -r26ea61eae29934bddf4595c3c1aededeeeaca933 -r8a907fb13d71011aa7faf97c4a4ca8aedda0a00b --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/MCOutputFactory.java (.../MCOutputFactory.java) (revision 26ea61eae29934bddf4595c3c1aededeeeaca933) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/MCOutputFactory.java (.../MCOutputFactory.java) (revision 8a907fb13d71011aa7faf97c4a4ca8aedda0a00b) @@ -31,6 +31,7 @@ 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.pojos.McContent; import org.lamsfoundation.lams.tool.mc.pojos.McOptsContent; import org.lamsfoundation.lams.tool.mc.pojos.McQueContent; @@ -40,9 +41,6 @@ public class MCOutputFactory extends OutputFactory { - protected static final String OUTPUT_NAME_LEARNER_MARK = "learner.mark"; - protected static final String OUTPUT_NAME_LEARNER_ALL_CORRECT = "learner.all.correct"; - /** * @see org.lamsfoundation.lams.tool.OutputDefinitionFactory#getToolOutputDefinitions(java.lang.Object) */ @@ -51,15 +49,15 @@ int definitionType) { TreeMap definitionMap = new TreeMap(); - ToolOutputDefinition definition = buildBooleanOutputDefinition(OUTPUT_NAME_LEARNER_ALL_CORRECT); - definitionMap.put(OUTPUT_NAME_LEARNER_ALL_CORRECT, definition); + ToolOutputDefinition definition = buildBooleanOutputDefinition(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT); + definitionMap.put(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT, definition); if (toolContentObject != null) { McContent content = (McContent) toolContentObject; - definition = buildRangeDefinition(OUTPUT_NAME_LEARNER_MARK, new Long(0), + definition = buildRangeDefinition(McAppConstants.OUTPUT_NAME_LEARNER_MARK, new Long(0), new Long(content.getTotalMarksPossible().longValue()), true); - definitionMap.put(OUTPUT_NAME_LEARNER_MARK, definition); + definitionMap.put(McAppConstants.OUTPUT_NAME_LEARNER_MARK, definition); } else { log.error( "Unable to build content based output definitions for Multiple Choice as no tool content object supplied. Only including the definitions that do not need any content."); @@ -79,11 +77,12 @@ McQueUsr queUser = mcService.getMcUserBySession(learnerId, session.getUid()); if (queUser != null) { - if (names == null || names.contains(OUTPUT_NAME_LEARNER_MARK)) { - output.put(OUTPUT_NAME_LEARNER_MARK, getLearnerMark(queUser)); + if (names == null || names.contains(McAppConstants.OUTPUT_NAME_LEARNER_MARK)) { + output.put(McAppConstants.OUTPUT_NAME_LEARNER_MARK, getLearnerMark(queUser)); } - if (names == null || names.contains(OUTPUT_NAME_LEARNER_ALL_CORRECT)) { - output.put(OUTPUT_NAME_LEARNER_ALL_CORRECT, getLearnerAllCorrect(mcService, queUser)); + if (names == null || names.contains(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT)) { + output.put(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT, + getLearnerAllCorrect(mcService, queUser)); } } } @@ -98,9 +97,9 @@ McQueUsr queUser = mcService.getMcUserBySession(learnerId, session.getUid()); if (queUser != null) { - if (name.equals(OUTPUT_NAME_LEARNER_MARK)) { + if (name.equals(McAppConstants.OUTPUT_NAME_LEARNER_MARK)) { return getLearnerMark(queUser); - } else if (name.equals(OUTPUT_NAME_LEARNER_ALL_CORRECT)) { + } else if (name.equals(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT)) { return getLearnerAllCorrect(mcService, queUser); } } @@ -120,8 +119,8 @@ } else { mark = new Long(0); } - return new ToolOutput(MCOutputFactory.OUTPUT_NAME_LEARNER_MARK, - getI18NText(MCOutputFactory.OUTPUT_NAME_LEARNER_MARK, true), mark); + return new ToolOutput(McAppConstants.OUTPUT_NAME_LEARNER_MARK, + getI18NText(McAppConstants.OUTPUT_NAME_LEARNER_MARK, true), mark); } /** @@ -130,8 +129,8 @@ */ private ToolOutput getLearnerAllCorrect(IMcService mcService, McQueUsr queUser) { boolean allCorrect = allQuestionsCorrect(mcService, queUser); - return new ToolOutput(MCOutputFactory.OUTPUT_NAME_LEARNER_ALL_CORRECT, - getI18NText(MCOutputFactory.OUTPUT_NAME_LEARNER_ALL_CORRECT, true), allCorrect); + return new ToolOutput(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT, + getI18NText(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT, true), allCorrect); } // written to cope with more than one correct option for each question but only tested with Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McMonitoringAction.java =================================================================== diff -u -r26ea61eae29934bddf4595c3c1aededeeeaca933 -r8a907fb13d71011aa7faf97c4a4ca8aedda0a00b --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McMonitoringAction.java (.../McMonitoringAction.java) (revision 26ea61eae29934bddf4595c3c1aededeeeaca933) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/McMonitoringAction.java (.../McMonitoringAction.java) (revision 8a907fb13d71011aa7faf97c4a4ca8aedda0a00b) @@ -261,6 +261,32 @@ } /** + * Set tool's activityEvaluation + * + * @param mapping + * @param form + * @param request + * @param response + * @return + * @throws JSONException + * @throws IOException + */ + public ActionForward setActivityEvaluation(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws JSONException, IOException { + IMcService service = McServiceProxy.getMcService(getServlet().getServletContext()); + + Long contentID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); + String activityEvaluation = WebUtil.readStrParam(request, McAppConstants.ATTR_ACTIVITY_EVALUATION); + service.setActivityEvaluation(contentID, activityEvaluation); + + JSONObject responseJSON = new JSONObject(); + responseJSON.put("success", "true"); + response.setContentType("application/json;charset=utf-8"); + response.getWriter().print(new String(responseJSON.toString())); + return null; + } + + /** * Populate user jqgrid table on summary page. */ public ActionForward userMasterDetail(ActionMapping mapping, ActionForm form, HttpServletRequest request, Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/MonitoringUtil.java =================================================================== diff -u -r26ea61eae29934bddf4595c3c1aededeeeaca933 -r8a907fb13d71011aa7faf97c4a4ca8aedda0a00b --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/MonitoringUtil.java (.../MonitoringUtil.java) (revision 26ea61eae29934bddf4595c3c1aededeeeaca933) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/MonitoringUtil.java (.../MonitoringUtil.java) (revision 8a907fb13d71011aa7faf97c4a4ca8aedda0a00b) @@ -22,6 +22,7 @@ package org.lamsfoundation.lams.tool.mc.web; +import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.LinkedList; @@ -174,6 +175,14 @@ request.setAttribute("submissionDeadline", tzSubmissionDeadline.getTime()); } + //prepare toolOutputDefinitions and activityEvaluation + List toolOutputDefinitions = new ArrayList(); + toolOutputDefinitions.add(McAppConstants.OUTPUT_NAME_LEARNER_MARK); + toolOutputDefinitions.add(McAppConstants.OUTPUT_NAME_LEARNER_ALL_CORRECT); + String activityEvaluation = mcService.getActivityEvaluation(content.getMcContentId()); + request.setAttribute(McAppConstants.ATTR_TOOL_OUTPUT_DEFINITIONS, toolOutputDefinitions); + request.setAttribute(McAppConstants.ATTR_ACTIVITY_EVALUATION, activityEvaluation); + boolean isGroupedActivity = mcService.isGroupedActivity(new Long(content.getMcContentId())); request.setAttribute("isGroupedActivity", isGroupedActivity); }