diff --git a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/chat/ChatBridge.java b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/chat/ChatBridge.java deleted file mode 100755 index 7a64166351929486644fa81b171e1998a49f22a7..0000000000000000000000000000000000000000 --- a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/chat/ChatBridge.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.bigbluebutton.conference.service.chat; - -import java.util.ArrayList; -import java.util.HashMap; - -import org.bigbluebutton.conference.service.messaging.MessagingConstants; -import org.bigbluebutton.conference.service.messaging.MessagingService; - -import redis.clients.jedis.Jedis; - -import com.google.gson.Gson; - -public class ChatBridge { - - private MessagingService messagingService; - - public void sendMsg(String meetingID, ChatMessageVO chat){ - ArrayList<Object> updates = new ArrayList<Object>(); - updates.add(meetingID); - updates.add("msg"); - updates.add(chat.fromUsername); - updates.add(chat.message); - updates.add(chat.fromUserID); - Gson gson = new Gson(); - - messagingService.send(MessagingConstants.BIGBLUEBUTTON_BRIDGE, gson.toJson(updates)); - } - - public MessagingService getMessagingService() { - return messagingService; - } - - public void setMessagingService(MessagingService messagingService) { - this.messagingService = messagingService; - } - - public void storeMsg(String meetingID, ChatMessageVO chatobj) { - Jedis jedis = messagingService.createRedisClient(); - - HashMap<String,String> map = new HashMap<String, String>(); - long messageid = System.currentTimeMillis(); - - map.put("message", chatobj.message); - map.put("username", chatobj.fromUsername); - map.put("userID", chatobj.fromUserID); - jedis.hmset("meeting-"+meetingID+"-message-"+messageid, map); - jedis.rpush("meeting-"+meetingID+"-messages", Long.toString(messageid)); - - messagingService.dropRedisClient(jedis); - } - -} diff --git a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/chat/ChatService.java b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/chat/ChatService.java index a1976a5014aba767d3b60b92ee4d2924d290e87d..99ae148ac0625cd685bd8b5bca631330568c8611 100755 --- a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/chat/ChatService.java +++ b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/chat/ChatService.java @@ -25,12 +25,10 @@ import org.bigbluebutton.conference.BigBlueButtonSession; import org.bigbluebutton.conference.Constants; import org.red5.logging.Red5LoggerFactory; import org.red5.server.api.Red5; -public class ChatService { - +public class ChatService { private static Logger log = Red5LoggerFactory.getLogger( ChatService.class, "bigbluebutton" ); private ChatApplication application; - private ChatBridge chatBridge; public void sendPublicChatHistory() { String meetingID = Red5.getConnectionLocal().getScope().getName(); @@ -77,10 +75,7 @@ public class ChatService { public void setChatApplication(ChatApplication a) { application = a; } - public void setChatBridge(ChatBridge cb){ - this.chatBridge = cb; - } - + public void sendPrivateMessage(Map<String, Object> msg){ String chatType = msg.get(ChatKeyUtil.CHAT_TYPE).toString(); String fromUserID = msg.get(ChatKeyUtil.FROM_USERID).toString(); diff --git a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/messaging/MessagingService.java b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/messaging/MessagingService.java index ba7772bff7207defb856fa74ce7b7c1dfbdeaf43..8721b188ca6945b3cbd3c090223a551e728f3244 100755 --- a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/messaging/MessagingService.java +++ b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/messaging/MessagingService.java @@ -22,8 +22,6 @@ import redis.clients.jedis.Jedis; public interface MessagingService { public void send(String channel, String message); - public void addListener(MessageListener listener); - public void removeListener(MessageListener listener); public Jedis createRedisClient(); public void dropRedisClient(Jedis jedis); } diff --git a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/participants/ParticipantsApplication.java b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/participants/ParticipantsApplication.java index 5277059adf94f1adec5110667c32342c00edbe9f..7933570fabffe21e6d9580559152cd47e49c7ad3 100755 --- a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/participants/ParticipantsApplication.java +++ b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/participants/ParticipantsApplication.java @@ -55,7 +55,6 @@ public class ParticipantsApplication { public boolean registerUser(String roomName, String userid, String username, String role, String externUserID, Map status) { bbbInGW.registerUser(roomName, userid, username, role, externUserID); - //bbbInGW.userJoin(roomName, userid, username, role, externUserID); return true; } @@ -70,15 +69,6 @@ public class ParticipantsApplication { public void setBigBlueButtonInGW(IBigBlueButtonInGW inGW) { bbbInGW = inGW; } - - public boolean addParticipantsBridge(String room, ParticipantsBridge participantsBridge) { - if (roomsManager.hasRoom(room)){ - roomsManager.addParticipantsBridge(room, participantsBridge); - return true; - } - log.warn("Adding listener to a non-existant room " + room); - return false; - } public void setRecordingStatus(String meetingId, String userId, Boolean recording) { bbbInGW.setRecordingStatus(meetingId, userId, recording); diff --git a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/participants/ParticipantsBridge.java b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/participants/ParticipantsBridge.java deleted file mode 100755 index cb7eaa461a325aa339ff728ac2beb5e20c0f3cd2..0000000000000000000000000000000000000000 --- a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/participants/ParticipantsBridge.java +++ /dev/null @@ -1,164 +0,0 @@ -package org.bigbluebutton.conference.service.participants; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; -import java.util.UUID; - -import org.bigbluebutton.conference.User; -import org.bigbluebutton.conference.service.messaging.MessagingConstants; -import org.bigbluebutton.conference.service.messaging.MessagingService; - -import com.google.gson.Gson; - -import redis.clients.jedis.Jedis; - -public class ParticipantsBridge { - - private MessagingService messagingService; - - public ParticipantsBridge(){ - - } - - public void storeParticipant(String meetingID, String userid, String username, String role) { - - //temporary solution for integrate with the html5 client - Jedis jedis = messagingService.createRedisClient(); - jedis.sadd("meeting-"+meetingID+"-users", userid); - //"username", username, "meetingID", meetingID, "refreshing", false, "dupSess", false, "sockets", 0, 'pubID', publicID - HashMap<String,String> temp_user = new HashMap<String, String>(); - temp_user.put("username", username); - temp_user.put("meetingID", meetingID); - temp_user.put("refreshing", "false"); - temp_user.put("dupSess", "false"); - temp_user.put("sockets", "0"); - temp_user.put("pubID", userid); - temp_user.put("role", role); - - jedis.hmset("meeting-"+meetingID+"-user-"+userid, temp_user); - - /* Storing status properties */ - HashMap<String,String> status = new HashMap<String, String>(); - status.put("raiseHand", "false"); - status.put("presenter", "false"); - status.put("hasStream", "false"); - - jedis.hmset("meeting-"+meetingID+"-user-"+userid +"-status", status); - - messagingService.dropRedisClient(jedis); - } - - public void removeParticipant(String meetingID, String internalUserID) { - - Jedis jedis = messagingService.createRedisClient(); - jedis.srem("meeting-"+meetingID+"-users", internalUserID); - jedis.del("meeting-"+meetingID+"-user-"+internalUserID); - messagingService.dropRedisClient(jedis); - } - - public void sendParticipantJoin(String meetingID, String userid, String username, String role){ - ArrayList<Object> updates = new ArrayList<Object>(); - updates.add(meetingID); - updates.add("user join"); - updates.add(userid); - updates.add(username); - updates.add(role); - - Gson gson = new Gson(); - messagingService.send(MessagingConstants.BIGBLUEBUTTON_BRIDGE, gson.toJson(updates)); - } - - public void sendParticipantLeave(String meetingID, String userid){ - ArrayList<Object> updates = new ArrayList<Object>(); - updates.add(meetingID); - updates.add("user leave"); - updates.add(userid); - - Gson gson = new Gson(); - messagingService.send(MessagingConstants.BIGBLUEBUTTON_BRIDGE, gson.toJson(updates)); - } - - /*public void sendParticipantsUpdateList(String meetingID){ - ArrayList<Object> updates = new ArrayList<Object>(); - updates.add(meetingID); - updates.add("user list change"); - - ArrayList<User> arr= new ArrayList<User>(loadParticipants(meetingID).values()); - ArrayList<Object> all_participants = new ArrayList<Object>(); - for(int i=0; i<arr.size(); i++){ - Participant p = arr.get(i); - HashMap<String,String> id_name = new HashMap<String, String>(); - id_name.put("name", p.getName()); - id_name.put("id", p.getInternalUserID().toString()); - all_participants.add(id_name); - } - updates.add(all_participants); - - Gson gson = new Gson(); - - messagingService.send(MessagingConstants.BIGBLUEBUTTON_BRIDGE, gson.toJson(updates)); - }*/ - - public MessagingService getMessagingService() { - return messagingService; - } - - public void setMessagingService(MessagingService messagingService) { - this.messagingService = messagingService; - } - - public Map<String,User> loadParticipants( - String meetingID) { - HashMap<String,User> map = new HashMap<String, User>(); - - Jedis jedis = messagingService.createRedisClient(); - Set<String> userids = jedis.smembers("meeting-"+meetingID+"-users"); - - for(String userid:userids){ - Map<String,String> users = jedis.hgetAll("meeting-"+meetingID+"-user-"+userid); - - String internalUserID = users.get("pubID"); - String externalUserID = UUID.randomUUID().toString(); - - Map<String,String> status_from_db = jedis.hgetAll("meeting-"+meetingID+"-user-"+userid+"-status"); - - Map<String, Object> status = new HashMap<String, Object>(); - status.put("raiseHand", Boolean.parseBoolean(status_from_db.get("raiseHand"))); - status.put("presenter", Boolean.parseBoolean(status_from_db.get("presenter"))); - status.put("hasStream", Boolean.parseBoolean(status_from_db.get("hasStream"))); - - User p = new User(internalUserID, users.get("username"), users.get("role"), externalUserID, status); - map.put(internalUserID, p); - } - - messagingService.dropRedisClient(jedis); - - return map; - } - - public void storeAssignPresenter(String meetingID, String userid, String previousPresenter){ - Jedis jedis = messagingService.createRedisClient(); - jedis.hset("meeting-"+meetingID+"-user-"+userid+"-status", "presenter", "true"); - if(previousPresenter != null) - jedis.hset("meeting-"+meetingID+"-user-"+previousPresenter+"-status", "presenter", "false"); - - HashMap<String,String> params = new HashMap<String, String>(); - params.put("sessionID", "0"); - params.put("publicID",userid); - jedis.hmset("meeting-"+meetingID+"-presenter",params); - - messagingService.dropRedisClient(jedis); - } - - public void sendAssignPresenter(String meetingID, String userid) { - ArrayList<Object> updates = new ArrayList<Object>(); - updates.add(meetingID); - updates.add("setPresenter"); - updates.add(userid); - Gson gson = new Gson(); - messagingService.send(MessagingConstants.BIGBLUEBUTTON_BRIDGE, gson.toJson(updates)); - } - -} diff --git a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/participants/ParticipantsHandler.java b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/participants/ParticipantsHandler.java index b9ad3c93c6d19e9a495f1a6f7a6a3bc2d7dab1ab..7b4d027bf274396f1d8877299fa6604960dc1b68 100755 --- a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/participants/ParticipantsHandler.java +++ b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/participants/ParticipantsHandler.java @@ -25,15 +25,12 @@ import org.red5.server.api.IConnection; import org.slf4j.Logger; import org.red5.logging.Red5LoggerFactory; import org.red5.server.api.scope.IScope; -import org.red5.server.api.so.ISharedObject; import org.red5.server.adapter.ApplicationAdapter; import org.red5.server.api.Red5; import java.util.HashMap; import java.util.Map; import org.bigbluebutton.conference.BigBlueButtonSession; import org.bigbluebutton.conference.Constants; -import org.bigbluebutton.conference.service.recorder.RecorderApplication; -import org.bigbluebutton.conference.service.recorder.participants.ParticipantsEventRecorder; public class ParticipantsHandler extends ApplicationAdapter implements IApplication{ private static Logger log = Red5LoggerFactory.getLogger( ParticipantsHandler.class, "bigbluebutton" ); @@ -105,10 +102,6 @@ public class ParticipantsHandler extends ApplicationAdapter implements IApplicat BigBlueButtonSession bbbSession = getBbbSession(); if (bbbSession == null) { log.debug("roomLeave - session is null"); - } else { - //participantsApplication.participantLeft(scope.getName(), bbbSession.getInternalUserID()); - participantsBridge.removeParticipant(bbbSession.getRoom(),bbbSession.getInternalUserID()); - participantsBridge.sendParticipantLeave(bbbSession.getRoom(),bbbSession.getInternalUserID()); } } @@ -131,14 +124,8 @@ public class ParticipantsHandler extends ApplicationAdapter implements IApplicat status.put("raiseHand", false); status.put("presenter", false); status.put("hasStream", false); -<<<<<<< HEAD + participantsApplication.registerUser(room, userid, username, role, bbbSession.getExternUserID(), status); -======= - participantsBridge.storeParticipant(room, userid, username, role); - participantsBridge.sendParticipantJoin(room, userid, username,role); - //return participantsApplication.participantJoin(room, userid, username, role, bbbSession.getExternUserID(), status); - return true; ->>>>>>> e45a77f080693613f8d3ee7369c2a7e3d228a925 } log.warn("Can't send user join as session is null."); } @@ -152,11 +139,4 @@ public class ParticipantsHandler extends ApplicationAdapter implements IApplicat return (BigBlueButtonSession) Red5.getConnectionLocal().getAttribute(Constants.SESSION); } - public ParticipantsBridge getParticipantsBridge() { - return participantsBridge; - } - - public void setParticipantsBridge(ParticipantsBridge participantsBridge) { - this.participantsBridge = participantsBridge; - } } diff --git a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/participants/ParticipantsService.java b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/participants/ParticipantsService.java index 7cebd8d3398f1741c890e4ca543da7ab5d142464..ed73bcd480f7254598d41515619d228149086727 100755 --- a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/participants/ParticipantsService.java +++ b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/participants/ParticipantsService.java @@ -29,10 +29,8 @@ import org.bigbluebutton.conference.Constants; public class ParticipantsService { - private static Logger log = Red5LoggerFactory.getLogger( ParticipantsService.class, "bigbluebutton" ); private ParticipantsApplication application; - private ParticipantsBridge participantsBridge; public void assignPresenter(Map<String, String> msg) { @@ -82,7 +80,6 @@ public class ParticipantsService { application = a; } -<<<<<<< HEAD public void setRecordingStatus(Map<String, Object> msg) { String roomName = Red5.getConnectionLocal().getScope().getName(); application.setRecordingStatus(roomName, (String)msg.get("userId"), (Boolean) msg.get("recording")); @@ -102,10 +99,6 @@ public class ParticipantsService { private BigBlueButtonSession getBbbSession() { return (BigBlueButtonSession) Red5.getConnectionLocal().getAttribute(Constants.SESSION); -} -======= - public void setParticipantsBridge(ParticipantsBridge pb){ - this.participantsBridge = pb; - } ->>>>>>> e45a77f080693613f8d3ee7369c2a7e3d228a925 + } + } diff --git a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/presentation/PresentationService.java b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/presentation/PresentationService.java index 563fd1abd0676bcddd7baef17e836e12cd58d7fc..0873b641ed31cbbca2088d182dfb8b2c4f25f19c 100755 --- a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/presentation/PresentationService.java +++ b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/presentation/PresentationService.java @@ -18,6 +18,8 @@ */ package org.bigbluebutton.conference.service.presentation; +import java.util.Map; + import org.slf4j.Logger; import org.red5.logging.Red5LoggerFactory; import org.red5.server.api.Red5; @@ -29,7 +31,6 @@ public class PresentationService { private static Logger log = Red5LoggerFactory.getLogger( PresentationService.class, "bigbluebutton" ); private PresentationApplication presentationApplication; - private PresentationBridge bridge; public void removePresentation(Map<String, Object> msg) { String presentationID = (String) msg.get("presentationID"); diff --git a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/whiteboard/WhiteboardBridge.java b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/whiteboard/WhiteboardBridge.java deleted file mode 100755 index 8e5f512f93427bb9ce5e4df879c3bfa82550a9d3..0000000000000000000000000000000000000000 --- a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/whiteboard/WhiteboardBridge.java +++ /dev/null @@ -1,488 +0,0 @@ -package org.bigbluebutton.conference.service.whiteboard; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; - -import org.bigbluebutton.conference.service.messaging.MessagingConstants; -import org.bigbluebutton.conference.service.messaging.MessagingService; -import org.bigbluebutton.conference.service.whiteboard.shapes.Annotation; -import org.red5.logging.Red5LoggerFactory; -import org.slf4j.Logger; - -import redis.clients.jedis.Jedis; - -import com.google.gson.Gson; - -public class WhiteboardBridge { - private MessagingService messagingService; - - private static final String RECTANGLE_TYPE = "rectangle"; - private static final String PENCIL_TYPE = "pencil"; - private static final String ELLIPSE_TYPE = "ellipse"; - private static final String TRIANGLE_TYPE = "triangle"; - private static final String LINE_TYPE = "line"; - private static final String TEXT_TYPE = "text"; - - private static Logger log = Red5LoggerFactory.getLogger(WhiteboardBridge.class, "bigbluebutton"); - - public WhiteboardBridge(){ - - } - - // send "undo" event to html5-client - - public void undo(String meetingID){ - ArrayList<Object> updates = new ArrayList<Object>(); - updates.add(meetingID); - updates.add("undo"); - Gson gson = new Gson(); - messagingService.send(MessagingConstants.BIGBLUEBUTTON_BRIDGE, gson.toJson(updates)); - } - - // send "clrPaper" event to html5-client - - public void clear(String meetingID){ - ArrayList<Object> updates = new ArrayList<Object>(); - updates.add(meetingID); - updates.add("clrPaper"); - Gson gson = new Gson(); - messagingService.send(MessagingConstants.BIGBLUEBUTTON_BRIDGE, gson.toJson(updates)); - } - - public void sendAnnotation(String meetingID, Annotation an) { - - if(an.getType().equalsIgnoreCase(WhiteboardBridge.PENCIL_TYPE)){ - Map map = an.getAnnotation(); - ArrayList<Object> updates = new ArrayList<Object>(); - updates.add(meetingID); - updates.add("shapePoints"); - updates.add("line"); - updates.add(map.get("color")); - updates.add(map.get("thickness")); - updates.add(map.get("points")); - Gson gson = new Gson(); - messagingService.send(MessagingConstants.BIGBLUEBUTTON_BRIDGE, gson.toJson(updates)); - }else if(an.getType().equalsIgnoreCase(WhiteboardBridge.RECTANGLE_TYPE)){ - Map map = an.getAnnotation(); - ArrayList<Object> updates = new ArrayList<Object>(); - updates.add(meetingID); - - ArrayList points = (ArrayList) map.get("points"); - - ArrayList<Object> data = new ArrayList<Object>(); - - Double pX = Double.parseDouble(points.get(0).toString()); - Double pY = Double.parseDouble(points.get(1).toString()); - data.add(pX/100); - data.add(pY/100); - if(an.getStatus().equalsIgnoreCase("DRAW_START")){ - updates.add("makeShape"); - data.add(map.get("color")); - data.add(map.get("thickness")); - data.add(map.get("square")); - - }else{ - updates.add("updShape"); - Double pW = Double.parseDouble(points.get(2).toString()); - Double pH = Double.parseDouble(points.get(3).toString()); - data.add(pW/100); - data.add(pH/100); - data.add(map.get("square"));// if "Ctrl" key pressed, it should draw square in html5-client - } - - updates.add("rect"); - updates.add(data); - - Gson gson = new Gson(); - log.debug("sendAnnotation: " + gson.toJson(updates)); - messagingService.send(MessagingConstants.BIGBLUEBUTTON_BRIDGE, gson.toJson(updates)); - }else if(an.getType().equalsIgnoreCase(WhiteboardBridge.ELLIPSE_TYPE)){ - Map map = an.getAnnotation(); - ArrayList<Object> updates = new ArrayList<Object>(); - updates.add(meetingID); - - ArrayList points = (ArrayList) map.get("points"); - - ArrayList<Object> data = new ArrayList<Object>(); - Double pX = Double.parseDouble(points.get(0).toString()); - Double pY = Double.parseDouble(points.get(1).toString()); - data.add(pX/100); - data.add(pY/100); - if(an.getStatus().equalsIgnoreCase("DRAW_START")){ - updates.add("makeShape"); - data.add(map.get("color")); - data.add(map.get("thickness")); - - }else{ - updates.add("updShape"); - Double vR = Double.parseDouble(points.get(2).toString()); - Double hR = Double.parseDouble(points.get(3).toString()); - data.add(vR/100); - data.add(hR/100); - data.add(map.get("circle"));// if "Ctrl" key pressed, it should draw a circle in html5-client - } - - updates.add("ellipse"); - updates.add(data); - - Gson gson = new Gson(); - log.debug("sendAnnotation: " + gson.toJson(updates)); - messagingService.send(MessagingConstants.BIGBLUEBUTTON_BRIDGE, gson.toJson(updates)); - }else if(an.getType().equalsIgnoreCase(WhiteboardBridge.TRIANGLE_TYPE)){ - log.debug("start triangle shape"); - Map map = an.getAnnotation(); - log.debug("triangle map: " + map); - - ArrayList<Object> updates = new ArrayList<Object>(); - updates.add(meetingID); - - ArrayList points = (ArrayList) map.get("points"); - - ArrayList<Object> data = new ArrayList<Object>(); - Double pX = Double.parseDouble(points.get(0).toString()); - Double pY = Double.parseDouble(points.get(1).toString()); - - data.add(pX/100); - data.add(pY/100); - if(an.getStatus().equalsIgnoreCase("DRAW_START")){ - updates.add("makeShape"); - data.add(map.get("color")); - data.add(map.get("thickness")); - - }else{ - updates.add("updShape"); - Double pBase = Double.parseDouble(points.get(2).toString()); - Double pHeight = Double.parseDouble(points.get(3).toString()); - data.add(pBase/100); - data.add(pHeight/100); - } - - updates.add("triangle"); - updates.add(data); - - Gson gson = new Gson(); - log.debug("sendAnnotation: " + gson.toJson(updates)); - messagingService.send(MessagingConstants.BIGBLUEBUTTON_BRIDGE, gson.toJson(updates)); - }else if(an.getType().equalsIgnoreCase(WhiteboardBridge.LINE_TYPE)){ - Map map = an.getAnnotation(); - log.debug("line map: " + map); - - ArrayList<Object> updates = new ArrayList<Object>(); - updates.add(meetingID); - - ArrayList points = (ArrayList) map.get("points"); - - - - ArrayList<Object> data = new ArrayList<Object>(); - Double p1X = Double.parseDouble(points.get(0).toString()); - Double p1Y = Double.parseDouble(points.get(1).toString()); - - data.add(p1X/100); - data.add(p1Y/100); - if(an.getStatus().equalsIgnoreCase("DRAW_START")){ - updates.add("makeShape"); - data.add(map.get("color")); - data.add(map.get("thickness")); - - }else{ - updates.add("updShape"); - Double p2X = Double.parseDouble(points.get(2).toString()); - Double p2Y = Double.parseDouble(points.get(3).toString()); - data.add(p2X/100); - data.add(p2Y/100); - } - - updates.add("line"); - updates.add(data); - - Gson gson = new Gson(); - log.debug("sendAnnotation: " + gson.toJson(updates)); - messagingService.send(MessagingConstants.BIGBLUEBUTTON_BRIDGE, gson.toJson(updates)); - }else if(an.getType().equalsIgnoreCase(WhiteboardBridge.TEXT_TYPE)){ - Map map = an.getAnnotation(); - log.debug("text map: " + map); - - /* - * - * 2013-04-27 16:20:32,039 [NioProcessor-6] DEBUG o.b.c.s.whiteboard.WhiteboardBridge - text map: {text=, fontColor=0, status=textCreated, textBoxWidth=19.897959183673468, type=text, fontSize=18, - * calcedFontSize=2.4489795918367347, textBoxHeight=10.748299319727892, id=grkuuwyivyq0-2-1367097639287, presentationID=default, pageNumber=1, y=19.86394557823129, x=63.775510204081634, - * dataPoints=63.775510204081634,19.86394557823129} - * - * 2013-04-27 16:20:34,084 [NioProcessor-6] DEBUG o.b.c.s.whiteboard.WhiteboardBridge - text map: {text=text, fontColor=0, backgroundColor=16777215, status=textEdited, textBoxWidth=19.897959183673468, - * type=text, fontSize=18, textBoxHeight=10.748299319727892, calcedFontSize=2.4489795918367347, id=grkuuwyivyq0-2-1367097639287, background=true, presentationID=default, pageNumber=1, - * y=19.86394557823129, x=63.775510204081634, dataPoints=63.775510204081634,19.86394557823129} - * - * 2013-04-27 16:20:35,070 [NioProcessor-6] DEBUG o.b.c.s.whiteboard.WhiteboardBridge - text map: {text=text, fontColor=0, backgroundColor=16777215, status=textPublished, textBoxWidth=19.897959183673468, - * type=text, fontSize=18, textBoxHeight=10.748299319727892, calcedFontSize=2.4489795918367347, id=grkuuwyivyq0-2-1367097639287, background=true, presentationID=default, pageNumber=1, - * y=19.86394557823129, x=63.775510204081634, dataPoints=63.775510204081634,19.86394557823129} - * - * */ - - - ArrayList<Object> updates = new ArrayList<Object>(); - updates.add(meetingID); - - Double pX = Double.parseDouble(map.get("x").toString()); - Double pY = Double.parseDouble(map.get("y").toString()); - Double tbWidth = Double.parseDouble(map.get("textBoxWidth").toString()); - Double tbHeight = Double.parseDouble(map.get("textBoxHeight").toString()); - - /* - * "makeShape", "text", [x (%), y (%), spacing between letters, color, font, font size] - * "updShape", "text", [x (%), y (%), text, width (%)] - * */ - - ArrayList<Object> data = new ArrayList<Object>(); - data.add(pX/100); - data.add(pY/100); - data.add(tbWidth); - data.add(tbHeight); - data.add(map.get("fontColor")); - data.add(map.get("fontSize")); - data.add(map.get("calcedFontSize")); - data.add(map.get("text")); - - if(an.getStatus().equalsIgnoreCase("textCreated")){ - updates.add("makeShape"); - }else{ - updates.add("updShape"); - } - - updates.add("text"); - updates.add(data); - - Gson gson = new Gson(); - log.debug("sendAnnotation: " + gson.toJson(updates)); - messagingService.send(MessagingConstants.BIGBLUEBUTTON_BRIDGE, gson.toJson(updates)); - } - - else{ - Map map = an.getAnnotation(); - log.debug("another type of annotation: " + map); - } - - } - - public void storeAnnotation(String meetingID, Annotation an){ - - if(an.getType().equalsIgnoreCase(WhiteboardBridge.PENCIL_TYPE)){ - String shapeType = "path"; - String shapeID = Long.toString(System.currentTimeMillis()); - ArrayList<Object> data = new ArrayList<Object>(); - - Map map = an.getAnnotation(); - ArrayList points = (ArrayList) map.get("points"); - - Jedis jedis = messagingService.createRedisClient(); - - HashMap<String,String> mapAnn = new HashMap<String, String>(); - - mapAnn.put("shape", shapeType); - data.add(points); - data.add( (Integer.parseInt(map.get("color").toString()) == 0) ? "#000000" : map.get("color") ); - data.add(map.get("thickness")); - Gson gson = new Gson(); - mapAnn.put("data", gson.toJson(data)); - jedis.rpush("meeting-" + meetingID + "-presentation-" + map.get("presentationID") + "-page-"+map.get("pageNumber")+"-currentshapes", shapeID); - jedis.hmset("meeting-" + meetingID + "-presentation-" + map.get("presentationID") + "-page-"+map.get("pageNumber")+"-shape-"+shapeID, mapAnn); - - messagingService.dropRedisClient(jedis); - } - else if(an.getType().equalsIgnoreCase(WhiteboardBridge.RECTANGLE_TYPE)){ - if(an.getStatus().equalsIgnoreCase("DRAW_END")){ - String shapeType = "rect"; - String shapeID = Long.toString(System.currentTimeMillis()); - ArrayList<Object> data = new ArrayList<Object>(); - - Map map = an.getAnnotation(); - ArrayList points = (ArrayList) map.get("points"); - Double pX = Double.parseDouble(points.get(0).toString()); - Double pY = Double.parseDouble(points.get(1).toString()); - Double pW = Double.parseDouble(points.get(2).toString()); - Double pH = Double.parseDouble(points.get(3).toString()); - - - Jedis jedis = messagingService.createRedisClient(); - - HashMap<String,String> mapAnn = new HashMap<String, String>(); - - mapAnn.put("shape", shapeType); - - data.add(pX/100); - data.add(pY/100); - data.add(pW/100); - data.add(pH/100); - data.add( (Integer.parseInt(map.get("color").toString()) == 0) ? "#000000" : map.get("color") ); - data.add(map.get("thickness")); - - Gson gson = new Gson(); - mapAnn.put("data", gson.toJson(data)); - - jedis.rpush("meeting-" + meetingID + "-presentation-" + map.get("presentationID") + "-page-"+map.get("pageNumber")+"-currentshapes", shapeID); - jedis.hmset("meeting-" + meetingID + "-presentation-" + map.get("presentationID") + "-page-"+map.get("pageNumber")+"-shape-"+shapeID, mapAnn); - - messagingService.dropRedisClient(jedis); - } - } - - else if(an.getType().equalsIgnoreCase(WhiteboardBridge.ELLIPSE_TYPE)){ - if(an.getStatus().equalsIgnoreCase("DRAW_END")){ - String shapeType = "ellipse"; - String shapeID = Long.toString(System.currentTimeMillis()); - ArrayList<Object> data = new ArrayList<Object>(); - - Map map = an.getAnnotation(); - ArrayList points = (ArrayList) map.get("points"); - Double pX = Double.parseDouble(points.get(0).toString()); - Double pY = Double.parseDouble(points.get(1).toString()); - Double vR = Double.parseDouble(points.get(2).toString()); - Double hR = Double.parseDouble(points.get(3).toString()); - - - Jedis jedis = messagingService.createRedisClient(); - - HashMap<String,String> mapAnn = new HashMap<String, String>(); - - mapAnn.put("shape", shapeType); - - data.add(pX/100); - data.add(pY/100); - data.add(vR/100); - data.add(hR/100); - data.add( (Integer.parseInt(map.get("color").toString()) == 0) ? "#000000" : map.get("color") ); - data.add(map.get("thickness")); - - Gson gson = new Gson(); - mapAnn.put("data", gson.toJson(data)); - - jedis.rpush("meeting-" + meetingID + "-presentation-" + map.get("presentationID") + "-page-"+map.get("pageNumber")+"-currentshapes", shapeID); - jedis.hmset("meeting-" + meetingID + "-presentation-" + map.get("presentationID") + "-page-"+map.get("pageNumber")+"-shape-"+shapeID, mapAnn); - - messagingService.dropRedisClient(jedis); - } - } - - else if(an.getType().equalsIgnoreCase(WhiteboardBridge.TRIANGLE_TYPE)){ - if(an.getStatus().equalsIgnoreCase("DRAW_END")){ - String shapeType = "triangle"; - String shapeID = Long.toString(System.currentTimeMillis()); - ArrayList<Object> data = new ArrayList<Object>(); - - Map map = an.getAnnotation(); - ArrayList points = (ArrayList) map.get("points"); - Double pX = Double.parseDouble(points.get(0).toString()); - Double pY = Double.parseDouble(points.get(1).toString()); - Double pBase = Double.parseDouble(points.get(2).toString()); - Double pHeight = Double.parseDouble(points.get(3).toString()); - - - Jedis jedis = messagingService.createRedisClient(); - - HashMap<String,String> mapAnn = new HashMap<String, String>(); - - mapAnn.put("shape", shapeType); - - data.add(pX/100); - data.add(pY/100); - data.add(pBase/100); - data.add(pHeight/100); - data.add( (Integer.parseInt(map.get("color").toString()) == 0) ? "#000000" : map.get("color") ); - data.add(map.get("thickness")); - - Gson gson = new Gson(); - mapAnn.put("data", gson.toJson(data)); - - jedis.rpush("meeting-" + meetingID + "-presentation-" + map.get("presentationID") + "-page-"+map.get("pageNumber")+"-currentshapes", shapeID); - jedis.hmset("meeting-" + meetingID + "-presentation-" + map.get("presentationID") + "-page-"+map.get("pageNumber")+"-shape-"+shapeID, mapAnn); - - messagingService.dropRedisClient(jedis); - } - } - - else if(an.getType().equalsIgnoreCase(WhiteboardBridge.LINE_TYPE)){ - if(an.getStatus().equalsIgnoreCase("DRAW_END")){ - String shapeType = "line"; - String shapeID = Long.toString(System.currentTimeMillis()); - ArrayList<Object> data = new ArrayList<Object>(); - - Map map = an.getAnnotation(); - ArrayList points = (ArrayList) map.get("points"); - Double p1X = Double.parseDouble(points.get(0).toString()); - Double p1Y = Double.parseDouble(points.get(1).toString()); - Double p2X = Double.parseDouble(points.get(2).toString()); - Double p2Y = Double.parseDouble(points.get(3).toString()); - - - Jedis jedis = messagingService.createRedisClient(); - - HashMap<String,String> mapAnn = new HashMap<String, String>(); - - mapAnn.put("shape", shapeType); - - data.add(p1X/100); - data.add(p1Y/100); - data.add(p2X/100); - data.add(p2Y/100); - data.add( (Integer.parseInt(map.get("color").toString()) == 0) ? "#000000" : map.get("color") ); - data.add(map.get("thickness")); - - Gson gson = new Gson(); - mapAnn.put("data", gson.toJson(data)); - - jedis.rpush("meeting-" + meetingID + "-presentation-" + map.get("presentationID") + "-page-"+map.get("pageNumber")+"-currentshapes", shapeID); - jedis.hmset("meeting-" + meetingID + "-presentation-" + map.get("presentationID") + "-page-"+map.get("pageNumber")+"-shape-"+shapeID, mapAnn); - - messagingService.dropRedisClient(jedis); - } - } - - else if(an.getType().equalsIgnoreCase(WhiteboardBridge.TEXT_TYPE)){ - if(an.getStatus().equalsIgnoreCase("textPublished")){ - String shapeType = "text"; - String shapeID = Long.toString(System.currentTimeMillis()); - ArrayList<Object> data = new ArrayList<Object>(); - - Map map = an.getAnnotation(); - Double pX = Double.parseDouble(map.get("x").toString()); - Double pY = Double.parseDouble(map.get("y").toString()); - Double tbWidth = Double.parseDouble(map.get("textBoxWidth").toString()); - Double tbHeight = Double.parseDouble(map.get("textBoxHeight").toString()); - - - Jedis jedis = messagingService.createRedisClient(); - - HashMap<String,String> mapAnn = new HashMap<String, String>(); - - mapAnn.put("shape", shapeType); - - data.add(pX/100); - data.add(pY/100); - data.add(tbWidth); - data.add(tbHeight); - data.add( (Integer.parseInt(map.get("fontColor").toString()) == 0) ? "#000000" : map.get("color") ); - data.add(map.get("fontSize")); - data.add(map.get("calcedFontSize")); - data.add(map.get("text")); - - Gson gson = new Gson(); - mapAnn.put("data", gson.toJson(data)); - - jedis.rpush("meeting-" + meetingID + "-presentation-" + map.get("presentationID") + "-page-"+map.get("pageNumber")+"-currentshapes", shapeID); - jedis.hmset("meeting-" + meetingID + "-presentation-" + map.get("presentationID") + "-page-"+map.get("pageNumber")+"-shape-"+shapeID, mapAnn); - - messagingService.dropRedisClient(jedis); - } - } - - else{ - log.debug("checking annotation: " + an.getAnnotation().toString()); - } - } - - public void setMessagingService(MessagingService ms){ - this.messagingService = ms; - } - -} diff --git a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/whiteboard/WhiteboardService.java b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/whiteboard/WhiteboardService.java index 7bc455a9efa40ec674695fa54df732e06cb73fda..162eeef31fd9223c868cda85c985965ab642bf55 100755 --- a/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/whiteboard/WhiteboardService.java +++ b/bigbluebutton-apps/src/main/java/org/bigbluebutton/conference/service/whiteboard/WhiteboardService.java @@ -29,7 +29,6 @@ import org.slf4j.Logger; public class WhiteboardService { private static Logger log = Red5LoggerFactory.getLogger(WhiteboardService.class, "bigbluebutton"); private WhiteboardApplication application; - private WhiteboardBridge whiteboardBridge; private final static String TYPE = "type"; private final static String STATUS = "status";