From 85418c1e14b5fd461e6a71d8de1dc6e677afdb4b Mon Sep 17 00:00:00 2001 From: agrt56 <andreas.gaertner@mni.thm.de> Date: Sun, 29 Mar 2015 13:35:20 +0200 Subject: [PATCH] PiRound activation will be updated on question document update It can occur that the timed event of piRound deactivation will not be called (server crash/restart). With this fix the activation will be canceled on question document when the endtime has been exceeded. Task #14410 --- .../java/de/thm/arsnova/dao/CouchDBDao.java | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index 7877dc37..88c4aceb 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -21,6 +21,7 @@ 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,6 +512,7 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware } private Document toQuestionDocument(final Session session, final Question question) { + final long time = new Date().getTime(); final Document q = new Document(); q.put("type", "skill_question"); q.put("questionType", question.getQuestionType()); @@ -552,6 +554,16 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware q.put("imageQuestion", question.isImageQuestion()); q.put("textAnswerEnabled", question.isTextAnswerEnabled()); + if(time > question.getPiRoundEndTime()) { + q.put("piRoundEndTime", 0); + q.put("piRoundStartTime", 0); + q.put("piRoundActive", false); + } else { + q.put("piRoundActive", question.isPiRoundActive()); + q.put("piRoundEndTime", question.getPiRoundEndTime()); + q.put("piRoundStartTime", question.getPiRoundStartTime()); + } + return q; } @@ -563,6 +575,7 @@ 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()); q.put("subject", question.getSubject()); q.put("text", question.getText()); @@ -571,9 +584,6 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware q.put("possibleAnswers", question.getPossibleAnswers()); q.put("noCorrect", question.isNoCorrect()); q.put("piRound", question.getPiRound()); - q.put("piRoundActive", question.isPiRoundActive()); - q.put("piRoundEndTime", question.getPiRoundEndTime()); - q.put("piRoundStartTime", question.getPiRoundStartTime()); q.put("showStatistic", question.isShowStatistic()); q.put("showAnswer", question.isShowAnswer()); q.put("abstention", question.isAbstention()); @@ -601,6 +611,16 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware q.put("gridScaleFactor", question.getGridScaleFactor()); q.put("imageQuestion", question.isImageQuestion()); + if(time > question.getPiRoundEndTime()) { + q.put("piRoundEndTime", 0); + q.put("piRoundStartTime", 0); + q.put("piRoundActive", false); + } else { + q.put("piRoundActive", question.isPiRoundActive()); + q.put("piRoundEndTime", question.getPiRoundEndTime()); + q.put("piRoundStartTime", question.getPiRoundStartTime()); + } + database.saveDocument(q); question.set_rev(q.getRev()); -- GitLab