diff --git a/akka-bbb-apps/build.sbt b/akka-bbb-apps/build.sbt index bb8b3fd1d8985b46a238a074df4dfff5dcb009ee..cc04561c592ef48a55fe3321d9ccd422b3e0e849 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 420797598cab4fe38da009e09042935c225d085c..521b063f50b3f0f0ab2f8c925933c6494c53d045 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 a252439b249587fec0a461f38d7d78cfc72f20a8..6581f4438a54feb6b90cd98cc3f6eaee3532be13 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 206751d0d698c196b296f7e3c84513666fe539f0..18e9c65a787779d5ce8e101a5f7721fed4cfcb7e 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 647816435d5739592618dfba598f518a74508d5e..b9f7b2e4270f8919fe52422316c26071402050fc 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 679887a2d4e34b5f2980af215d0789c7ca9364ca..08b09460076f0ed3dd8636bee14d69af6e6d1347 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 a1843446baeddd40821a5465a198c90b6ae6220e..e8296558ca14b42e18e538ab7a6fe52675c703ee 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 7f8b4f4f5f38d811413c38d1314bcb1c2a6409bc..f5fd992a2ce573711632ae17e276ff95c4ab41f7 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);