From 0f62909705cc5e213781e12968f1aff49692ed2c Mon Sep 17 00:00:00 2001 From: Christoph Thelen <christoph.thelen@mni.thm.de> Date: Wed, 11 Feb 2015 17:48:03 +0100 Subject: [PATCH] Fix calculating point-based progress for single user --- src/main/java/de/thm/arsnova/domain/CourseScore.java | 10 ++++++++++ .../arsnova/domain/PointBasedLearningProgress.java | 2 +- .../java/de/thm/arsnova/domain/QuestionScore.java | 12 ++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/thm/arsnova/domain/CourseScore.java b/src/main/java/de/thm/arsnova/domain/CourseScore.java index 13730285..54008a2d 100644 --- a/src/main/java/de/thm/arsnova/domain/CourseScore.java +++ b/src/main/java/de/thm/arsnova/domain/CourseScore.java @@ -23,6 +23,8 @@ import java.util.Iterator; import java.util.Map; import java.util.Set; +import de.thm.arsnova.entities.User; + public class CourseScore implements Iterable<QuestionScore> { private final Map<String, QuestionScore> scores = new HashMap<String, QuestionScore>(); @@ -61,6 +63,14 @@ public class CourseScore implements Iterable<QuestionScore> { return score; } + public double getTotalUserScore(User user) { + int score = 0; + for (QuestionScore questionScore : this) { + score += questionScore.getTotalUserScore(user); + } + return score; + } + public int getTotalUserCount() { Set<String> users = new HashSet<String>(); for (QuestionScore questionScore : this) { diff --git a/src/main/java/de/thm/arsnova/domain/PointBasedLearningProgress.java b/src/main/java/de/thm/arsnova/domain/PointBasedLearningProgress.java index be968bff..c7168bc0 100644 --- a/src/main/java/de/thm/arsnova/domain/PointBasedLearningProgress.java +++ b/src/main/java/de/thm/arsnova/domain/PointBasedLearningProgress.java @@ -56,7 +56,7 @@ public class PointBasedLearningProgress implements LearningProgress { int courseProgress = calculateCourseScore(courseScore); final double courseMaximumValue = courseScore.getMaximumScore(); - final double userTotalValue = courseScore.getTotalUserScore(); + final double userTotalValue = courseScore.getTotalUserScore(user); if (courseMaximumValue == 0) { return new AbstractMap.SimpleEntry<Integer, Integer>(0, courseProgress); diff --git a/src/main/java/de/thm/arsnova/domain/QuestionScore.java b/src/main/java/de/thm/arsnova/domain/QuestionScore.java index 3aceb3e9..4584d509 100644 --- a/src/main/java/de/thm/arsnova/domain/QuestionScore.java +++ b/src/main/java/de/thm/arsnova/domain/QuestionScore.java @@ -22,6 +22,8 @@ import java.util.Iterator; import java.util.List; import java.util.Set; +import de.thm.arsnova.entities.User; + public class QuestionScore implements Iterable<UserScore> { private String questionId; @@ -56,6 +58,16 @@ public class QuestionScore implements Iterable<UserScore> { return totalScore; } + public int getTotalUserScore(User user) { + int totalScore = 0; + for (UserScore score : userScores) { + if (score.isUser(user)) { + totalScore += score.getScore(); + } + } + return totalScore; + } + public int getUserCount() { return userScores.size(); } -- GitLab