This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new feff086  [OPENMEETINGS-2564] personal recording being played on WB as 
expected
feff086 is described below

commit feff086dc0894e1f90627fdf01c6ef697831df73
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Fri Jan 29 19:46:27 2021 +0700

    [OPENMEETINGS-2564] personal recording being played on WB as expected
---
 .../web/room/RoomResourceReference.java            | 22 ++---------------
 .../web/room/wb/WbWebSocketHelper.java             |  2 +-
 .../user/record/RecordingResourceReference.java    | 24 ++++---------------
 .../web/util/FileItemResourceReference.java        | 28 ++++++++++++++++++++++
 4 files changed, 36 insertions(+), 40 deletions(-)

diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
index e59b390..98636ed 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
@@ -18,7 +18,6 @@
  */
 package org.apache.openmeetings.web.room;
 
-import static org.apache.openmeetings.db.dto.room.Whiteboard.ATTR_FILE_ID;
 import static org.apache.openmeetings.db.dto.room.Whiteboard.ATTR_SLIDE;
 import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PNG;
 import static org.apache.openmeetings.util.OmFileHelper.MP4_MIME_TYPE;
@@ -27,27 +26,20 @@ import static 
org.apache.openmeetings.util.OmFileHelper.getImagesDir;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 
 import java.io.File;
-import java.util.Map.Entry;
 
 import org.apache.openmeetings.db.dao.file.FileItemDao;
 import org.apache.openmeetings.db.dao.user.GroupUserDao;
-import org.apache.openmeetings.db.dto.room.Whiteboard;
-import org.apache.openmeetings.db.dto.room.Whiteboards;
 import org.apache.openmeetings.db.entity.basic.Client;
 import org.apache.openmeetings.db.entity.file.BaseFileItem;
 import org.apache.openmeetings.db.entity.file.FileItem;
 import org.apache.openmeetings.web.app.ClientManager;
 import org.apache.openmeetings.web.app.WebSession;
-import org.apache.openmeetings.web.app.WhiteboardManager;
 import org.apache.openmeetings.web.util.FileItemResourceReference;
 import org.apache.wicket.injection.Injector;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.resource.IResource.Attributes;
 import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.apache.wicket.util.string.StringValue;
