From fa0ea2f4c1d33714d1e378175f195209aaddf23b Mon Sep 17 00:00:00 2001
From: Paul-Christian Volkmer <paul-christian.volkmer@mni.thm.de>
Date: Wed, 15 May 2013 16:40:27 +0200
Subject: [PATCH] Added statistics value for logged in users

---
 .../de/thm/arsnova/controller/StatisticsController.java   | 8 ++++++++
 .../java/de/thm/arsnova/services/IStatisticsService.java  | 2 ++
 src/main/java/de/thm/arsnova/services/IUserService.java   | 2 ++
 .../java/de/thm/arsnova/services/StatisticsService.java   | 8 ++++++++
 src/main/java/de/thm/arsnova/services/UserService.java    | 5 +++++
 5 files changed, 25 insertions(+)

diff --git a/src/main/java/de/thm/arsnova/controller/StatisticsController.java b/src/main/java/de/thm/arsnova/controller/StatisticsController.java
index 37074be6..4d152fda 100644
--- a/src/main/java/de/thm/arsnova/controller/StatisticsController.java
+++ b/src/main/java/de/thm/arsnova/controller/StatisticsController.java
@@ -31,6 +31,14 @@ public class StatisticsController {
 		return Integer.toString(statisticsService.countActiveUsers());
 	}
 
+	@RequestMapping(method = RequestMethod.GET, value = "/statistics/loggedinusercount", produces = "text/plain")
+	@ResponseBody
+	public final String countLoggedInUsers(HttpServletResponse response) {
+		response.addHeader("X-Deprecated-API", "1");
+
+		return Integer.toString(statisticsService.countLoggedInUsers());
+	}
+
 	@RequestMapping(method = RequestMethod.GET, value = "/statistics/sessioncount", produces = "text/plain")
 	@ResponseBody
 	public final String countSessions(HttpServletResponse response) {
diff --git a/src/main/java/de/thm/arsnova/services/IStatisticsService.java b/src/main/java/de/thm/arsnova/services/IStatisticsService.java
index 76b8374e..e6a30b07 100644
--- a/src/main/java/de/thm/arsnova/services/IStatisticsService.java
+++ b/src/main/java/de/thm/arsnova/services/IStatisticsService.java
@@ -6,5 +6,7 @@ public interface IStatisticsService {
 
 	int countActiveUsers();
 
+	int countLoggedInUsers();
+
 	Statistics getStatistics();
 }
diff --git a/src/main/java/de/thm/arsnova/services/IUserService.java b/src/main/java/de/thm/arsnova/services/IUserService.java
index f0f01359..8146edd1 100644
--- a/src/main/java/de/thm/arsnova/services/IUserService.java
+++ b/src/main/java/de/thm/arsnova/services/IUserService.java
@@ -52,4 +52,6 @@ public interface IUserService {
 	int getUsersInSessionCount(String keyword);
 
 	void removeUserFromMaps(User user);
+
+	int loggedInUsers();
 }
diff --git a/src/main/java/de/thm/arsnova/services/StatisticsService.java b/src/main/java/de/thm/arsnova/services/StatisticsService.java
index 6064498b..67a6f58d 100644
--- a/src/main/java/de/thm/arsnova/services/StatisticsService.java
+++ b/src/main/java/de/thm/arsnova/services/StatisticsService.java
@@ -14,12 +14,20 @@ public class StatisticsService implements IStatisticsService {
 	@Autowired
 	private IDatabaseDao databaseDao;
 
+	@Autowired
+	private IUserService userService;
+
 	@Override
 	public final int countActiveUsers() {
 		long since = System.currentTimeMillis() - DURATION_IN_MILLIS;
 		return databaseDao.countActiveUsers(since);
 	}
 
+	@Override
+	public int countLoggedInUsers() {
+		return userService.loggedInUsers();
+	}
+
 	@Override
 	public final Statistics getStatistics() {
 		long since = System.currentTimeMillis() - DURATION_IN_MILLIS;
diff --git a/src/main/java/de/thm/arsnova/services/UserService.java b/src/main/java/de/thm/arsnova/services/UserService.java
index 0324606d..57460a17 100644
--- a/src/main/java/de/thm/arsnova/services/UserService.java
+++ b/src/main/java/de/thm/arsnova/services/UserService.java
@@ -284,4 +284,9 @@ public class UserService implements IUserService, InitializingBean, DisposableBe
 			user2sessionLegacy.remove(user);
 		}
 	}
+
+	@Override
+	public int loggedInUsers() {
+		return user2session.size();
+	}
 }
-- 
GitLab