From 187eb312006d18ff7d2126945162380ba63663f8 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Fri, 25 Oct 2013 09:36:37 +0200 Subject: [PATCH] OO-838: shows the last click and the last "touch" on the HTTP session in admin > user session --- .../admin/sysinfo/UserSessionController.java | 17 +++++++++-------- .../sysinfo/UserSessionDetailsController.java | 5 ++++- .../admin/sysinfo/UserSessionTableModel.java | 7 ++----- .../sysinfo/_content/sessionDetails.html | 1 + .../sysinfo/_i18n/LocalStrings_de.properties | 3 ++- .../sysinfo/_i18n/LocalStrings_en.properties | 1 + .../admin/sysinfo/model/UserSessionView.java | 19 ++++++++++++++++++- 7 files changed, 37 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/olat/admin/sysinfo/UserSessionController.java b/src/main/java/org/olat/admin/sysinfo/UserSessionController.java index 5bde6d3d023..c91245bbd94 100644 --- a/src/main/java/org/olat/admin/sysinfo/UserSessionController.java +++ b/src/main/java/org/olat/admin/sysinfo/UserSessionController.java @@ -85,14 +85,15 @@ public class UserSessionController extends BasicController implements StackedCon TableGuiConfiguration tableConfig = new TableGuiConfiguration(); tableCtr = new TableController(tableConfig, ureq, getWindowControl(), getTranslator()); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.last", 0, null, ureq.getLocale())); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.first", 1, null, ureq.getLocale())); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.identity", 2, null, ureq.getLocale())); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.authprovider", 3, null, ureq.getLocale())); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.fqdn", 4, null, ureq.getLocale())); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.access", 5, null, ureq.getLocale())); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.duration", 6, null, ureq.getLocale())); - tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.mode", 7, null, ureq.getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.last", 0, null, getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.first", 1, null, getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.identity", 2, null, getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.authprovider", 3, null, getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.fqdn", 4, null, getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.lastClick", 5, null, getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.access", 9, null, getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.duration", 6, null, getLocale())); + tableCtr.addColumnDescriptor(new DefaultColumnDescriptor("sess.mode", 7, null, getLocale())); tableCtr.addColumnDescriptor(new StaticColumnDescriptor("sess.details", "sess.details", translate("sess.details"))); tableCtr.addColumnDescriptor(new BooleanColumnDescriptor("sess.chat", 8, "sess.chat", translate("sess.chat"), null)); diff --git a/src/main/java/org/olat/admin/sysinfo/UserSessionDetailsController.java b/src/main/java/org/olat/admin/sysinfo/UserSessionDetailsController.java index 6e8bfb459f4..ad12dc3d803 100644 --- a/src/main/java/org/olat/admin/sysinfo/UserSessionDetailsController.java +++ b/src/main/java/org/olat/admin/sysinfo/UserSessionDetailsController.java @@ -73,6 +73,7 @@ public class UserSessionDetailsController extends BasicController { long creatTime = -1; long lastAccessTime = -1; + long lastClickTime = -1; boolean success = false; if (isAuth) { @@ -80,16 +81,18 @@ public class UserSessionDetailsController extends BasicController { HttpSession se = sessInfo.getSession(); creatTime = se.getCreationTime(); lastAccessTime = se.getLastAccessedTime(); + lastClickTime = sessInfo.getLastClickTime(); success = true; } catch (Exception ise) { // nothing to do } } - + if (success) { Formatter f = Formatter.getInstance(ureq.getLocale()); sesDetails.contextPut("created", f.formatDateAndTime(new Date(creatTime))); sesDetails.contextPut("lastaccess", f.formatDateAndTime(new Date(lastAccessTime))); + sesDetails.contextPut("lastclick", f.formatDateAndTime(new Date(lastClickTime))); } else { sesDetails.contextPut("created", " -- this session has been invalidated --"); sesDetails.contextPut("lastaccess", " -- this session has been invalidated --"); diff --git a/src/main/java/org/olat/admin/sysinfo/UserSessionTableModel.java b/src/main/java/org/olat/admin/sysinfo/UserSessionTableModel.java index d73de10026a..38db666984d 100644 --- a/src/main/java/org/olat/admin/sysinfo/UserSessionTableModel.java +++ b/src/main/java/org/olat/admin/sysinfo/UserSessionTableModel.java @@ -70,11 +70,8 @@ public class UserSessionTableModel extends DefaultTableDataModel<UserSessionView case 5: return usess.getLastClickTime(); case 6: return usess.getSessionDuration(); case 7: return usess.getMode(); - case 8: { - //can chat? - return myIdentityKey.equals(usess.getIdentityKey()) - ? Boolean.FALSE : Boolean.TRUE; - } + case 8: return myIdentityKey.equals(usess.getIdentityKey()) ? Boolean.FALSE : Boolean.TRUE; + case 9: return usess.getLastAccessTime(); default: return "Error"; } } else { // not signed on diff --git a/src/main/java/org/olat/admin/sysinfo/_content/sessionDetails.html b/src/main/java/org/olat/admin/sysinfo/_content/sessionDetails.html index 923628c0d01..125b3a148a2 100644 --- a/src/main/java/org/olat/admin/sysinfo/_content/sessionDetails.html +++ b/src/main/java/org/olat/admin/sysinfo/_content/sessionDetails.html @@ -13,6 +13,7 @@ <tr><td>$r.translate("sess.fqdn"):</td><td>$!si.getFromFQN()</td></tr> <tr><td>User Agent:</td><td>$!si.getUserAgent()</td></tr> <tr><td>$r.translate("sess.created"):</td><td>$created</td></tr> + <tr><td>$r.translate("sess.lastClick"):</td><td>$lastclick</td></tr> <tr><td>$r.translate("sess.access"):</td><td>$lastaccess</td></tr> <tr><td>$r.translate("sess.webMode"):</td><td>$!si.getWebMode()</td></tr> <tr><td>WebDAV:</td><td>$!si.isWebDAV()</td></tr> diff --git a/src/main/java/org/olat/admin/sysinfo/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/admin/sysinfo/_i18n/LocalStrings_de.properties index 664a5925ef3..82bf233aa96 100644 --- a/src/main/java/org/olat/admin/sysinfo/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/admin/sysinfo/_i18n/LocalStrings_de.properties @@ -98,7 +98,8 @@ runtime.users.last6months=Aktive Benutzer innerhalb der letzten 6 Monate runtime.users.lastday=Aktive Benutzer innerhalb der letzten 24 Stunden runtime.users.lastmonth=Aktive Benutzer innerhalb des letzten Monates runtime.users.lastweek=Aktive Benutzer innerhalb innerhalb der letzten 7 Tage -sess.access=Letzter Zugriff +sess.lastClick=Letzter Click +sess.access=Letzer Zugriff sess.active=Aktive Nutzer sess.and.clicks=$\:sess.active sess.attributes.title=Attribute diff --git a/src/main/java/org/olat/admin/sysinfo/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/admin/sysinfo/_i18n/LocalStrings_en.properties index 455be5c0603..45bf0e2c068 100644 --- a/src/main/java/org/olat/admin/sysinfo/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/admin/sysinfo/_i18n/LocalStrings_en.properties @@ -99,6 +99,7 @@ runtime.users.lastday=Active users within last 24 hours runtime.users.lastmonth=Active users within last month runtime.users.lastweek=Active users within last 7 days sess.access=Last access +sess.lastClick=Last click sess.active=Active users sess.and.clicks=$\:sess.active sess.attributes.title=Attributes diff --git a/src/main/java/org/olat/admin/sysinfo/model/UserSessionView.java b/src/main/java/org/olat/admin/sysinfo/model/UserSessionView.java index 6adb7bb8c10..16897d47ecf 100644 --- a/src/main/java/org/olat/admin/sysinfo/model/UserSessionView.java +++ b/src/main/java/org/olat/admin/sysinfo/model/UserSessionView.java @@ -21,6 +21,8 @@ package org.olat.admin.sysinfo.model; import java.util.Date; +import javax.servlet.http.HttpSession; + import org.olat.core.util.SessionInfo; import org.olat.core.util.UserSession; @@ -37,6 +39,7 @@ public class UserSessionView { private String login, authProvider; private String fromFQN; private Date lastClickTime; + private Date lastAccessTime; private long sessionDuration; private String mode; @@ -75,6 +78,16 @@ public class UserSessionView { mode = sessInfo.getWebMode(); } } + + HttpSession se = sessInfo.getSession(); + if(se != null) { + try { + lastAccessTime = new Date(se.getLastAccessedTime()); + } catch (Exception e) { + lastAccessTime = null; + } + } + } public UserSession getUserSession() { @@ -111,8 +124,12 @@ public class UserSessionView { public Date getLastClickTime() { return lastClickTime; - } + } + public Date getLastAccessTime() { + return lastAccessTime; + } + public long getSessionDuration() { return sessionDuration; } -- GitLab