You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2021/01/29 12:46:42 UTC

[openmeetings] branch master updated: [OPENMEETINGS-2564] personal recording being played on WB as expected

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 <so...@gmail.com>
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;
+	}
 }