From 3e6a4a500013c446cc21a97f116b2c746fadb8b3 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Wed, 2 Jul 2014 11:29:38 +0200
Subject: [PATCH] OO-1117: add active user count to the system REST API

---
 .../java/org/olat/basesecurity/Constants.java | 23 +++++++++++++++++++
 .../system/OpenOLATStatisticsWebService.java  |  3 +++
 .../restapi/system/vo/UserStatisticsVO.java   | 10 ++++++++
 .../java/org/olat/restapi/SystemTest.java     |  1 +
 4 files changed, 37 insertions(+)

diff --git a/src/main/java/org/olat/basesecurity/Constants.java b/src/main/java/org/olat/basesecurity/Constants.java
index 8cd0fa250b2..f64e2e4373b 100644
--- a/src/main/java/org/olat/basesecurity/Constants.java
+++ b/src/main/java/org/olat/basesecurity/Constants.java
@@ -211,4 +211,27 @@ public class Constants {
 	 */
 	public static final OLATResourceable ORESOURCE_GUESTONLY = OresHelper.lookupType(BaseSecurityModule.class, "RGuestOnly");
 
+	/**
+	 * status of a user
+	 * <code>USERSTATUS_ACTIVE</code> is an active user
+	 */
+	public static final Integer USERSTATUS_ACTIVE = 2;
+
+	/**
+	 * status of a user
+	 * <code>USERSTATUS_NOT_DELETEABLE</code> is a not deleteable user
+	 */
+	public static final Integer USERSTATUS_NOT_DELETEABLE = 1;
+
+	/**
+	 * status of a user
+	 * <code>USERSTATUS_LOGIN_DENIED</code> is a user, whose login is denied
+	 */
+	public static final Integer USERSTATUS_LOGIN_DENIED = 101;
+
+	/**
+	 * status of a user
+	 * <code>USERSTATUS_DELETED</code> is a deleted user
+	 */
+	public static final Integer USERSTATUS_DELETED = 199;
 }
\ No newline at end of file
diff --git a/src/main/java/org/olat/restapi/system/OpenOLATStatisticsWebService.java b/src/main/java/org/olat/restapi/system/OpenOLATStatisticsWebService.java
index ba440fddaff..aca62556c7e 100644
--- a/src/main/java/org/olat/restapi/system/OpenOLATStatisticsWebService.java
+++ b/src/main/java/org/olat/restapi/system/OpenOLATStatisticsWebService.java
@@ -33,6 +33,7 @@ import javax.ws.rs.core.Response;
 import org.olat.admin.sysinfo.manager.SessionStatsManager;
 import org.olat.admin.sysinfo.model.SessionsStats;
 import org.olat.basesecurity.BaseSecurity;
+import org.olat.basesecurity.Constants;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.util.SessionInfo;
 import org.olat.core.util.UserSession;
@@ -170,6 +171,8 @@ public class OpenOLATStatisticsWebService implements Sampler {
 		BaseSecurity securityManager = CoreSpringFactory.getImpl(BaseSecurity.class);
 		long countUsers = securityManager.countIdentitiesByPowerSearch(null, null, false, null, null, null, null, null, null, null, null);
 		stats.setTotalUserCount(countUsers);
+		long countActiveUsers = securityManager.countIdentitiesByPowerSearch(null, null, false, null, null, null, null, null, null, null, Constants.USERSTATUS_ACTIVE);
+		stats.setActiveUserCount(countActiveUsers);
 		
 		BusinessGroupService bgs = CoreSpringFactory.getImpl(BusinessGroupService.class);
 		long countGroups = bgs.countBusinessGroups(null, null);
diff --git a/src/main/java/org/olat/restapi/system/vo/UserStatisticsVO.java b/src/main/java/org/olat/restapi/system/vo/UserStatisticsVO.java
index a4372677513..146cd683971 100644
--- a/src/main/java/org/olat/restapi/system/vo/UserStatisticsVO.java
+++ b/src/main/java/org/olat/restapi/system/vo/UserStatisticsVO.java
@@ -34,6 +34,8 @@ public class UserStatisticsVO {
 
 	@XmlAttribute(name="totalUserCount", required=true)
 	private long totalUserCount;
+	@XmlAttribute(name="activeUserCount", required=true)
+	private long activeUserCount;
 	@XmlAttribute(name="totalGroupCount", required=true)
 	private long totalGroupCount;
 	
@@ -46,6 +48,14 @@ public class UserStatisticsVO {
 		this.totalUserCount = totalUserCount;
 	}
 	
+	public long getActiveUserCount() {
+		return activeUserCount;
+	}
+	
+	public void setActiveUserCount(long activeUserCount) {
+		this.activeUserCount = activeUserCount;
+	}
+	
 	public long getTotalGroupCount() {
 		return totalGroupCount;
 	}
diff --git a/src/test/java/org/olat/restapi/SystemTest.java b/src/test/java/org/olat/restapi/SystemTest.java
index 240f821dc07..9a12feb4d1b 100644
--- a/src/test/java/org/olat/restapi/SystemTest.java
+++ b/src/test/java/org/olat/restapi/SystemTest.java
@@ -157,6 +157,7 @@ public class SystemTest extends OlatJerseyTestCase {
 		assertNotNull(userStats);
 		assertTrue(userStats.getTotalUserCount() > 0);
 		assertTrue(userStats.getTotalGroupCount() >= 0);
+		assertTrue(userStats.getActiveUserCount() >= 0);
 		
 		conn.shutdown();	
 	}
-- 
GitLab