From a1018817c4314f25dbea2cbd1fc16de0a14e461d Mon Sep 17 00:00:00 2001 From: Daniel Gerhardt <code@dgerhardt.net> Date: Sat, 11 Aug 2018 12:09:11 +0200 Subject: [PATCH] Use v3 Content for v2 -> v3 migration for Answers --- .../controller/v2/ContentController.java | 6 ++-- .../entities/migration/FromV2Migrator.java | 25 ++++++--------- .../migration/FromV2MigratorTest.java | 31 ++++++++++--------- 3 files changed, 27 insertions(+), 35 deletions(-) diff --git a/src/main/java/de/thm/arsnova/controller/v2/ContentController.java b/src/main/java/de/thm/arsnova/controller/v2/ContentController.java index 3cd08b75c..a0b71d115 100644 --- a/src/main/java/de/thm/arsnova/controller/v2/ContentController.java +++ b/src/main/java/de/thm/arsnova/controller/v2/ContentController.java @@ -508,8 +508,7 @@ public class ContentController extends PaginationController { final HttpServletResponse response ) { final de.thm.arsnova.entities.Content content = contentService.get(contentId); - final Content contentV2 = toV2Migrator.migrate(content); - final de.thm.arsnova.entities.Answer answerV3 = fromV2Migrator.migrate(answer, contentV2); + final de.thm.arsnova.entities.Answer answerV3 = fromV2Migrator.migrate(answer, content); if (answerV3 instanceof TextAnswer) { return toV2Migrator.migrate((TextAnswer) answerService.saveAnswer(contentId, answerV3)); @@ -528,8 +527,7 @@ public class ContentController extends PaginationController { final HttpServletResponse response ) { final de.thm.arsnova.entities.Content content = contentService.get(contentId); - final Content contentV2 = toV2Migrator.migrate(content); - final de.thm.arsnova.entities.Answer answerV3 = fromV2Migrator.migrate(answer, contentV2); + final de.thm.arsnova.entities.Answer answerV3 = fromV2Migrator.migrate(answer, content); if (answerV3 instanceof TextAnswer) { return toV2Migrator.migrate((TextAnswer) answerService.updateAnswer(answerV3)); diff --git a/src/main/java/de/thm/arsnova/entities/migration/FromV2Migrator.java b/src/main/java/de/thm/arsnova/entities/migration/FromV2Migrator.java index 7456ca70b..cd5295931 100644 --- a/src/main/java/de/thm/arsnova/entities/migration/FromV2Migrator.java +++ b/src/main/java/de/thm/arsnova/entities/migration/FromV2Migrator.java @@ -228,23 +228,16 @@ public class FromV2Migrator { return to; } - public de.thm.arsnova.entities.Answer migrate(final Answer from, final Content content) { - switch (content.getQuestionType()) { - case V2_TYPE_ABCD: - case V2_TYPE_VOTE: - case V2_TYPE_SCHOOL: - case V2_TYPE_YESNO: - return migrate(from, content.getPossibleAnswers(), false); - case V2_TYPE_MC: - return migrate(from, content.getPossibleAnswers(), true); - case V2_TYPE_FREETEXT: - return migrate(from); - default: - throw new IllegalArgumentException("Unsupported content format."); + public de.thm.arsnova.entities.Answer migrate(final Answer from, final de.thm.arsnova.entities.Content content) { + if (content instanceof ChoiceQuestionContent) { + ChoiceQuestionContent choiceQuestionContent = (ChoiceQuestionContent) content; + return migrate(from, choiceQuestionContent.getOptions(), choiceQuestionContent.isMultiple()); + } else { + return migrate(from); } } - public ChoiceAnswer migrate(final Answer from, final List<AnswerOption> options, final boolean multiple) { + public ChoiceAnswer migrate(final Answer from, final List<ChoiceQuestionContent.AnswerOption> options, final boolean multiple) { final ChoiceAnswer to = new ChoiceAnswer(); copyCommonProperties(from, to); to.setContentId(from.getQuestionId()); @@ -270,8 +263,8 @@ public class FromV2Migrator { } } else { int i = 0; - for (AnswerOption option : options) { - if (option.getText().equals(from.getAnswerText())) { + for (ChoiceQuestionContent.AnswerOption option : options) { + if (option.getLabel().equals(from.getAnswerText())) { selectedChoiceIndexes.add(i); break; } diff --git a/src/test/java/de/thm/arsnova/entities/migration/FromV2MigratorTest.java b/src/test/java/de/thm/arsnova/entities/migration/FromV2MigratorTest.java index e958da87a..fa1c2c82b 100644 --- a/src/test/java/de/thm/arsnova/entities/migration/FromV2MigratorTest.java +++ b/src/test/java/de/thm/arsnova/entities/migration/FromV2MigratorTest.java @@ -22,9 +22,9 @@ import de.thm.arsnova.config.TestAppConfig; import de.thm.arsnova.config.TestPersistanceConfig; import de.thm.arsnova.config.TestSecurityConfig; import de.thm.arsnova.entities.ChoiceAnswer; +import de.thm.arsnova.entities.ChoiceQuestionContent; +import de.thm.arsnova.entities.Content; import de.thm.arsnova.entities.migration.v2.Answer; -import de.thm.arsnova.entities.migration.v2.AnswerOption; -import de.thm.arsnova.entities.migration.v2.Content; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -49,7 +49,7 @@ public class FromV2MigratorTest { private static final String ANSWER_ID = "answerId"; private static final String CONTENT_ID = "contentId"; private static final String ROOM_ID = "roomId"; - private static final String TYPE = "mc"; + private static final Content.Format FORMAT = Content.Format.CHOICE; private static final String OPTION1_LABEL = "option1"; private static final String OPTION2_LABEL = "option2"; private static final String OPTION3_LABEL = "option3"; @@ -67,27 +67,28 @@ public class FromV2MigratorTest { answerV2.setPiRound(ROUND); answerV2.setAnswerText("0,1,1"); - List<AnswerOption> options = new ArrayList<>(); - AnswerOption option1 = new AnswerOption(); - option1.setText(OPTION1_LABEL); + List<ChoiceQuestionContent.AnswerOption> options = new ArrayList<>(); + ChoiceQuestionContent.AnswerOption option1 = new ChoiceQuestionContent.AnswerOption(); + option1.setLabel(OPTION1_LABEL); options.add(option1); - AnswerOption option2 = new AnswerOption(); - option2.setText(OPTION2_LABEL); + ChoiceQuestionContent.AnswerOption option2 = new ChoiceQuestionContent.AnswerOption(); + option2.setLabel(OPTION2_LABEL); options.add(option2); - AnswerOption option3 = new AnswerOption(); - option3.setText(OPTION3_LABEL); + ChoiceQuestionContent.AnswerOption option3 = new ChoiceQuestionContent.AnswerOption(); + option3.setLabel(OPTION3_LABEL); options.add(option3); - Content contentV2 = new Content(); - contentV2.setQuestionType(TYPE); - contentV2.setSessionId(ROOM_ID); - contentV2.setPossibleAnswers(options); + ChoiceQuestionContent content = new ChoiceQuestionContent(); + content.setFormat(FORMAT); + content.setRoomId(ROOM_ID); + content.setMultiple(true); + content.setOptions(options); List<Integer> selectedChoices = new ArrayList<>(); selectedChoices.add(1); selectedChoices.add(2); - ChoiceAnswer answerV3 = (ChoiceAnswer) fromV2Migrator.migrate(answerV2, contentV2); + ChoiceAnswer answerV3 = (ChoiceAnswer) fromV2Migrator.migrate(answerV2, content); assertEquals(ANSWER_ID, answerV3.getId()); assertEquals(CONTENT_ID, answerV3.getContentId()); -- GitLab