diff --git a/src/main/java/de/thm/arsnova/SessionController.java b/src/main/java/de/thm/arsnova/SessionController.java index 497fbfc8b00eff815a46b1346bccdf546ec58f94..57572481fdfdc0b382c7898ca45067d405b85cbd 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 2d6cf3bba4aa8418e81d7cb06ad1ec6616e06a71..bc5a680eec7d2d673985753600d7848edb4aa234 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 66e595d95ca79c0a92a1574d68980bcc06952a8b..ff7897917c5430132a43448800ba92b11643dbf4 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(); } }