From f57aac8e9bf91118fc4eceedcfb640e198591100 Mon Sep 17 00:00:00 2001
From: Christoph Thelen <christoph.thelen@mni.thm.de>
Date: Wed, 24 Oct 2012 16:15:48 +0200
Subject: [PATCH] Update session activity for Teachers; force timestamp update
 for logged_in

---
 src/main/java/de/thm/arsnova/dao/CouchDBDao.java    | 13 +++++++++++++
 src/main/java/de/thm/arsnova/dao/IDatabaseDao.java  |  1 +
 src/main/java/de/thm/arsnova/entities/LoggedIn.java |  6 +++++-
 src/main/java/de/thm/arsnova/entities/Session.java  |  8 ++++++--
 .../de/thm/arsnova/services/SessionService.java     |  4 ++++
 .../java/de/thm/arsnova/dao/StubDatabaseDao.java    |  6 ++++++
 6 files changed, 35 insertions(+), 3 deletions(-)

diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
index 505fce77..3e65a3ed 100644
--- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
+++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
@@ -539,6 +539,7 @@ public class CouchDBDao implements IDatabaseDao {
 			loggedIn.setUser(u.getUsername());
 			loggedIn.setSessionId(s.get_id());
 			loggedIn.addVisitedSession(s);
+			loggedIn.updateTimestamp();
 			
 			JSONObject json = JSONObject.fromObject(loggedIn);
 			Document doc = new Document(json);
@@ -561,4 +562,16 @@ public class CouchDBDao implements IDatabaseDao {
 			return null;
 		}
 	}
+
+	@Override
+	public void updateSessionOwnerActivity(Session session) {
+		try {
+			session.setLastOwnerActivity(System.currentTimeMillis());
+			JSONObject json = JSONObject.fromObject(session);
+			this.getDatabase().saveDocument(new Document(json));
+		} catch (IOException e) {
+			logger.error("Failed to update lastOwnerActivity for Session {}", session);
+			return;
+		}
+	}
 }
diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
index 97d4988d..40dad113 100644
--- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
+++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
@@ -43,4 +43,5 @@ public interface IDatabaseDao {
 	public int getSkillQuestionCount(String sessionkey);
 	
 	public LoggedIn registerAsOnlineUser(User u, Session s);
+	public void updateSessionOwnerActivity(Session session);
 }
\ No newline at end of file
diff --git a/src/main/java/de/thm/arsnova/entities/LoggedIn.java b/src/main/java/de/thm/arsnova/entities/LoggedIn.java
index fd081f36..dcea1ce4 100644
--- a/src/main/java/de/thm/arsnova/entities/LoggedIn.java
+++ b/src/main/java/de/thm/arsnova/entities/LoggedIn.java
@@ -34,7 +34,7 @@ public class LoggedIn {
 	
 	public LoggedIn() {
 		this.type = "logged_in";
-		this.timestamp = System.currentTimeMillis();
+		this.updateTimestamp();
 	}
 	
 	public void addVisitedSession(Session s) {
@@ -51,6 +51,10 @@ public class LoggedIn {
 		}
 		return false;
 	}
+	
+	public void updateTimestamp() {
+		this.timestamp = System.currentTimeMillis();
+	}
 
 	public String get_id() {
 		return _id;
diff --git a/src/main/java/de/thm/arsnova/entities/Session.java b/src/main/java/de/thm/arsnova/entities/Session.java
index 2e43385d..06c46c23 100644
--- a/src/main/java/de/thm/arsnova/entities/Session.java
+++ b/src/main/java/de/thm/arsnova/entities/Session.java
@@ -80,6 +80,10 @@ public class Session {
 	public String get_id() {
 		return _id;
 	}
-	
-	public void set_rev(String rev) {}
+	public void set_rev(String rev) {
+		_rev = rev;
+	}
+	public String get_rev() {
+		return _rev;
+	}
 }
diff --git a/src/main/java/de/thm/arsnova/services/SessionService.java b/src/main/java/de/thm/arsnova/services/SessionService.java
index b7ef7910..1d329af2 100644
--- a/src/main/java/de/thm/arsnova/services/SessionService.java
+++ b/src/main/java/de/thm/arsnova/services/SessionService.java
@@ -173,6 +173,10 @@ public class SessionService implements ISessionService {
 		Session session = this.joinSession(sessionkey);
 		if (session == null) return null;
 		
+		if (session.getCreator().equals(user.getUsername())) {
+			databaseDao.updateSessionOwnerActivity(session);
+		}
+		
 		return databaseDao.registerAsOnlineUser(user, session);
 	}
 }
diff --git a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java
index 3594c5dd..13fd2164 100644
--- a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java
+++ b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java
@@ -157,4 +157,10 @@ public class StubDatabaseDao implements IDatabaseDao {
 		return null;
 	}
 
+	@Override
+	public void updateSessionOwnerActivity(Session session) {
+		// TODO Auto-generated method stub
+		
+	}
+
 }
-- 
GitLab