diff --git a/src/main/java/de/thm/arsnova/services/ISessionService.java b/src/main/java/de/thm/arsnova/services/ISessionService.java index 9f3bb3942980e6678bbd78d2a7756bb01e8959d3..2d6cf3bba4aa8418e81d7cb06ad1ec6616e06a71 100644 --- a/src/main/java/de/thm/arsnova/services/ISessionService.java +++ b/src/main/java/de/thm/arsnova/services/ISessionService.java @@ -27,5 +27,6 @@ public interface ISessionService { public Session getSession(String keyword); public Feedback getFeedback(String keyword); public boolean postFeedback(String keyword, int value); + public boolean sessionKeyAvailable(String keyword); } \ 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 23969d7105200dc095e28ff05d9d33c6bcf3c771..68daacad612cb19d6f78455ab001313983b17300 100644 --- a/src/main/java/de/thm/arsnova/services/SessionService.java +++ b/src/main/java/de/thm/arsnova/services/SessionService.java @@ -31,6 +31,8 @@ import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.User; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Transactional; import com.fourspaces.couchdb.Database; import com.fourspaces.couchdb.Document; @@ -160,6 +162,15 @@ public class SessionService implements ISessionService { return true; } + @Override + @Transactional(isolation=Isolation.READ_COMMITTED) + public boolean sessionKeyAvailable(String keyword) { + View view = new View("session/by_keyword"); + ViewResults results = database.view(view); + + return ! results.containsKey(keyword); + } + private String getSessionId(String keyword) { View view = new View("session/by_keyword"); view.setKey(URLEncoder.encode("\"" + keyword + "\""));