From 5060726035dfcbe167814a2fbc30995a25e8d267 Mon Sep 17 00:00:00 2001 From: Richard Alam <ritzalam@gmail.com> Date: Mon, 6 Jul 2015 22:12:15 +0000 Subject: [PATCH] - format poll result data correctly --- akka-bbb-apps/build.sbt | 2 +- .../core/apps/WhiteboardModel.scala | 2 +- .../WhiteboardEventRedisRecorder.scala | 10 +--- akka-bbb-fsesl/build.sbt | 2 +- bbb-common-message/build.sbt | 5 +- .../bigbluebutton/common/messages/Util.java | 57 ++++++++++++++++++- bigbluebutton-apps/build.gradle | 2 +- .../client/WhiteboardClientMessageSender.java | 9 +-- 8 files changed, 67 insertions(+), 22 deletions(-) diff --git a/akka-bbb-apps/build.sbt b/akka-bbb-apps/build.sbt index bb8b3fd1d8..cc04561c59 100755 --- a/akka-bbb-apps/build.sbt +++ b/akka-bbb-apps/build.sbt @@ -50,7 +50,7 @@ libraryDependencies ++= { "com.google.code.gson" % "gson" % "1.7.1", "redis.clients" % "jedis" % "2.1.0", "org.apache.commons" % "commons-lang3" % "3.2", - "org.bigbluebutton" % "bbb-common-message" % "0.0.6" + "org.bigbluebutton" % "bbb-common-message" % "0.0.7" )} diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/WhiteboardModel.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/WhiteboardModel.scala index 420797598c..521b063f50 100755 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/WhiteboardModel.scala +++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/apps/WhiteboardModel.scala @@ -2,7 +2,7 @@ package org.bigbluebutton.core.apps import scala.collection.mutable.ArrayBuffer -case class AnnotationVO(id: String, status: String, shapeType: String, shape: scala.collection.immutable.Map[String, Any], wbId: String) +case class AnnotationVO(id: String, status: String, shapeType: String, shape: scala.collection.immutable.Map[String, Object], wbId: String) class WhiteboardModel { private var _whiteboards = new scala.collection.immutable.HashMap[String, Whiteboard]() diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/recorders/WhiteboardEventRedisRecorder.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/recorders/WhiteboardEventRedisRecorder.scala index a252439b24..6581f4438a 100755 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/recorders/WhiteboardEventRedisRecorder.scala +++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/core/recorders/WhiteboardEventRedisRecorder.scala @@ -53,13 +53,8 @@ class WhiteboardEventRedisRecorder(recorder: RecorderApplication) extends OutMes event.setPresentation(getPresentationId(msg.whiteboardId)) event.setPageNumber(getPageNum(msg.whiteboardId)) event.setWhiteboardId(msg.whiteboardId) + event.addAnnotation(mapAsJavaMap(msg.shape.shape)) - // FIXME: Need to fix recording of wb event (ralam june 29, 2015) - //val ann: java.util.Map[String, Any] = mapAsJavaMap(msg.shape.shape) - // val ann: java.util.Map[String, Object] = mapAsJavaMap(msg.shape.shape) - // val ann2: java.util.Map[String, Object] = mapAsJavaMap(ann) - - // event.addAnnotation(mapAsJavaMap(ann)) recorder.record(msg.meetingID, event) } else { val event = new AddShapeWhiteboardRecordEvent() @@ -68,8 +63,7 @@ class WhiteboardEventRedisRecorder(recorder: RecorderApplication) extends OutMes event.setPresentation(getPresentationId(msg.whiteboardId)) event.setPageNumber(getPageNum(msg.whiteboardId)) event.setWhiteboardId(msg.whiteboardId); - // FIXME: Need to fix recording of wb event (ralam june 29, 2015) - // event.addAnnotation(mapAsJavaMap(msg.shape.shape)) + event.addAnnotation(mapAsJavaMap(msg.shape.shape)) recorder.record(msg.meetingID, event) } } diff --git a/akka-bbb-fsesl/build.sbt b/akka-bbb-fsesl/build.sbt index 206751d0d6..18e9c65a78 100755 --- a/akka-bbb-fsesl/build.sbt +++ b/akka-bbb-fsesl/build.sbt @@ -50,7 +50,7 @@ libraryDependencies ++= { "com.google.code.gson" % "gson" % "1.7.1", "redis.clients" % "jedis" % "2.1.0", "org.apache.commons" % "commons-lang3" % "3.2", - "org.bigbluebutton" % "bbb-common-message" % "0.0.6", + "org.bigbluebutton" % "bbb-common-message" % "0.0.7", "org.bigbluebutton" % "bbb-fsesl-client" % "0.0.2" )} diff --git a/bbb-common-message/build.sbt b/bbb-common-message/build.sbt index 647816435d..b9f7b2e427 100755 --- a/bbb-common-message/build.sbt +++ b/bbb-common-message/build.sbt @@ -4,7 +4,7 @@ name := "bbb-common-message" organization := "org.bigbluebutton" -version := "0.0.6" +version := "0.0.7" // We want to have our jar files in lib_managed dir. // This way we'll have the right path when we import @@ -50,6 +50,7 @@ autoScalaLibrary := false // Comment this out when publishing to local maven repo using SNAPSHOT version. // To push to sonatype "sbt publishSigned" + publishTo := { val nexus = "https://oss.sonatype.org/" if (isSnapshot.value) @@ -82,4 +83,4 @@ pomExtra := ( licenses := Seq("LGPL-3.0" -> url("http://opensource.org/licenses/LGPL-3.0")) homepage := Some(url("http://www.bigbluebutton.org")) - \ No newline at end of file + diff --git a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/Util.java b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/Util.java index 679887a2d4..08b0946007 100755 --- a/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/Util.java +++ b/bbb-common-message/src/main/java/org/bigbluebutton/common/messages/Util.java @@ -4,9 +4,12 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Map; + +import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; +import com.google.gson.JsonParser; public class Util { public Map<String, Boolean> extractPermission(JsonObject vu) { @@ -414,6 +417,50 @@ public class Util { } return collection; } + + public Map<String, Object> extractPollResultAnnotation(JsonObject annotationElement) { + if (annotationElement.has("result") + && annotationElement.has("points")) { + Map<String, Object> finalAnnotation = new HashMap<String, Object>(); + + String resultJson = annotationElement.get("result").getAsString(); + JsonParser parser = new JsonParser(); + JsonArray resultJsonArray = parser.parse(resultJson).getAsJsonArray(); + + ArrayList<Map<String, Object>> collection = new ArrayList<Map<String, Object>>(); + Iterator<JsonElement> resultIter = resultJsonArray.iterator(); + + while (resultIter.hasNext()){ + JsonObject p = (JsonObject)resultIter.next(); + Map<String, Object> vote = new HashMap<String, Object>(); + Integer vid = p.get("id").getAsInt(); + Integer vvotes = p.get("num_votes").getAsInt(); + String vkey = p.get("key").getAsString(); + vote.put("id", vid); + vote.put("num_votes", vvotes); + vote.put("key", vkey); + + collection.add(vote); + } + + JsonArray pointsJsonArray = annotationElement.get("points").getAsJsonArray(); + ArrayList<Float> pointsArray = new ArrayList<Float>(); + Iterator<JsonElement> pointIter = pointsJsonArray.iterator(); + while (pointIter.hasNext()){ + JsonElement p = pointIter.next(); + Float pf = p.getAsFloat(); + if (pf != null) { + pointsArray.add(pf); + } + } + + finalAnnotation.put("result", collection); + finalAnnotation.put("points", pointsArray); + + return finalAnnotation; + } + return null; + } public Map<String, Object> extractOuterAnnotation(JsonObject annotationElement) { @@ -433,8 +480,14 @@ public class Util { finalAnnotation.put("status", status); JsonElement shape = annotationElement.get("shape"); - Map<String, Object> shapesMap = extractAnnotation((JsonObject)shape); - + Map<String, Object> shapesMap; + + if (type.equals("poll_result")) { + shapesMap = extractPollResultAnnotation((JsonObject)shape); + } else { + shapesMap = extractAnnotation((JsonObject)shape); + } + if (shapesMap != null) { finalAnnotation.put("shapes", shapesMap); } diff --git a/bigbluebutton-apps/build.gradle b/bigbluebutton-apps/build.gradle index a1843446ba..e8296558ca 100755 --- a/bigbluebutton-apps/build.gradle +++ b/bigbluebutton-apps/build.gradle @@ -112,7 +112,7 @@ dependencies { compile 'com.google.code.gson:gson:1.7.1' providedCompile 'org.apache.commons:commons-lang3:3.2' - compile 'org.bigbluebutton:bbb-common-message:0.0.6' + compile 'org.bigbluebutton:bbb-common-message:0.0.7' } test { diff --git a/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/WhiteboardClientMessageSender.java b/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/WhiteboardClientMessageSender.java index 7f8b4f4f5f..f5fd992a2c 100755 --- a/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/WhiteboardClientMessageSender.java +++ b/bigbluebutton-apps/src/main/java/org/bigbluebutton/red5/client/WhiteboardClientMessageSender.java @@ -94,8 +94,7 @@ public class WhiteboardClientMessageSender { } - private void processGetWhiteboardShapesReplyMessage( - GetWhiteboardShapesReplyMessage msg) { + private void processGetWhiteboardShapesReplyMessage(GetWhiteboardShapesReplyMessage msg) { Map<String, Object> args = new HashMap<String, Object>(); args.put("whiteboardId", msg.whiteboardId); @@ -110,13 +109,11 @@ public class WhiteboardClientMessageSender { + message.get("msg").toString() + "\n"); //directed message - DirectClientMessage m = new DirectClientMessage(msg.meetingId, - msg.requesterId, "WhiteboardRequestAnnotationHistoryReply", message); + DirectClientMessage m = new DirectClientMessage(msg.meetingId, msg.requesterId, "WhiteboardRequestAnnotationHistoryReply", message); service.sendMessage(m); } - private void processIsWhiteboardEnabledReply( - IsWhiteboardEnabledReplyMessage msg) { + private void processIsWhiteboardEnabledReply(IsWhiteboardEnabledReplyMessage msg) { Map<String, Object> args = new HashMap<String, Object>(); args.put("enabled", msg.enabled); -- GitLab