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;
+ }
}