From ef99ca569621f584ab263bddbb896c05df7a0d9f Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer <paul-christian.volkmer@mni.thm.de> Date: Mon, 10 Sep 2012 15:12:03 +0200 Subject: [PATCH] Task #3845: Sessions will be created using server side implementation --- .../de/thm/arsnova/SessionController.java | 12 +++++++++ .../thm/arsnova/services/ISessionService.java | 2 ++ .../thm/arsnova/services/SessionService.java | 26 +++++++++++++++++-- 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/thm/arsnova/SessionController.java b/src/main/java/de/thm/arsnova/SessionController.java index 497fbfc8..57572481 100644 --- a/src/main/java/de/thm/arsnova/SessionController.java +++ b/src/main/java/de/thm/arsnova/SessionController.java @@ -47,6 +47,18 @@ public class SessionController { return null; } + @RequestMapping(value="/session", method=RequestMethod.POST) + public Session postNewSession(@RequestBody Session session, HttpServletResponse response) { + Session newSession = sessionService.saveSession(session); + if (session != null) { + response.setStatus(HttpStatus.CREATED.value()); + return newSession; + } + + response.setStatus(HttpStatus.SERVICE_UNAVAILABLE.value()); + return null; + } + @RequestMapping(value="/session/{sessionkey}/feedback", method=RequestMethod.GET) public Feedback getFeedback(@PathVariable String sessionkey, HttpServletResponse response) { Feedback feedback = sessionService.getFeedback(sessionkey); diff --git a/src/main/java/de/thm/arsnova/services/ISessionService.java b/src/main/java/de/thm/arsnova/services/ISessionService.java index 2d6cf3bb..bc5a680e 100644 --- a/src/main/java/de/thm/arsnova/services/ISessionService.java +++ b/src/main/java/de/thm/arsnova/services/ISessionService.java @@ -25,8 +25,10 @@ import de.thm.arsnova.entities.Session; public interface ISessionService { public Session getSession(String keyword); + public Session saveSession(Session session); public Feedback getFeedback(String keyword); public boolean postFeedback(String keyword, int value); public boolean sessionKeyAvailable(String keyword); + public String generateKeyword(); } \ No newline at end of file diff --git a/src/main/java/de/thm/arsnova/services/SessionService.java b/src/main/java/de/thm/arsnova/services/SessionService.java index 66e595d9..ff789791 100644 --- a/src/main/java/de/thm/arsnova/services/SessionService.java +++ b/src/main/java/de/thm/arsnova/services/SessionService.java @@ -71,6 +71,25 @@ public class SessionService implements ISessionService { return null; } + + @Override + public Session saveSession(Session session) { + + Document sessionDocument = new Document(); + sessionDocument.put("type","session"); + sessionDocument.put("name", session.getName()); + sessionDocument.put("shortName", session.getShortName()); + sessionDocument.put("keyword", this.generateKeyword()); + sessionDocument.put("creator", this.actualUserName()); + sessionDocument.put("active", true); + try { + database.saveDocument(sessionDocument); + } catch (IOException e) { + return null; + } + + return this.getSession(sessionDocument.getString("keyword")); + } @Override public Feedback getFeedback(String keyword) { @@ -196,10 +215,13 @@ public class SessionService implements ISessionService { return null; } + @Override public String generateKeyword() { - // Generates a number between >=low and <high, so our keyword has exactly 8 digits. final int low = 10000000; final int high = 100000000; - return String.valueOf((int)(Math.random() * (high - low) + low)); + String keyword = String.valueOf((int)(Math.random() * (high - low) + low)); + + if (this.sessionKeyAvailable(keyword)) return keyword; + return generateKeyword(); } } -- GitLab