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