Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/IScratchieService.java =================================================================== diff -u -r3a8732a27caaa2eda8712c7a2f24f5788c7d110a -ree92eae8682d1b4674c6f918ec79b42dd06f80ec --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/IScratchieService.java (.../IScratchieService.java) (revision 3a8732a27caaa2eda8712c7a2f24f5788c7d110a) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/IScratchieService.java (.../IScratchieService.java) (revision ee92eae8682d1b4674c6f918ec79b42dd06f80ec) @@ -400,6 +400,14 @@ */ String[] getPresetMarks(Scratchie scratchie); + /** + * Return a maximum possible mark that user can get on answering all questions. + * + * @param scratchie + * @return + */ + int getMaxPossibleScore(Scratchie scratchie); + /** Get the raw marks for display in a graph in monitoring */ List getMarksArray(Long contentId); Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieOutputFactory.java =================================================================== diff -u -r3a8732a27caaa2eda8712c7a2f24f5788c7d110a -ree92eae8682d1b4674c6f918ec79b42dd06f80ec --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieOutputFactory.java (.../ScratchieOutputFactory.java) (revision 3a8732a27caaa2eda8712c7a2f24f5788c7d110a) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieOutputFactory.java (.../ScratchieOutputFactory.java) (revision ee92eae8682d1b4674c6f918ec79b42dd06f80ec) @@ -62,22 +62,13 @@ TreeMap definitionMap = new TreeMap(); if (toolContentObject != null) { - Scratchie scratchie = (Scratchie) toolContentObject; - int itemsNumber = scratchie.getScratchieItems().size(); // calculate totalMarksPossible - String[] presetMarks = scratchieService.getPresetMarks(scratchie); - long totalMarksPossible = (presetMarks.length > 0) ? itemsNumber * Integer.parseInt(presetMarks[0]) : 0; + long maxPossibleScore = scratchieService.getMaxPossibleScore(scratchie); - // count in extra point if this option is ON - - if (scratchie.isExtraPoint()) { - totalMarksPossible += itemsNumber; - } - ToolOutputDefinition definition = buildRangeDefinition(ScratchieConstants.LEARNER_MARK, new Long(0), - totalMarksPossible, true); + maxPossibleScore, true); definitionMap.put(ScratchieConstants.LEARNER_MARK, definition); } Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java =================================================================== diff -u -r3a8732a27caaa2eda8712c7a2f24f5788c7d110a -ree92eae8682d1b4674c6f918ec79b42dd06f80ec --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java (.../ScratchieServiceImpl.java) (revision 3a8732a27caaa2eda8712c7a2f24f5788c7d110a) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java (.../ScratchieServiceImpl.java) (revision ee92eae8682d1b4674c6f918ec79b42dd06f80ec) @@ -243,7 +243,22 @@ return presetMarks.split(","); } + @Override + public int getMaxPossibleScore(Scratchie scratchie) { + int itemsNumber = scratchie.getScratchieItems().size(); + // calculate totalMarksPossible + String[] presetMarks = getPresetMarks(scratchie); + int maxPossibleScore = (presetMarks.length > 0) ? itemsNumber * Integer.parseInt(presetMarks[0]) : 0; + + // count an extra point if such option is ON + if (scratchie.isExtraPoint()) { + maxPossibleScore += itemsNumber; + } + + return maxPossibleScore; + } + @Override public void deleteScratchieItem(Long uid) { scratchieItemDao.removeObject(ScratchieItem.class, uid); Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/LearningAction.java =================================================================== diff -u -r868cbadb5ccd51c7172a97cfd02b31edbaa9d97a -ree92eae8682d1b4674c6f918ec79b42dd06f80ec --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/LearningAction.java (.../LearningAction.java) (revision 868cbadb5ccd51c7172a97cfd02b31edbaa9d97a) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/web/action/LearningAction.java (.../LearningAction.java) (revision ee92eae8682d1b4674c6f918ec79b42dd06f80ec) @@ -294,10 +294,7 @@ } // calculate max score - int maxScore = items.size() * 4; - if (scratchie.isExtraPoint()) { - maxScore += items.size(); - } + int maxScore = service.getMaxPossibleScore(scratchie); sessionMap.put(ScratchieConstants.ATTR_ITEM_LIST, items); sessionMap.put(ScratchieConstants.ATTR_SCRATCHIE, scratchie);