diff --git a/src/main/java/de/thm/arsnova/services/IQuestionService.java b/src/main/java/de/thm/arsnova/services/IQuestionService.java index 6b5efb26cd2e42c99594864ffb84595c2910064d..ac81c2548787752a2d48b7fcf66a484145c29dc2 100644 --- a/src/main/java/de/thm/arsnova/services/IQuestionService.java +++ b/src/main/java/de/thm/arsnova/services/IQuestionService.java @@ -17,8 +17,8 @@ */ package de.thm.arsnova.services; -import java.util.AbstractMap.SimpleEntry; import java.util.List; +import java.util.Map; import de.thm.arsnova.entities.Answer; import de.thm.arsnova.entities.InterposedQuestion; @@ -104,7 +104,7 @@ public interface IQuestionService { int getPreparationQuestionCount(String sessionkey); - SimpleEntry<String, List<Integer>> getAnswerAndAbstentionCountByQuestion(String questionid); + Map<String, Object> getAnswerAndAbstentionCountInternal(String questionid); int countLectureQuestionAnswers(String sessionkey); diff --git a/src/main/java/de/thm/arsnova/services/QuestionService.java b/src/main/java/de/thm/arsnova/services/QuestionService.java index 066e83095d767970ef5052eb16d48cbe87f1cb07..d0648af7b4816a8f982229ad36a05457299d6631 100644 --- a/src/main/java/de/thm/arsnova/services/QuestionService.java +++ b/src/main/java/de/thm/arsnova/services/QuestionService.java @@ -17,8 +17,6 @@ */ package de.thm.arsnova.services; -import java.util.AbstractMap; -import java.util.AbstractMap.SimpleEntry; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -767,17 +765,6 @@ public class QuestionService implements IQuestionService, ApplicationEventPublis return databaseDao.getPreparationQuestionCount(getSession(sessionkey)); } - @Override - @PreAuthorize("isAuthenticated()") - public SimpleEntry<String, List<Integer>> getAnswerAndAbstentionCountByQuestion(final String questionid) { - final List<Integer> countList = Arrays.asList( - getAnswerCount(questionid), - getAbstentionAnswerCount(questionid) - ); - - return new AbstractMap.SimpleEntry<String, List<Integer>>(questionid, countList); - } - @Override @PreAuthorize("isAuthenticated()") public int countLectureQuestionAnswers(final String sessionkey) { @@ -793,6 +780,22 @@ public class QuestionService implements IQuestionService, ApplicationEventPublis return databaseDao.countLectureQuestionAnswers(getSession(sessionkey)); } + @Override + public Map<String, Object> getAnswerAndAbstentionCountInternal(final String questionId) { + final Question question = getQuestion(questionId); + HashMap<String, Object> map = new HashMap<String, Object>(); + + if (question == null) { + return null; + } + + map.put("_id", questionId); + map.put("answers", databaseDao.getAnswerCount(question, question.getPiRound())); + map.put("abstentions", databaseDao.getAbstentionAnswerCount(questionId)); + + return map; + } + @Override @PreAuthorize("isAuthenticated()") public int countPreparationQuestionAnswers(final String sessionkey) { diff --git a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java index 613180b3c5dcb085e6c1462fa1ca9df421e249ec..6504f2ffb0bff603300fe21b13c5cadb9a23fbb3 100644 --- a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java +++ b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java @@ -491,8 +491,9 @@ public class ARSnovaSocketIOServer implements ARSnovaSocket, NovaEventVisitor { public void visit(NewAnswerEvent event) { final String sessionKey = event.getSession().getKeyword(); this.reportAnswersToLecturerQuestionAvailable(event.getSession(), new Question(event.getQuestion())); + broadcastInSession(sessionKey, "countQuestionAnswersByQuestionId", questionService.getAnswerAndAbstentionCountInternal(event.getQuestion().get_id())); + // TODO: These events are currently unused. Uncomment once the client does something with the data. - //broadcastInSession(sessionKey, "countQuestionAnswersByQuestion", questionService.getAnswerAndAbstentionCountByQuestion(event.getQuestion().get_id())); //broadcastInSession(sessionKey, "countLectureQuestionAnswers", questionService.countLectureQuestionAnswersInternal(sessionKey)); //broadcastInSession(sessionKey, "countPreparationQuestionAnswers", questionService.countPreparationQuestionAnswersInternal(sessionKey));