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