From 23aaff00d871dc3e9be776142df94e9e0fc72266 Mon Sep 17 00:00:00 2001 From: Daniel Gerhardt <daniel.gerhardt@mni.thm.de> Date: Fri, 8 Mar 2013 19:57:22 +0100 Subject: [PATCH] Added method to retrieve inactive users from CouchDB. --- .../java/de/thm/arsnova/dao/CouchDBDao.java | 26 ++++++++++++++++++- .../java/de/thm/arsnova/dao/IDatabaseDao.java | 2 ++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index 3f7b6a492..8264cf7c5 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -1370,7 +1370,31 @@ public class CouchDBDao implements IDatabaseDao { } return result; } - + + @Override + public final List<String> getInactiveUsers(int timeDifference) { + try { + long inactiveBeforeTimestamp = new Date().getTime() - timeDifference * 1000; + + View view = new View("logged_in/by_and_only_timestamp_and_username"); + view.setEndKey("[" + URLEncoder.encode(String.valueOf(inactiveBeforeTimestamp) + ",{}", "UTF-8") + "]"); + LOGGER.debug("View: {}", view.getFullName()); + ViewResults results = this.getDatabase().view(view); + LOGGER.debug("Result count: {}", String.valueOf(results.size())); + + List<String> result = new ArrayList<String>(); + for (Document d : results.getResults()) { + LOGGER.debug("key: {}", d.getString("key")); + result.add(d.getJSONObject().getJSONArray("key").getString(1)); + } + + return result; + } catch (UnsupportedEncodingException e) { + LOGGER.error("Error while retrieving inactive users", e); + } + return null; + } + private class ExtendedView extends View { private String keys; diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java index 9b4905f0f..88af93db8 100644 --- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java +++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java @@ -133,4 +133,6 @@ public interface IDatabaseDao { List<Session> getCourseSessions(List<Course> courses); Session lockSession(Session session, Boolean lock); + + List<String> getInactiveUsers(int timeDifference); } -- GitLab