From 7a4e002819218a33406ca4f5730bc9517f7f665b Mon Sep 17 00:00:00 2001 From: agrt56 <andreas.gaertner@mni.thm.de> Date: Tue, 31 Mar 2015 19:59:18 +0200 Subject: [PATCH] Moved round management state update to question entity. Task #14410 --- .../java/de/thm/arsnova/dao/CouchDBDao.java | 37 +++++++------------ .../de/thm/arsnova/entities/Question.java | 14 +++++++ 2 files changed, 27 insertions(+), 24 deletions(-) diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index 417c3c518..c8a3fad7f 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -21,7 +21,6 @@ import java.io.IOException; import java.util.AbstractMap; import java.util.ArrayList; import java.util.Collection; -import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -511,29 +510,10 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware return null; } - private HashMap<String, Object> getRoundMangementState(final Question question) { - final HashMap<String, Object> map = new HashMap<String, Object>(); - final long time = new Date().getTime(); - - if(time > question.getPiRoundEndTime() - && question.isPiRoundActive()) { - map.put("piRoundEndTime", 0); - map.put("piRoundStartTime", 0); - map.put("piRoundActive", false); - map.put("piRoundFinished", true); - } else { - map.put("piRoundFinished", false); - map.put("piRoundActive", question.isPiRoundActive()); - map.put("piRoundEndTime", question.getPiRoundEndTime()); - map.put("piRoundStartTime", question.getPiRoundStartTime()); - } - - return map; - } - private Document toQuestionDocument(final Session session, final Question question) { Document q = new Document(); + question.updateRoundManagementState(); q.put("type", "skill_question"); q.put("questionType", question.getQuestionType()); q.put("questionVariant", question.getQuestionVariant()); @@ -546,6 +526,10 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware q.put("possibleAnswers", question.getPossibleAnswers()); q.put("noCorrect", question.isNoCorrect()); q.put("piRound", question.getPiRound()); + q.put("piRoundStartTime", question.getPiRoundStartTime()); + q.put("piRoundEndTime", question.getPiRoundEndTime()); + q.put("piRoundFinished", question.isPiRoundFinished()); + q.put("piRoundActive", question.isPiRoundActive()); q.put("showStatistic", question.isShowStatistic()); q.put("showAnswer", question.isShowAnswer()); q.put("abstention", question.isAbstention()); @@ -573,7 +557,6 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware q.put("gridScaleFactor", question.getGridScaleFactor()); q.put("imageQuestion", question.isImageQuestion()); q.put("textAnswerEnabled", question.isTextAnswerEnabled()); - q.putAll(getRoundMangementState(question)); return q; } @@ -586,8 +569,9 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware @Override public Question updateQuestion(final Question question) { try { - final long time = new Date().getTime(); final Document q = database.getDocument(question.get_id()); + + question.updateRoundManagementState(); q.put("subject", question.getSubject()); q.put("text", question.getText()); q.put("active", question.isActive()); @@ -595,6 +579,10 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware q.put("possibleAnswers", question.getPossibleAnswers()); q.put("noCorrect", question.isNoCorrect()); q.put("piRound", question.getPiRound()); + q.put("piRoundStartTime", question.getPiRoundStartTime()); + q.put("piRoundEndTime", question.getPiRoundEndTime()); + q.put("piRoundFinished", question.isPiRoundFinished()); + q.put("piRoundActive", question.isPiRoundActive()); q.put("showStatistic", question.isShowStatistic()); q.put("showAnswer", question.isShowAnswer()); q.put("abstention", question.isAbstention()); @@ -621,7 +609,6 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware q.put("scaleFactor", question.getScaleFactor()); q.put("gridScaleFactor", question.getGridScaleFactor()); q.put("imageQuestion", question.isImageQuestion()); - q.putAll(getRoundMangementState(question)); database.saveDocument(q); question.set_rev(q.getRev()); @@ -670,6 +657,8 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware final JSONArray possibleAnswers = q.getJSONObject().getJSONArray("possibleAnswers"); @SuppressWarnings("unchecked") final Collection<PossibleAnswer> answers = JSONArray.toCollection(possibleAnswers, PossibleAnswer.class); + + question.updateRoundManagementState(); question.setPossibleAnswers(new ArrayList<PossibleAnswer>(answers)); question.setSessionKeyword(getSessionKeyword(question.getSessionId())); return question; diff --git a/src/main/java/de/thm/arsnova/entities/Question.java b/src/main/java/de/thm/arsnova/entities/Question.java index 8c668c711..7606762fc 100644 --- a/src/main/java/de/thm/arsnova/entities/Question.java +++ b/src/main/java/de/thm/arsnova/entities/Question.java @@ -17,6 +17,7 @@ */ package de.thm.arsnova.entities; +import java.util.Date; import java.util.List; public class Question { @@ -510,6 +511,19 @@ public class Question { } } + public void updateRoundManagementState() { + final long time = new Date().getTime(); + + if(time > this.getPiRoundEndTime() && this.isPiRoundActive()) { + this.setPiRoundEndTime(0); + this.setPiRoundStartTime(0); + this.setPiRoundActive(false); + this.setPiRoundFinished(true); + } else { + this.setPiRoundFinished(false); + } + } + private int calculateRegularValue(Answer answer) { String answerText = answer.getAnswerText(); for (PossibleAnswer p : this.possibleAnswers) { -- GitLab