From 25d166d4f812e65f20de4af9bd59d6c978cc51a6 Mon Sep 17 00:00:00 2001
From: Paul-Christian Volkmer <paul-christian.volkmer@mni.thm.de>
Date: Fri, 30 May 2014 16:41:34 +0200
Subject: [PATCH] Add logged in user count to statistics

---
 .../java/de/thm/arsnova/entities/Statistics.java     | 12 +++++++++++-
 .../de/thm/arsnova/services/StatisticsService.java   | 10 +++++++---
 2 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/src/main/java/de/thm/arsnova/entities/Statistics.java b/src/main/java/de/thm/arsnova/entities/Statistics.java
index d1faaa10..c0bb4d71 100644
--- a/src/main/java/de/thm/arsnova/entities/Statistics.java
+++ b/src/main/java/de/thm/arsnova/entities/Statistics.java
@@ -7,6 +7,7 @@ public class Statistics {
 	private int openSessions;
 	private int closedSessions;
 	private int activeUsers;
+	private int loggedinUsers;
 
 	public int getAnswers() {
 		return answers;
@@ -43,6 +44,13 @@ public class Statistics {
 		this.activeUsers = activeUsers;
 	}
 
+	public int getLoggedinUsers() {
+		return loggedinUsers;
+	}
+	public void setLoggedinUsers(final int loggedinUsers) {
+		this.loggedinUsers = loggedinUsers;
+	}
+
 	@Override
 	public int hashCode() {
 		return (this.getClass().getName()
@@ -50,7 +58,9 @@ public class Statistics {
 				+ answers
 				+ closedSessions
 				+ openSessions
-				+ questions).hashCode();
+				+ questions
+				+ loggedinUsers
+				).hashCode();
 	}
 
 	@Override
diff --git a/src/main/java/de/thm/arsnova/services/StatisticsService.java b/src/main/java/de/thm/arsnova/services/StatisticsService.java
index 6f96824b..f4727b9d 100644
--- a/src/main/java/de/thm/arsnova/services/StatisticsService.java
+++ b/src/main/java/de/thm/arsnova/services/StatisticsService.java
@@ -20,25 +20,29 @@ public class StatisticsService implements IStatisticsService {
 
 	@Override
 	public final int countActiveUsers() {
-		long since = System.currentTimeMillis() - DURATION_IN_MILLIS;
+		final long since = System.currentTimeMillis() - DURATION_IN_MILLIS;
 		return databaseDao.countActiveUsers(since);
 	}
 
 	@Override
 	public int countLoggedInUsers() {
+		if (sessionRegistry == null) {
+			return 0;
+		}
 		return sessionRegistry.getAllPrincipals().size();
 	}
 
 	@Override
 	public final Statistics getStatistics() {
-		long since = System.currentTimeMillis() - DURATION_IN_MILLIS;
+		final long since = System.currentTimeMillis() - DURATION_IN_MILLIS;
 
-		Statistics statistics = new Statistics();
+		final Statistics statistics = new Statistics();
 		statistics.setOpenSessions(databaseDao.countOpenSessions());
 		statistics.setClosedSessions(databaseDao.countClosedSessions());
 		statistics.setAnswers(databaseDao.countAnswers());
 		statistics.setQuestions(databaseDao.countQuestions());
 		statistics.setActiveUsers(databaseDao.countActiveUsers(since));
+		statistics.setLoggedinUsers(countLoggedInUsers());
 		return statistics;
 	}
 }
-- 
GitLab