From 99c44807834003a557a47c8e6a6991fac85bd50c Mon Sep 17 00:00:00 2001 From: Christoph Thelen <christoph.thelen@mni.thm.de> Date: Tue, 21 Jan 2014 08:09:04 +0100 Subject: [PATCH] Fixed #6618: Allow clients to delete all answers with one request --- .../controller/LecturerQuestionController.java | 9 +++++++++ src/main/java/de/thm/arsnova/dao/CouchDBDao.java | 8 ++++++++ src/main/java/de/thm/arsnova/dao/IDatabaseDao.java | 2 ++ .../de/thm/arsnova/services/IQuestionService.java | 2 ++ .../java/de/thm/arsnova/services/QuestionService.java | 11 +++++++++++ src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java | 6 ++++++ 6 files changed, 38 insertions(+) diff --git a/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java b/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java index 270f0c74a..a26dc791c 100644 --- a/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java +++ b/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java @@ -355,6 +355,15 @@ public class LecturerQuestionController extends AbstractController { questionService.deleteAnswers(questionId); } + @RequestMapping(value = "/answers", method = RequestMethod.DELETE) + @ResponseBody + public final void deleteAllQuestionsAnswers( + @RequestParam final String sessionkey, + final HttpServletResponse response + ) { + questionService.deleteAllQuestionsAnswers(sessionkey); + } + /** * * @param sessionKey diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index 2ff0351e8..86cd52719 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -1330,4 +1330,12 @@ public class CouchDBDao implements IDatabaseDao { LOGGER.error("Could not bulk publish all questions: {}", e.getMessage()); } } + + @Override + public void deleteAllQuestionsAnswers(Session session) { + List<Question> questions = this.getQuestions(new NovaView("skill_question/by_session"), session); + for (Question q : questions) { + this.deleteAnswers(q); + } + } } diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java index 480894184..2a99de4f6 100644 --- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java +++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java @@ -159,4 +159,6 @@ public interface IDatabaseDao { void deleteAllInterposedQuestions(Session session); void publishAllQuestions(Session session, boolean publish); + + void deleteAllQuestionsAnswers(Session session); } diff --git a/src/main/java/de/thm/arsnova/services/IQuestionService.java b/src/main/java/de/thm/arsnova/services/IQuestionService.java index fc1dd89cc..b26aecf43 100644 --- a/src/main/java/de/thm/arsnova/services/IQuestionService.java +++ b/src/main/java/de/thm/arsnova/services/IQuestionService.java @@ -109,4 +109,6 @@ public interface IQuestionService { void publishAll(String sessionkey, boolean publish); + void deleteAllQuestionsAnswers(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 fc78d6fcb..7252f5cf5 100644 --- a/src/main/java/de/thm/arsnova/services/QuestionService.java +++ b/src/main/java/de/thm/arsnova/services/QuestionService.java @@ -512,4 +512,15 @@ public class QuestionService implements IQuestionService { } databaseDao.publishAllQuestions(session, publish); } + + @Override + @Authenticated + public void deleteAllQuestionsAnswers(String sessionkey) { + User user = getCurrentUser(); + Session session = getSession(sessionkey); + if (!session.isCreator(user)) { + throw new ForbiddenException(); + } + databaseDao.deleteAllQuestionsAnswers(session); + } } diff --git a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java index dc593e897..f8a9d63d1 100644 --- a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java +++ b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java @@ -491,4 +491,10 @@ public class StubDatabaseDao implements IDatabaseDao { // TODO Auto-generated method stub } + + @Override + public void deleteAllQuestionsAnswers(Session session) { + // TODO Auto-generated method stub + + } } -- GitLab