-import org.apache.wicket.util.string.Strings;
-
-import com.github.openjson.JSONObject;
 
 public class RoomResourceReference extends FileItemResourceReference<FileItem> 
{
        private static final long serialVersionUID = 1L;
@@ -57,8 +49,6 @@ public class RoomResourceReference extends 
FileItemResourceReference<FileItem> {
        @SpringBean
        private FileItemDao fileDao;
        @SpringBean
-       private WhiteboardManager wbManager;
-       @SpringBean
        private GroupUserDao groupUserDao;
 
        public RoomResourceReference() {
@@ -114,16 +104,8 @@ public class RoomResourceReference extends 
FileItemResourceReference<FileItem> {
                }
                String ruid = params.get("ruid").toString();
                String wuid = params.get("wuid").toString();
-               if (c.getRoom() != null) {
-                       Whiteboards wbs = wbManager.get(c.getRoom().getId());
-                       if (!Strings.isEmpty(wuid) && !Strings.isEmpty(ruid) && 
ruid.equals(wbs.getUid())) {
-                               for (Entry<Long, Whiteboard> e : 
wbs.getWhiteboards().entrySet()) {
-                                       JSONObject file = 
e.getValue().get(wuid);
-                                       if (file != null && 
f.getId().equals(file.optLong(ATTR_FILE_ID))) {
-                                               return f; // item IS on WB
-                                       }
-                               }
-                       }
+               if (isAtWb(c, ruid, wuid, f.getId())) {
+                       return f; // item IS on WB
                }
                if (f.getGroupId() != null && 
groupUserDao.isUserInGroup(f.getGroupId(), getUserId())) {
                        return f;
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
index 43225b3..d3ca670 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
@@ -143,7 +143,7 @@ public class WbWebSocketHelper {
 
        //This is required cause WebSocketHelper will send message async
        private static String patchUrl(String url, Client c) {
-               return String.format("%s&uid=%s", url, c.getUid());
+               return url + "&uid=" + c.getUid();
        }
 
        private static JSONObject patchUrls(BaseFileItem fi, Client c, 
JSONObject inFile) {
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java
index 2584365..92d0a6e 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java
@@ -21,26 +21,20 @@ package org.apache.openmeetings.web.user.record;
 import static org.apache.openmeetings.web.app.WebSession.getRecordingId;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 
-import java.util.Map.Entry;
-
 import org.apache.openmeetings.db.dao.record.RecordingDao;
 import org.apache.openmeetings.db.dao.user.GroupUserDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.dto.room.Whiteboard;
-import org.apache.openmeetings.db.dto.room.Whiteboards;
 import org.apache.openmeetings.db.entity.basic.Client;
 import org.apache.openmeetings.db.entity.file.BaseFileItem.Type;
 import org.apache.openmeetings.db.entity.record.Recording;
 import org.apache.openmeetings.web.app.ClientManager;
 import org.apache.openmeetings.web.app.WebSession;
-import org.apache.openmeetings.web.app.WhiteboardManager;
 import org.apache.openmeetings.web.util.FileItemResourceReference;
 import org.apache.wicket.injection.Injector;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.resource.IResource.Attributes;
 import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.apache.wicket.util.string.StringValue;
-import org.apache.wicket.util.string.Strings;
 
 public abstract class RecordingResourceReference extends 
FileItemResourceReference<Recording> {
        private static final long serialVersionUID = 1L;
@@ -49,8 +43,6 @@ public abstract class RecordingResourceReference extends 
FileItemResourceReferen
        @SpringBean
        private ClientManager cm;
        @SpringBean
-       private WhiteboardManager wbm;
-       @SpringBean
        private GroupUserDao groupUserDao;
        @SpringBean
        private UserDao userDao;
@@ -73,6 +65,7 @@ public abstract class RecordingResourceReference extends 
FileItemResourceReferen
                StringValue inId = params.get("id");
                String ruid = params.get("ruid").toString();
                String uid = params.get("uid").toString();
+               String wbItemId = params.get("wuid").toString();
                Long id = null;
                try {
                        id = inId.toOptionalLong();
@@ -84,12 +77,12 @@ public abstract class RecordingResourceReference extends 
FileItemResourceReferen
                        id = getRecordingId();
                }
                if (id != null && ws.isSignedIn()) {
-                       return getRecording(id, ruid, uid);
+                       return getRecording(id, ruid, uid, wbItemId);
                }
                return null;
        }
 
-       private Recording getRecording(Long id, String ruid, String uid) {
+       private Recording getRecording(Long id, String ruid, String uid, String 
wbItemId) {
                log.debug("Recording with id {} is requested", id);
                Recording r = recDao.get(id);
                if (r == null || r.getType() == Type.FOLDER || r.isDeleted()) {
@@ -99,15 +92,8 @@ public abstract class RecordingResourceReference extends 
FileItemResourceReferen
                        return r;
                }
                Client c = cm.get(uid);
-               if (c != null && c.getRoom() != null) {
-                       Whiteboards wbs = wbm.get(c.getRoom().getId());
-                       if (wbs != null && !Strings.isEmpty(ruid) && 
ruid.equals(wbs.getUid())) {
-                               for (Entry<Long, Whiteboard> e : 
wbs.getWhiteboards().entrySet()) {
-                                       if (e.getValue().contains(r.getHash())) 
{
-                                               return r; // item IS on WB
-                                       }
-                               }
-                       }
+               if (isAtWb(c, ruid, wbItemId, r.getId())) {
+                       return r; // item IS on WB
                }
                if (r.getOwnerId() == null && r.getGroupId() == null) {
                        //public
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java
index 331337c..4b55126 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java
@@ -18,22 +18,35 @@
  */
 package org.apache.openmeetings.web.util;
 
+import static org.apache.openmeetings.db.dto.room.Whiteboard.ATTR_FILE_ID;
+
 import java.io.File;
 import java.io.IOException;
+import java.util.Map.Entry;
 
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.openmeetings.db.dto.room.Whiteboard;
+import org.apache.openmeetings.db.dto.room.Whiteboards;
+import org.apache.openmeetings.db.entity.basic.Client;
 import org.apache.openmeetings.db.entity.file.BaseFileItem;
+import org.apache.openmeetings.web.app.WhiteboardManager;
 import org.apache.wicket.request.resource.IResource;
 import org.apache.wicket.request.resource.IResource.Attributes;
 import org.apache.wicket.resource.FileSystemResource;
 import org.apache.wicket.resource.FileSystemResourceReference;
+import org.apache.wicket.spring.injection.annot.SpringBean;
+import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.github.openjson.JSONObject;
+
 public abstract class FileItemResourceReference<T extends BaseFileItem> 
extends FileSystemResourceReference {
        private static final long serialVersionUID = 1L;
        protected static final Logger log = 
LoggerFactory.getLogger(FileItemResourceReference.class);
+       @SpringBean
+       private WhiteboardManager wbm;
 
        protected FileItemResourceReference(String name) {
                super(name);
@@ -75,4 +88,19 @@ public abstract class FileItemResourceReference<T extends 
BaseFileItem> extends
        protected abstract String getFileName(T r);
        protected abstract File getFile(T r, Attributes attr);
        protected abstract T getFileItem(Attributes attr);
+
+       protected boolean isAtWb(Client c, String wbId, String wbItemId, Long 
fileId) {
+               if (c != null && c.getRoom() != null) {
+                       Whiteboards wbs = wbm.get(c.getRoomId());
+                       if (!Strings.isEmpty(wbItemId) && 
!Strings.isEmpty(wbId) && wbId.equals(wbs.getUid())) {
+                               for (Entry<Long, Whiteboard> e : 
wbs.getWhiteboards().entrySet()) {
+                                       JSONObject file = 
e.getValue().get(wbItemId);
+                                       if (file != null && 
fileId.equals(file.optLong(ATTR_FILE_ID))) {
+                                               return true; // item IS on WB
+                                       }
+                               }
+                       }
+               }
+               return false;
+       }
 }

Reply via email to