From 475910892fd1e82edd7b0851a28c6d3a62b1ea47 Mon Sep 17 00:00:00 2001 From: Dave Bauer Date: Sun, 18 Nov 2012 15:25:59 -0600 Subject: [PATCH 1/2] Make polling redis keys easier to distinguish. Record number of answers to make it easier to pull out answer data on recording/archive --- .../service/recorder/polling/PollRecorder.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/bigbluebutton/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/recorder/polling/PollRecorder.java b/bigbluebutton/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/recorder/polling/PollRecorder.java index 39d00ae..c90ad0d 100755 --- a/bigbluebutton/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/recorder/polling/PollRecorder.java +++ b/bigbluebutton/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/recorder/polling/PollRecorder.java @@ -54,11 +54,14 @@ public void setRedisPool(JedisPool pool) { public void record(Poll poll) { Jedis jedis = PollApplication.dbConnect(); // Merges the poll title, room into a single string seperated by a hyphen - String pollKey = poll.room + "-" + poll.title; + String pollKey = "poll:" + poll.room + ":" + poll.title; // Saves all relevant information about the poll as fields in a hash jedis.hset(pollKey, "title", poll.title); jedis.hset(pollKey, "question", poll.question); jedis.hset(pollKey, "multiple", poll.isMultiple.toString()); + Integer numAnswers = poll.answers.size(); + String numAnswersStr = numAnswers.toString(); + jedis.hset(pollKey, "numAnswers", numAnswersStr ); jedis.hset(pollKey, "room", poll.room); jedis.hset(pollKey, "time", poll.time); // Dynamically creates enough fields in the hash to store all of the answers and their corresponding votes. @@ -66,11 +69,11 @@ public void record(Poll poll) { // otherwise it fetches the previous number of votes. for (int i = 1; i <= poll.answers.size(); i++) { - jedis.hset(pollKey, "answer"+i+"text", poll.answers.toArray()[i-1].toString()); + jedis.hset(pollKey, "answer:"+i+":text", poll.answers.toArray()[i-1].toString()); if (poll.votes == null){ - jedis.hset(pollKey, "answer"+i, "0"); + jedis.hset(pollKey, "answer:"+i, "0"); }else{ - jedis.hset(pollKey, "answer"+i, poll.votes.toArray()[i-1].toString()); + jedis.hset(pollKey, "answer:"+i, poll.votes.toArray()[i-1].toString()); } } Integer tv = poll.totalVotes; @@ -99,7 +102,7 @@ public void vote(String pollKey, Poll poll, Object[] answerIDs, Boolean webVote) // Extract the index value stored at element i of answerIDs Integer index = Integer.parseInt(answerIDs[i].toString()) + 1; // Increment the votes for answer - jedis.hincrBy(pollKey, "answer"+index, 1); + jedis.hincrBy(pollKey, "answer:"+index, 1); } if (answerIDs.length > 0){ if (!webVote) From 13bc87a64a1daf1b599faaab49f06c32168ba456 Mon Sep 17 00:00:00 2001 From: Dave Bauer Date: Tue, 27 Nov 2012 19:30:06 -0500 Subject: [PATCH 2/2] Finish resolving all the places where the poll key needs to be addressed to new key format --- .../conference/service/poll/PollApplication.java | 2 +- .../conference/service/recorder/polling/PollInvoker.java | 2 +- .../modules/polling/managers/PollingManager.as | 6 +++--- .../bigbluebutton/modules/polling/service/PollingService.as | 6 +++--- .../bigbluebutton/modules/polling/views/ToolbarButton.mxml | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/bigbluebutton/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/poll/PollApplication.java b/bigbluebutton/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/poll/PollApplication.java index 0b5736c..d6943bc 100755 --- a/bigbluebutton/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/poll/PollApplication.java +++ b/bigbluebutton/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/poll/PollApplication.java @@ -69,7 +69,7 @@ public void destroyPolls(String name){ Jedis jedis = dbConnect(); ArrayList polls = titleList(); for (int i = 0; i < polls.size(); i++){ - String pollKey = name + "-" + polls.get(i).toString(); + String pollKey = "poll:" + name + ":" + polls.get(i).toString(); Poll doomedPoll = getPoll(pollKey); if (doomedPoll.publishToWeb){ cutOffWebPoll(pollKey); diff --git a/bigbluebutton/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/recorder/polling/PollInvoker.java b/bigbluebutton/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/recorder/polling/PollInvoker.java index 8f7781b..5deef2f 100644 --- a/bigbluebutton/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/recorder/polling/PollInvoker.java +++ b/bigbluebutton/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/recorder/polling/PollInvoker.java @@ -119,7 +119,7 @@ public ArrayList titleList() Jedis jedis = PollApplication.dbConnect(); String roomName = Red5.getConnectionLocal().getScope().getName(); ArrayList pollTitleList = new ArrayList (); - for (String s : jedis.keys(roomName+"*")) + for (String s : jedis.keys("poll:"+roomName+":*")) { pollTitleList.add(jedis.hget(s, "title")); } diff --git a/bigbluebutton/bigbluebutton-client/src/org/bigbluebutton/modules/polling/managers/PollingManager.as b/bigbluebutton/bigbluebutton-client/src/org/bigbluebutton/modules/polling/managers/PollingManager.as index a910de1..e608567 100644 --- a/bigbluebutton/bigbluebutton-client/src/org/bigbluebutton/modules/polling/managers/PollingManager.as +++ b/bigbluebutton/bigbluebutton-client/src/org/bigbluebutton/modules/polling/managers/PollingManager.as @@ -152,14 +152,14 @@ package org.bigbluebutton.modules.polling.managers public function handleVoteEvent(e:VoteEvent):void { - e.pollKey = module.getRoom() +"-"+ e.title; + e.pollKey = "poll:" + module.getRoom() +":"+ e.title; service.vote(e.pollKey, e.answerID); } public function handleGenerateWebKeyEvent(e:GenerateWebKeyEvent):void { e.poll.room = module.getRoom(); - e.pollKey = e.poll.room +"-"+ e.poll.title; + e.pollKey = "poll:" + e.poll.room +":"+ e.poll.title; service.generate(e); } @@ -185,7 +185,7 @@ package org.bigbluebutton.modules.polling.managers public function handleGetPollingStats(e:PollRefreshEvent):void{ e.poll.room = module.getRoom(); - e.pollKey = e.poll.room +"-"+ e.poll.title ; + e.pollKey = "poll:" + e.poll.room +":"+ e.poll.title ; service.getPoll(e.pollKey, "refresh"); } diff --git a/bigbluebutton/bigbluebutton-client/src/org/bigbluebutton/modules/polling/service/PollingService.as b/bigbluebutton/bigbluebutton-client/src/org/bigbluebutton/modules/polling/service/PollingService.as index 51723f7..75212eb 100644 --- a/bigbluebutton/bigbluebutton-client/src/org/bigbluebutton/modules/polling/service/PollingService.as +++ b/bigbluebutton/bigbluebutton-client/src/org/bigbluebutton/modules/polling/service/PollingService.as @@ -207,7 +207,7 @@ package org.bigbluebutton.modules.polling.service } public function publish(poll:PollObject):void{ - var pollKey:String = poll.room + "-" + poll.title; + var pollKey:String = "poll:" + poll.room + ":" + poll.title; var webKey:String = poll.webKey; var serverPoll:Array = buildServerPoll(poll); nc.call("poll.publish", new Responder(success, failure), serverPoll, pollKey); @@ -247,7 +247,7 @@ package org.bigbluebutton.modules.polling.service } public function cutOffWebPoll(poll:PollObject):void{ - var pollKey:String = poll.room+"-"+poll.title; + var pollKey:String = "poll:" + poll.room+":"+poll.title; nc.call("poll.cutOffWebPoll", new Responder(success, failure), pollKey); //--------------------------------------// // Responder functions @@ -341,7 +341,7 @@ package org.bigbluebutton.modules.polling.service event.titleList = obj as Array; // Append roomID to each item in titleList, call getPoll on that key, add the result to pollList back in ToolBarButton for (var i:int = 0; i < event.titleList.length; i++){ - var pollKey:String = roomID +"-"+ event.titleList[i]; + var pollKey:String = "poll:" + roomID +":"+ event.titleList[i]; getPoll(pollKey, "initialize"); } // This dispatch populates the titleList back in the Menu; the pollList is populated one item at a time in the for-loop diff --git a/bigbluebutton/bigbluebutton-client/src/org/bigbluebutton/modules/polling/views/ToolbarButton.mxml b/bigbluebutton/bigbluebutton-client/src/org/bigbluebutton/modules/polling/views/ToolbarButton.mxml index d2d2281..5cef8a5 100644 --- a/bigbluebutton/bigbluebutton-client/src/org/bigbluebutton/modules/polling/views/ToolbarButton.mxml +++ b/bigbluebutton/bigbluebutton-client/src/org/bigbluebutton/modules/polling/views/ToolbarButton.mxml @@ -104,7 +104,7 @@ myMenuData.addItem(new ValueObject("create", ResourceUtil.getInstance().getString('bbb.polling.createPoll'))); for (var i:int = 0; i < pollList.length; i++){ if (pollList[i] != null){ - var keyString:String = pollList[i].room +"-"+ pollList[i].title; + var keyString:String = "poll:" + pollList[i].room +":"+ pollList[i].title; var menuEntry:ValueObject = new ValueObject(keyString, pollList[i].title); menuEntry.poll = pollList[i]; if (!pollList[i].status){ @@ -152,4 +152,4 @@ } ]]> - \ No newline at end of file +