From aef43eb637dbde80638f533a3ba1935b207b096b Mon Sep 17 00:00:00 2001
From: Daniel Gerhardt <code@dgerhardt.net>
Date: Fri, 16 Feb 2018 19:02:56 +0100
Subject: [PATCH] Implement (incomplete) migration of AnswerStatistics

---
 .../entities/migration/ToV2Migrator.java      | 33 +++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/src/main/java/de/thm/arsnova/entities/migration/ToV2Migrator.java b/src/main/java/de/thm/arsnova/entities/migration/ToV2Migrator.java
index 92655f42b..6109f0a41 100644
--- a/src/main/java/de/thm/arsnova/entities/migration/ToV2Migrator.java
+++ b/src/main/java/de/thm/arsnova/entities/migration/ToV2Migrator.java
@@ -17,6 +17,7 @@
  */
 package de.thm.arsnova.entities.migration;
 
+import de.thm.arsnova.entities.AnswerStatistics;
 import de.thm.arsnova.entities.ChoiceQuestionContent;
 import de.thm.arsnova.entities.UserProfile;
 import de.thm.arsnova.entities.migration.v2.*;
@@ -310,4 +311,36 @@ public class ToV2Migrator {
 
 		return to;
 	}
+
+	public List<Answer> migrate(final AnswerStatistics from,
+			final de.thm.arsnova.entities.ChoiceQuestionContent content, int round) {
+		if (round < 1 || round > content.getState().getRound()) {
+			throw new IllegalArgumentException("Invalid value for round");
+		}
+		final List<Answer> to  = new ArrayList<>();
+		final AnswerStatistics.RoundStatistics stats = from.getRoundStatistics().get(round - 1);
+
+		if (content.isAbstentionsAllowed()) {
+			final Answer abstention = new Answer();
+			abstention.setQuestionId(content.getId());
+			abstention.setPiRound(round);
+			abstention.setAnswerCount(stats.getAbstentionCount());
+			abstention.setAbstentionCount(stats.getAbstentionCount());
+			to.add(abstention);
+		}
+
+		int i = 0;
+		for (ChoiceQuestionContent.AnswerOption option : content.getOptions()) {
+			Answer answer = new Answer();
+			answer.setQuestionId(content.getId());
+			answer.setPiRound(round);
+			answer.setAnswerCount(stats.getIndependentCounts()[i]);
+			answer.setAbstentionCount(stats.getAbstentionCount());
+			answer.setAnswerText(option.getLabel());
+			to.add(answer);
+			i++;
+		}
+
+		return to;
+	}
 }
-- 
GitLab