diff --git a/pom.xml b/pom.xml index 965c05ffcff19c3a63696700b62ee40fe33d2a3b..e97a671a7cb986b73d45f6d1b1e69c886f1be98b 100644 --- a/pom.xml +++ b/pom.xml @@ -405,7 +405,7 @@ </goals> </execution> </executions> - </plugin>--> + </plugin> <plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId> @@ -453,7 +453,7 @@ </goals> </execution> </executions> - </plugin> + </plugin>--> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>groovy-maven-plugin</artifactId> diff --git a/src/main/java/de/thm/arsnova/controller/QuestionByLecturerController.java b/src/main/java/de/thm/arsnova/controller/QuestionByLecturerController.java index 3c9df7b5b496223f910331cc45d3ba5f30334d20..15fc3d49f802dd60f7a0dc95fdb6b571bcaf4003 100644 --- a/src/main/java/de/thm/arsnova/controller/QuestionByLecturerController.java +++ b/src/main/java/de/thm/arsnova/controller/QuestionByLecturerController.java @@ -83,6 +83,55 @@ public class QuestionByLecturerController extends AbstractController { return null; } + @RequestMapping( + value = "/session/{sessionkey}/question/{questionId}", + method = RequestMethod.PUT + ) + @ResponseBody + public final void updateQuestion( + @PathVariable final String sessionkey, + @PathVariable final String questionId, + @RequestBody final Question question, + final HttpServletResponse response + ) { + response.setStatus(HttpStatus.NO_CONTENT.value()); + + /* TODO: Not yet implemented! The following code ist copy and pasted from postQuestion */ + /* + if (!sessionkey.equals(question.getSession())) { + response.setStatus(HttpStatus.PRECONDITION_FAILED.value()); + return null; + } + + if (questionService.saveQuestion(question) != null) { + response.setStatus(HttpStatus.CREATED.value()); + return question; + } + + response.setStatus(HttpStatus.BAD_REQUEST.value()); + + return null; + */ + } + + + @RequestMapping( + value = "/session/{sessionkey}/question/{questionId}/publish", + method = RequestMethod.POST + ) + @ResponseBody + public final void publishQuestion( + @PathVariable final String sessionkey, + @PathVariable final String questionId, + @RequestParam(required = false) final Boolean publish, + @RequestBody final Question question, + final HttpServletResponse response + ) { + /* TODO: Not yet implemented! */ + response.setStatus(HttpStatus.NO_CONTENT.value()); + } + + @RequestMapping( value = { "/list" }, method = RequestMethod.GET diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index f1831f3b733332c777d6fbf4b9aa38d453dee807..33e2bee5f267e185817e0705f077b75dc5a68d6e 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -218,17 +218,15 @@ public class CouchDBDao implements IDatabaseDao { try { if (session.getCreator().equals(user.getUsername())) { view = new View("skill_question/by_session_sorted_by_subject_and_text"); - view.setStartKey("[" + URLEncoder.encode("\"" + session.get_id() + "\"", "UTF-8") + "]"); - view.setEndKey("[" + URLEncoder.encode("\"" + session.get_id() + "\",{}", "UTF-8") + "]"); - } else { if (user.getType().equals(User.THM)) { - view = new View("skill_question/by_session_for_thm"); + view = new View("skill_question/by_session_for_thm_full"); } else { - view = new View("skill_question/by_session_for_all"); + view = new View("skill_question/by_session_for_all_full"); } - view.setKey(URLEncoder.encode("\"" + session.get_id() + "\"", "UTF-8")); } + view.setStartKey("[" + URLEncoder.encode("\"" + session.get_id() + "\"", "UTF-8") + "]"); + view.setEndKey("[" + URLEncoder.encode("\"" + session.get_id() + "\",{}", "UTF-8") + "]"); ViewResults questions = this.getDatabase().view(view); if (questions == null || questions.isEmpty()) { @@ -848,6 +846,9 @@ public class CouchDBDao implements IDatabaseDao { view.setKey(URLEncoder.encode("\"" + questionId + "\"", "UTF-8")); view.setGroup(true); ViewResults results = this.getDatabase().view(view); + if (results.getResults().size() == 0) { + return 0; + } return results.getJSONArray("rows").optJSONObject(0).optInt("value"); } catch (UnsupportedEncodingException e) { LOGGER.error("Error while retrieving answer count", e); @@ -937,10 +938,10 @@ public class CouchDBDao implements IDatabaseDao { "[" + URLEncoder.encode("\"" + user.getUsername() + "\",\"" + s.get_id() + "\"", "UTF-8") + "]" ); ViewResults results = this.getDatabase().view(view); + List<Answer> answers = new ArrayList<Answer>(); if (results.getResults().isEmpty()) { - throw new NotFoundException(); + return answers; } - List<Answer> answers = new ArrayList<Answer>(); for (Document d : results.getResults()) { Answer a = (Answer) JSONObject.toBean(d.getJSONObject().getJSONObject("value"), Answer.class); a.set_id(d.getId()); diff --git a/src/main/java/de/thm/arsnova/entities/Question.java b/src/main/java/de/thm/arsnova/entities/Question.java index 0cc4256a66193086fdfe7e6a3f44cc9deb112a92..126b180469cd702c2bc2e062af65198da3698694 100644 --- a/src/main/java/de/thm/arsnova/entities/Question.java +++ b/src/main/java/de/thm/arsnova/entities/Question.java @@ -34,6 +34,7 @@ public class Question { private long timestamp; private int number; private int duration; + private boolean showStatistic; // sic private String _id; private String _rev; @@ -141,6 +142,14 @@ public class Question { this.duration = duration; } + public boolean isShowStatistic() { + return showStatistic; + } + + public void setShowStatistic(boolean showStatistic) { + this.showStatistic = showStatistic; + } + public final String get_id() { return _id; } diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index 1b105c9f190c0dc6b25eb1d96103005eaf661480..5128d8dc1a0cad468a10043935281652b7513646 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -75,6 +75,7 @@ </error-page> <session-config> - <session-timeout>0</session-timeout> + <!-- delete sessions after 24 hours --> + <session-timeout>1440</session-timeout> </session-config> </web-app>