Index: lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsCoreToolService.java =================================================================== diff -u -rd1d97d8c7da9ec5a96332afba14fa04970882bf9 -rb7de687cc7c54815ea555bb7674ef5b104e1c619 --- lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsCoreToolService.java (.../ILamsCoreToolService.java) (revision d1d97d8c7da9ec5a96332afba14fa04970882bf9) +++ lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsCoreToolService.java (.../ILamsCoreToolService.java) (revision b7de687cc7c54815ea555bb7674ef5b104e1c619) @@ -283,7 +283,7 @@ void forceCompleteActivity(ToolSession toolSession, User learner) throws ToolException; /** - * Get activity's max possible mark. + * Get activity's max possible mark (which doesn't include marks that are set not to be passed to gradebook). * * @param activity * @return activity's max possible mark if available, null otherwise Index: lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsCoreToolService.java =================================================================== diff -u -rd1d97d8c7da9ec5a96332afba14fa04970882bf9 -rb7de687cc7c54815ea555bb7674ef5b104e1c619 --- lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsCoreToolService.java (.../LamsCoreToolService.java) (revision d1d97d8c7da9ec5a96332afba14fa04970882bf9) +++ lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsCoreToolService.java (.../LamsCoreToolService.java) (revision b7de687cc7c54815ea555bb7674ef5b104e1c619) @@ -606,38 +606,32 @@ @Override public Long getActivityMaxPossibleMark(ToolActivity activity) { - SortedMap map = getOutputDefinitionsFromTool(activity.getToolContentId(), - ToolOutputDefinition.DATA_OUTPUT_DEFINITION_TYPE_CONDITION); - Set actEvals = activity.getActivityEvaluations(); + // if ActivityEvaluation is not set it means activity will produce no toolOutputs and thus max possible mark is null + if ((activity == null) || (activity.getActivityEvaluations() == null) + || activity.getActivityEvaluations().isEmpty()) { + return null; + } - if (map != null) { - for (String key : map.keySet()) { - ToolOutputDefinition definition = map.get(key); - if ((actEvals != null) && (actEvals.size() > 0)) { + // the first available activity evaluation will be the only one that activity has + ActivityEvaluation activityEvaluation = activity.getActivityEvaluations().iterator().next(); - // get first evaluation - ActivityEvaluation actEval = actEvals.iterator().next(); + // searching for the according toolOutputDefinition + SortedMap toolOutputDefinitions = getOutputDefinitionsFromTool( + activity.getToolContentId(), ToolOutputDefinition.DATA_OUTPUT_DEFINITION_TYPE_CONDITION); + for (String key : toolOutputDefinitions.keySet()) { + ToolOutputDefinition toolOutputDefinition = toolOutputDefinitions.get(key); - if (actEval.getToolOutputDefinition().equals(key)) { + if (activityEvaluation.getToolOutputDefinition().equals(key)) { - Object upperLimit = definition.getEndValue(); - if ((upperLimit != null) && (upperLimit instanceof Long)) { - return (Long) upperLimit; - } - break; - } - } else { - if ((definition.isDefaultGradebookMark() != null) && definition.isDefaultGradebookMark()) { - Object upperLimit = definition.getEndValue(); - if ((upperLimit != null) && (upperLimit instanceof Long)) { - return (Long) upperLimit; - } - break; - } + Object upperLimit = toolOutputDefinition.getEndValue(); + if ((upperLimit != null) && (upperLimit instanceof Long)) { + return (Long) upperLimit; } + break; } } + return null; }