Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -r79100cc7efdac107d0a09ccdd77b2721f7654861 -r5fa265642903b837423bc95259ba3cef309cdf12 Binary files differ Index: lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsCoreToolService.java =================================================================== diff -u -r84fdcb946a3188efb2c259c4d264d95d46803a06 -r5fa265642903b837423bc95259ba3cef309cdf12 --- lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsCoreToolService.java (.../LamsCoreToolService.java) (revision 84fdcb946a3188efb2c259c4d264d95d46803a06) +++ lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsCoreToolService.java (.../LamsCoreToolService.java) (revision 5fa265642903b837423bc95259ba3cef309cdf12) @@ -667,29 +667,37 @@ @Override public Long getLessonMaxPossibleMark(Lesson lesson) { + Set activities = getLearningDesignActivities(lesson.getLearningDesign()); + // calculate lesson's MaxPossibleMark - Set activities = getLessonActivities(lesson); Long lessonMaxPossibleMark = 0L; - for (ToolActivity activity : activities) { - Long activityMaxPossibleMark = getActivityMaxPossibleMark(activity); - if (activityMaxPossibleMark != null) { - lessonMaxPossibleMark += activityMaxPossibleMark; + //take into account whether learning design uses grade weight + if (isWeightedMarks(activities)) { + lessonMaxPossibleMark = 100L; + + } else { + for (ToolActivity toolActivity : activities) { + Long activityMaxPossibleMark = getActivityMaxPossibleMark(toolActivity); + if (activityMaxPossibleMark != null) { + lessonMaxPossibleMark += activityMaxPossibleMark; + } } } + return lessonMaxPossibleMark; } @Override public boolean isWeightedMarks(LearningDesign design) { - Set activities = design.getActivities(); - for (Activity activity : activities) { - if (activity.isToolActivity()) { - // fetch real object, otherwise there is a cast error - ToolActivity act = (ToolActivity) activityDAO.getActivityByActivityId(activity.getActivityId()); - ActivityEvaluation eval = act.getEvaluation(); - if (eval != null && eval.getWeight() != null && eval.getWeight() > 0) { - return true; - } + Set activities = getLearningDesignActivities(design); + return isWeightedMarks(activities); + } + + private boolean isWeightedMarks(Set activities) { + for (ToolActivity toolActivity : activities) { + ActivityEvaluation eval = toolActivity.getEvaluation(); + if (eval != null && eval.getWeight() != null && eval.getWeight() > 0) { + return true; } } return false; @@ -700,7 +708,7 @@ * solves problem with first activity unable to cast to ToolActivity. */ @SuppressWarnings("unchecked") - private Set getLessonActivities(Lesson lesson) { + private Set getLearningDesignActivities(LearningDesign design) { Set activities = new TreeSet(); Set toolActivities = new TreeSet(); @@ -711,10 +719,9 @@ * THIS IS A HACK to retrieve the first tool activity manually so it can be cast as a ToolActivity - if it is * one */ - Activity firstActivity = activityDAO - .getActivityByActivityId(lesson.getLearningDesign().getFirstActivity().getActivityId()); + Activity firstActivity = activityDAO.getActivityByActivityId(design.getFirstActivity().getActivityId()); activities.add(firstActivity); - activities.addAll(lesson.getLearningDesign().getActivities()); + activities.addAll(design.getActivities()); for (Activity activity : activities) { if (activity instanceof ToolActivity) {