diff --git a/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java b/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java index 2866b4b990248d6a048ba9d74db5e8df7a10d48d..fec00c97a4bb5dbe430e1b7a7b96179d81c1fdfd 100644 --- a/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java +++ b/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java @@ -146,6 +146,12 @@ public class LecturerQuestionController extends AbstractController { return questions; } + @RequestMapping(value = { "/" }, method = RequestMethod.DELETE) + @ResponseBody + public final void deleteSkillQuestions(@RequestParam final String sessionkey, final HttpServletResponse response) { + this.questionService.deleteAllQuestions(sessionkey); + } + @RequestMapping(value = "/count", method = RequestMethod.GET) @ResponseBody public final int getSkillQuestionCount(@RequestParam final String sessionkey, final HttpServletResponse response) { diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index ef39d4e71883b7df80a1491eef3e6d780633ad9a..a5c7aa57ebc0eae0d574cd83695c451930bda168 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -781,6 +781,24 @@ public class CouchDBDao implements IDatabaseDao { LOGGER.error("IOException: Could not delete question {}", question.get_id()); } } + + @Override + public final void deleteAllQuestionsWithAnswers(Session session) { + try { + View view = new View("skill_question/by_session"); + view.setStartKey("[" + URLEncoder.encode("\"" + session.get_id() + "\"", "UTF-8") + "]"); + view.setEndKey("[" + URLEncoder.encode("\"" + session.get_id() + "\", {}", "UTF-8") + "]"); + ViewResults results = this.getDatabase().view(view); + + for (Document d : results.getResults()) { + Question q = new Question(); + q.set_id(d.getId()); + this.deleteQuestionWithAnswers(q); + } + } catch (IOException e) { + LOGGER.error("IOException: Could not delete questions for session {}", session.getKeyword()); + } + } private void deleteDocument(final String documentId) throws IOException { Document d = this.getDatabase().getDocument(documentId); diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java index 4d9e600e5b0d9b3ce72fb586cf07b109bc9efebb..73c786ee907fff32f8d2c547e7959f4f45342bc5 100644 --- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java +++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java @@ -69,6 +69,8 @@ public interface IDatabaseDao { void deleteQuestionWithAnswers(Question question); + void deleteAllQuestionsWithAnswers(Session session); + List<String> getUnAnsweredQuestionIds(Session session, User user); Answer getMyAnswer(String questionId, int piRound); diff --git a/src/main/java/de/thm/arsnova/services/IQuestionService.java b/src/main/java/de/thm/arsnova/services/IQuestionService.java index 389e1442a4726e0e9dc696db7426f76377ae0908..4f04a0c73506ff5b42baaf5c87cf24e8321047a8 100644 --- a/src/main/java/de/thm/arsnova/services/IQuestionService.java +++ b/src/main/java/de/thm/arsnova/services/IQuestionService.java @@ -41,6 +41,8 @@ public interface IQuestionService { void deleteQuestion(String questionId); + void deleteAllQuestions(String sessionKeyword); + List<String> getUnAnsweredQuestionIds(String sessionKey); Answer getMyAnswer(String questionId); diff --git a/src/main/java/de/thm/arsnova/services/QuestionService.java b/src/main/java/de/thm/arsnova/services/QuestionService.java index 89601b04f37a6038aaac924a946f72749e4bd0c6..1f9d70e87685d57dccc93eab2c8afa80612a0c20 100644 --- a/src/main/java/de/thm/arsnova/services/QuestionService.java +++ b/src/main/java/de/thm/arsnova/services/QuestionService.java @@ -148,6 +148,17 @@ public class QuestionService implements IQuestionService { databaseDao.deleteQuestionWithAnswers(question); } + @Override + @Authenticated + public void deleteAllQuestions(String sessionKeyword) { + User user = userService.getCurrentUser(); + Session session = databaseDao.getSession(sessionKeyword); + if (user == null || session == null || !session.isCreator(user)) { + throw new UnauthorizedException(); + } + databaseDao.deleteAllQuestionsWithAnswers(session); + } + @Override @Authenticated public void deleteInterposedQuestion(String questionId) { diff --git a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java index ffc536497e58a35dc181f301609838c55ee2eb46..bbf6a89ad19a646d560584c7d619a407679de457 100644 --- a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java +++ b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java @@ -439,4 +439,10 @@ public class StubDatabaseDao implements IDatabaseDao { public void deleteSession(Session session) { // TODO Auto-generated method stub } + + @Override + public void deleteAllQuestionsWithAnswers(Session session) { + // TODO Auto-generated method stub + + } }