Index: lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20180207.sql
===================================================================
diff -u
--- lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20180207.sql (revision 0)
+++ lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20180207.sql (revision 55db010f978602628d3e68673c1fca8ca6b7b7c6)
@@ -0,0 +1,22 @@
+SET AUTOCOMMIT = 0;
+set FOREIGN_KEY_CHECKS = 0;
+
+-- LDEV-4508 Add Kumalive table to track learners raising/lowering hands
+-- and possibly other activity in the future
+
+CREATE TABLE lams_kumalive_log (
+ log_id BIGINT(20) NOT NULL AUTO_INCREMENT
+ , kumalive_id BIGINT(20) NOT NULL
+ , user_id BIGINT(20)
+ , log_date DATETIME NOT NULL
+ , log_type TINYINT
+ , PRIMARY KEY (log_id)
+ , CONSTRAINT FK_lams_kumalive_log_1 FOREIGN KEY (kumalive_id)
+ REFERENCES lams_kumalive (kumalive_id) ON DELETE CASCADE ON UPDATE CASCADE
+ , CONSTRAINT FK_lams_kumalive_log_2 FOREIGN KEY (user_id)
+ REFERENCES lams_user (user_id) ON DELETE SET NULL ON UPDATE CASCADE
+);
+
+COMMIT;
+SET AUTOCOMMIT = 1;
+set FOREIGN_KEY_CHECKS = 1;
Index: lams_learning/conf/hibernate/mappings/org/lamsfoundation/lams/learning/kumalive/KumaliveLog.hbm.xml
===================================================================
diff -u
--- lams_learning/conf/hibernate/mappings/org/lamsfoundation/lams/learning/kumalive/KumaliveLog.hbm.xml (revision 0)
+++ lams_learning/conf/hibernate/mappings/org/lamsfoundation/lams/learning/kumalive/KumaliveLog.hbm.xml (revision 55db010f978602628d3e68673c1fca8ca6b7b7c6)
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/kumalive/KumaliveWebsocketServer.java
===================================================================
diff -u -r5b76fc85b49c6dc9dbedfac8b235e9e3d56ef8fe -r55db010f978602628d3e68673c1fca8ca6b7b7c6
--- lams_learning/src/java/org/lamsfoundation/lams/learning/kumalive/KumaliveWebsocketServer.java (.../KumaliveWebsocketServer.java) (revision 5b76fc85b49c6dc9dbedfac8b235e9e3d56ef8fe)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/kumalive/KumaliveWebsocketServer.java (.../KumaliveWebsocketServer.java) (revision 55db010f978602628d3e68673c1fca8ca6b7b7c6)
@@ -28,6 +28,7 @@
import org.apache.tomcat.util.json.JSONException;
import org.apache.tomcat.util.json.JSONObject;
import org.lamsfoundation.lams.learning.kumalive.model.Kumalive;
+import org.lamsfoundation.lams.learning.kumalive.model.KumaliveLog;
import org.lamsfoundation.lams.learning.kumalive.model.KumalivePoll;
import org.lamsfoundation.lams.learning.kumalive.model.KumalivePollAnswer;
import org.lamsfoundation.lams.learning.kumalive.model.KumaliveRubric;
@@ -526,6 +527,7 @@
}
kumalive.raisedHand.add(userId);
+ KumaliveWebsocketServer.getKumaliveService().log(kumalive.id, userId, new Date(), KumaliveLog.TYPE_HAND_UP);
if (logger.isDebugEnabled()) {
logger.debug("Learner " + userId + " raised hand in Kumalive " + kumalive.id);
}
@@ -556,6 +558,7 @@
}
kumalive.raisedHand.remove(userId);
+ KumaliveWebsocketServer.getKumaliveService().log(kumalive.id, userId, new Date(), KumaliveLog.TYPE_HAND_DOWN);
if (logger.isDebugEnabled()) {
logger.debug("Learner " + userId + " put hand down in Kumalive " + kumalive.id);
}
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/kumalive/model/KumaliveLog.java
===================================================================
diff -u
--- lams_learning/src/java/org/lamsfoundation/lams/learning/kumalive/model/KumaliveLog.java (revision 0)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/kumalive/model/KumaliveLog.java (revision 55db010f978602628d3e68673c1fca8ca6b7b7c6)
@@ -0,0 +1,91 @@
+/***************************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ***********************************************************************/
+
+package org.lamsfoundation.lams.learning.kumalive.model;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class KumaliveLog implements Serializable {
+
+ private static final long serialVersionUID = -2294366826356383997L;
+
+ public static final short TYPE_HAND_UP = 1;
+ public static final short TYPE_HAND_DOWN = 2;
+
+ private Long logId;
+ private Long kumaliveId;
+ private Integer userId;
+ private Date date;
+ private Short type;
+
+ public KumaliveLog() {
+ }
+
+ public KumaliveLog(Long kumaliveId, Integer userId, Date date, Short type) {
+ this.kumaliveId = kumaliveId;
+ this.userId = userId;
+ this.date = date;
+ this.type = type;
+ }
+
+ public Long getLogId() {
+ return logId;
+ }
+
+ public void setLogId(Long logId) {
+ this.logId = logId;
+ }
+
+ public Long getKumaliveId() {
+ return kumaliveId;
+ }
+
+ public void setKumaliveId(Long kumaliveId) {
+ this.kumaliveId = kumaliveId;
+ }
+
+ public Integer getUserId() {
+ return userId;
+ }
+
+ public void setUserId(Integer userId) {
+ this.userId = userId;
+ }
+
+ public Date getDate() {
+ return date;
+ }
+
+ public void setDate(Date date) {
+ this.date = date;
+ }
+
+ public Short getType() {
+ return type;
+ }
+
+ public void setType(Short type) {
+ this.type = type;
+ }
+
+}
\ No newline at end of file
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/kumalive/service/IKumaliveService.java
===================================================================
diff -u -rc32fc3365594b9d572ea07094f580218cf952c93 -r55db010f978602628d3e68673c1fca8ca6b7b7c6
--- lams_learning/src/java/org/lamsfoundation/lams/learning/kumalive/service/IKumaliveService.java (.../IKumaliveService.java) (revision c32fc3365594b9d572ea07094f580218cf952c93)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/kumalive/service/IKumaliveService.java (.../IKumaliveService.java) (revision 55db010f978602628d3e68673c1fca8ca6b7b7c6)
@@ -23,6 +23,7 @@
package org.lamsfoundation.lams.learning.kumalive.service;
+import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
@@ -70,4 +71,6 @@
void saveVote(Long answerId, Integer userId);
void releasePollResults(Long pollId, boolean votesReleased, boolean votersReleased);
+
+ void log(Long kumaliveId, Integer userId, Date date, short type);
}
\ No newline at end of file
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/kumalive/service/KumaliveService.java
===================================================================
diff -u -rc32fc3365594b9d572ea07094f580218cf952c93 -r55db010f978602628d3e68673c1fca8ca6b7b7c6
--- lams_learning/src/java/org/lamsfoundation/lams/learning/kumalive/service/KumaliveService.java (.../KumaliveService.java) (revision c32fc3365594b9d572ea07094f580218cf952c93)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/kumalive/service/KumaliveService.java (.../KumaliveService.java) (revision 55db010f978602628d3e68673c1fca8ca6b7b7c6)
@@ -49,6 +49,7 @@
import org.lamsfoundation.lams.gradebook.util.UserComparator;
import org.lamsfoundation.lams.learning.kumalive.dao.IKumaliveDAO;
import org.lamsfoundation.lams.learning.kumalive.model.Kumalive;
+import org.lamsfoundation.lams.learning.kumalive.model.KumaliveLog;
import org.lamsfoundation.lams.learning.kumalive.model.KumalivePoll;
import org.lamsfoundation.lams.learning.kumalive.model.KumalivePollAnswer;
import org.lamsfoundation.lams.learning.kumalive.model.KumaliveRubric;
@@ -623,6 +624,15 @@
}
}
+ /**
+ * Logs an activity in the given Kumalive
+ */
+ @Override
+ public void log(Long kumaliveId, Integer userId, Date date, short type) {
+ KumaliveLog log = new KumaliveLog(kumaliveId, userId, date, type);
+ kumaliveDAO.insert(log);
+ }
+
public void setSecurityService(ISecurityService securityService) {
this.securityService = securityService;
}
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/learningApplicationContext.xml
===================================================================
diff -u -rc32fc3365594b9d572ea07094f580218cf952c93 -r55db010f978602628d3e68673c1fca8ca6b7b7c6
--- lams_learning/src/java/org/lamsfoundation/lams/learning/learningApplicationContext.xml (.../learningApplicationContext.xml) (revision c32fc3365594b9d572ea07094f580218cf952c93)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/learningApplicationContext.xml (.../learningApplicationContext.xml) (revision 55db010f978602628d3e68673c1fca8ca6b7b7c6)
@@ -101,6 +101,7 @@
PROPAGATION_REQUIRED
PROPAGATION_REQUIRED
PROPAGATION_REQUIRED
+ PROPAGATION_REQUIRED