From bea0ae06f019b20bd9646e41298e999f1957cb23 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer <paul-christian.volkmer@mni.thm.de> Date: Wed, 12 Sep 2012 13:55:59 +0200 Subject: [PATCH] Task #3852: Some changes to SessionService to match auth changes --- .../thm/arsnova/services/ISessionService.java | 6 +++-- .../thm/arsnova/services/SessionService.java | 24 +++++++++++++++++-- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/thm/arsnova/services/ISessionService.java b/src/main/java/de/thm/arsnova/services/ISessionService.java index bc5a680e..9dc98f08 100644 --- a/src/main/java/de/thm/arsnova/services/ISessionService.java +++ b/src/main/java/de/thm/arsnova/services/ISessionService.java @@ -20,6 +20,7 @@ package de.thm.arsnova.services; import de.thm.arsnova.entities.Feedback; import de.thm.arsnova.entities.Session; +import de.thm.arsnova.entities.User; public interface ISessionService { @@ -27,8 +28,9 @@ 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 postFeedback(String keyword, int value, User user); public boolean sessionKeyAvailable(String keyword); public String generateKeyword(); - + public void addUserToSessionMap(String username, String keyword); + public boolean isUserInSession(User user, 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 e40e0d34..f3bcf269 100644 --- a/src/main/java/de/thm/arsnova/services/SessionService.java +++ b/src/main/java/de/thm/arsnova/services/SessionService.java @@ -22,11 +22,14 @@ import java.io.IOException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import net.sf.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; @@ -46,12 +49,17 @@ import de.thm.arsnova.entities.Session; @Service public class SessionService implements ISessionService { + @Autowired + IUserService userService; + private String databaseHost; private int databasePort; private String databaseName; private Database database; + private Map<String, String> user2session = new ConcurrentHashMap<String, String>(); + public static final Logger logger = LoggerFactory.getLogger(SessionService.class); @Value("#{props['couchdb.host']}") @@ -83,6 +91,7 @@ public class SessionService implements ISessionService { .optJSONObject("value"), Session.class); if (result.isActive() || result.getCreator().equals(this.actualUserName())) { + this.addUserToSessionMap(this.actualUserName(), keyword); return result; } @@ -162,13 +171,13 @@ public class SessionService implements ISessionService { } @Override - public boolean postFeedback(String keyword, int value) { + public boolean postFeedback(String keyword, int value, de.thm.arsnova.entities.User user) { String sessionId = this.getSessionId(keyword); if (sessionId == null) return false; Document feedback = new Document(); feedback.put("type", "understanding"); - feedback.put("user", this.actualUserName()); + feedback.put("user", user.getUsername()); feedback.put("sessionId", sessionId); feedback.put("timestamp", System.currentTimeMillis()); @@ -207,6 +216,17 @@ public class SessionService implements ISessionService { return ! results.containsKey(keyword); } + @Override + public boolean isUserInSession(de.thm.arsnova.entities.User user, String keyword) { + if (keyword == null) return false; + return (this.user2session.get(user.getUsername()).equals(keyword)); + } + + @Override + public void addUserToSessionMap(String username, String keyword) { + this.user2session.put(username, keyword); + } + private String getSessionId(String keyword) { View view = new View("session/by_keyword"); view.setKey(URLEncoder.encode("\"" + keyword + "\"")); -- GitLab