diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index d5045017d72b8a7bb06f79850bd8a6ba9b500208..e8be244c402037777e449912d21c82a8034c9fdf 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -1080,11 +1080,14 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware try { final View statsView = new View("statistics/statistics"); final View creatorView = new View("statistics/unique_session_creators"); + final View studentUserView = new View("statistics/active_student_users"); statsView.setGroup(true); creatorView.setGroup(true); + studentUserView.setGroup(true); final ViewResults statsResults = getDatabase().view(statsView); final ViewResults creatorResults = getDatabase().view(creatorView); + final ViewResults studentUserResults = getDatabase().view(studentUserView); if (!isEmptyResults(statsResults)) { final JSONArray rows = statsResults.getJSONArray("rows"); @@ -1125,6 +1128,15 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware } stats.setCreators(creators.size()); } + if (!isEmptyResults(studentUserResults)) { + final JSONArray rows = studentUserResults.getJSONArray("rows"); + Set<String> students = new HashSet<String>(); + for (int i = 0; i < rows.size(); i++) { + final JSONObject row = rows.getJSONObject(i); + students.add(row.getString("key")); + } + stats.setActiveStudents(students.size()); + } return stats; } catch (final Exception e) { LOGGER.error("Error while retrieving session count", e); diff --git a/src/main/java/de/thm/arsnova/entities/Statistics.java b/src/main/java/de/thm/arsnova/entities/Statistics.java index 6bfa7f6ba40b13fac561e38d0b4ff11e58303a92..1caa6a18cf189a514030c8cc079b509b8776b744 100644 --- a/src/main/java/de/thm/arsnova/entities/Statistics.java +++ b/src/main/java/de/thm/arsnova/entities/Statistics.java @@ -26,6 +26,7 @@ public class Statistics { private int closedSessions; private int creators; private int activeUsers; + private int activeStudents; private int loggedinUsers; private int interposedQuestions; private int conceptQuestions; @@ -118,6 +119,14 @@ public class Statistics { this.conceptQuestions = conceptQuestions; } + public int getActiveStudents() { + return activeStudents; + } + + public void setActiveStudents(int activeStudents) { + this.activeStudents = activeStudents; + } + @Override public int hashCode() { return (this.getClass().getName()