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 5c30fca  [OPENMEETINGS-2600] some issues are addressed
5c30fca is described below

commit 5c30fcae4e09c42a51f41c9dd3bf18e51e75d497
Author: Maxim Solodovnik <solomax...@gmail.com>
AuthorDate: Wed Mar 24 22:38:04 2021 +0700

    [OPENMEETINGS-2600] some issues are addressed
---
 .../apache/openmeetings/db/util/AuthLevelUtil.java |   3 +-
 .../openmeetings/db/util/TestAuthLevelUtil.java    |   1 +
 .../openmeetings/web/app/WhiteboardManager.java    |   6 +-
 .../openmeetings/web/common/OmWebSocketPanel.java  |  24 +--
 .../openmeetings/web/common/tree/FolderPanel.java  |  20 ++-
 .../web/common/tree/OmTreeProvider.java            |  15 +-
 .../web/pages/install/InstallWizard.java           |  49 +++---
 .../apache/openmeetings/web/room/RoomPanel.java    | 187 ++++++++++++---------
 .../openmeetings/web/room/sidebar/RoomSidebar.java |  38 +++--
 .../openmeetings/web/room/wb/InterviewWbPanel.java |   4 +-
 .../apache/openmeetings/web/room/wb/WbAction.java  |  58 ++++---
 .../apache/openmeetings/web/room/wb/WbPanel.java   |  68 ++++----
 .../web/room/wb/WbWebSocketHelper.java             |   4 +-
 .../openmeetings/web/util/OmUrlFragment.java       |  33 ++--
 14 files changed, 286 insertions(+), 224 deletions(-)

diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/AuthLevelUtil.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/AuthLevelUtil.java
index 30b7536..de3c317 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/AuthLevelUtil.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/AuthLevelUtil.java
@@ -27,6 +27,7 @@ import org.apache.openmeetings.db.entity.room.RoomGroup;
 import org.apache.openmeetings.db.entity.room.RoomModerator;
 import org.apache.openmeetings.db.entity.user.GroupUser;
 import org.apache.openmeetings.db.entity.user.User;
+import org.apache.wicket.util.lang.Objects;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -53,7 +54,7 @@ public class AuthLevelUtil {
                if (//admin user get superModerator level, no-one can kick 
him/her
                        hasAdminLevel(u.getRights())
                        // user personal room
-                       || u.getId().equals(r.getOwnerId())
+                       || Objects.equal(u.getId(), r.getOwnerId())
                        // appointment owner is super moderator
                        || (r.isAppointment() && a != null && 
u.getId().equals(a.getOwner().getId())))
                {
diff --git 
a/openmeetings-db/src/test/java/org/apache/openmeetings/db/util/TestAuthLevelUtil.java
 
b/openmeetings-db/src/test/java/org/apache/openmeetings/db/util/TestAuthLevelUtil.java
index c841de5..14a9836 100644
--- 
a/openmeetings-db/src/test/java/org/apache/openmeetings/db/util/TestAuthLevelUtil.java
+++ 
b/openmeetings-db/src/test/java/org/apache/openmeetings/db/util/TestAuthLevelUtil.java
@@ -61,6 +61,7 @@ class TestAuthLevelUtil {
        @Test
        void testConference() {
                User u = new User();
+               u.setId(1L);
                Room r = new Room();
                Set<Room.Right> rights = getRoomRight(u, r, null, 0);
                assertEquals(2, rights.size(), "Result should NOT be empty");
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WhiteboardManager.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WhiteboardManager.java
index 8af5a6b..6d24e77 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WhiteboardManager.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WhiteboardManager.java
@@ -223,8 +223,8 @@ public class WhiteboardManager implements 
IWhiteboardManager {
                        consumer.accept(wb);
                }
                wb = clear(roomId, wbId);
-               sendWbAll(roomId, WbAction.clearAll, new 
JSONObject().put("wbId", wbId));
-               sendWbAll(roomId, WbAction.setSize, wb.getAddJson());
+               sendWbAll(roomId, WbAction.CLEAR_ALL, new 
JSONObject().put("wbId", wbId));
+               sendWbAll(roomId, WbAction.SET_SIZE, wb.getAddJson());
        }
 
        @Override
@@ -236,7 +236,7 @@ public class WhiteboardManager implements 
IWhiteboardManager {
                        if (consumer != null) {
                                consumer.accept(wb, arr);
                        }
-                       sendWbAll(roomId, WbAction.clearSlide, new JSONObject()
+                       sendWbAll(roomId, WbAction.CLEAR_SLIDE, new JSONObject()
                                        .put("wbId", wbId)
                                        .put(ATTR_SLIDE, slide));
                }
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmWebSocketPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmWebSocketPanel.java
index 14dedea..9edecc3 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmWebSocketPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmWebSocketPanel.java
@@ -113,17 +113,7 @@ public abstract class OmWebSocketPanel extends Panel {
                                                                
kHandler.onMessage(getWsClient(), m);
                                                                break;
                                                        case "mic":
-                                                       {
-                                                               IWsClient 
curClient = getWsClient();
-                                                               if (!(curClient 
instanceof Client)) {
-                                                                       break;
-                                                               }
-                                                               Client c = 
(Client)curClient;
-                                                               if 
(c.getRoomId() == null) {
-                                                                       break;
-                                                               }
-                                                               
WebSocketHelper.sendRoomOthers(c.getRoomId(), c.getUid(), m.put("uid", 
c.getUid()));
-                                                       }
+                                                               micMessage(m);
                                                                break;
                                                        case "ping":
                                                                
log.trace("Sending WebSocket PING");
@@ -153,6 +143,18 @@ public abstract class OmWebSocketPanel extends Panel {
                        protected void onError(WebSocketRequestHandler handler, 
ErrorMessage msg) {
                                closeHandler(msg);
                        }
+
+                       private void micMessage(final JSONObject m) {
+                               IWsClient curClient = getWsClient();
+                               if (!(curClient instanceof Client)) {
+                                       return;
+                               }
+                               Client c = (Client)curClient;
+                               if (c.getRoomId() == null) {
+                                       return;
+                               }
+                               WebSocketHelper.sendRoomOthers(c.getRoomId(), 
c.getUid(), m.put("uid", c.getUid()));
+                       }
                };
        }
 
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
index fcc0afe..ca75d1c 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
@@ -203,15 +203,7 @@ public class FolderPanel extends Panel implements 
IDraggableListener, IDroppable
                                        break;
                                case VIDEO:
                                case RECORDING:
-                               {
-                                       style.append("recording ");
-                                       if (f instanceof Recording) {
-                                               Status st = 
((Recording)f).getStatus();
-                                               if (Status.RECORDING == st || 
Status.CONVERTING == st) {
-                                                       
style.append("processing ");
-                                               }
-                                       }
-                               }
+                                       setVideoStyle(f, style);
                                        break;
                                case PRESENTATION:
                                        
style.append(CSS_CLASS_FILE).append("doc ");
@@ -228,6 +220,16 @@ public class FolderPanel extends Panel implements 
IDraggableListener, IDroppable
                return style;
        }
 
+       private void setVideoStyle(final BaseFileItem f, StringBuilder style) {
+               style.append("recording ");
+               if (f instanceof Recording) {
+                       Status st = ((Recording)f).getStatus();
+                       if (Status.RECORDING == st || Status.CONVERTING == st) {
+                               style.append("processing ");
+                       }
+               }
+       }
+
        @Override
        public boolean isStopEventEnabled() {
                return false;
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
index bf5e52c..1517e47 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
@@ -86,15 +86,12 @@ public class OmTreeProvider implements 
ITreeProvider<BaseFileItem> {
                        fRoot.add(r);
                }
                if (all && isRecordingsEnabled()) {
-                       {
-                               BaseFileItem r = 
createRoot(Application.getString("860"), RECORDINGS_MY, true);
-                               r.setOwnerId(getUserId());
-                               rRoot.add(r);
-                       }
-                       {
-                               BaseFileItem r = createRoot(lblPublic, 
RECORDINGS_PUBLIC, true);
-                               rRoot.add(r);
-                       }
+                       BaseFileItem my = 
createRoot(Application.getString("860"), RECORDINGS_MY, true);
+                       my.setOwnerId(getUserId());
+                       rRoot.add(my);
+
+                       BaseFileItem pub = createRoot(lblPublic, 
RECORDINGS_PUBLIC, true);
+                       rRoot.add(pub);
                }
                for (GroupUser gu : userDao.get(getUserId()).getGroupUsers()) {
                        Group g = gu.getGroup();
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
index fb52961..865e228 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
@@ -414,28 +414,14 @@ public class InstallWizard extends BootstrapWizard {
                        pass.setVisible(props.getDbType() != DbType.H2);
                        try {
                                switch (props.getDbType()) {
-                                       case MSSQL: {
-                                               String url = 
props.getURL().substring("jdbc:sqlserver://".length());
-                                               String[] parts = url.split(";");
-                                               String[] hp = 
parts[0].split(":");
-                                               host.setModelObject(hp[0]);
-                                               
port.setModelObject(Integer.parseInt(hp[1]));
-                                               
dbname.setModelObject(parts[1].substring(parts[1].indexOf('=') + 1));
-                                               }
+                                       case MSSQL:
+                                               dbMssql(props);
                                                break;
-                                       case ORACLE: {
-                                               String[] parts = 
props.getURL().split(":");
-                                               
host.setModelObject(parts[3].substring(1));
-                                               
port.setModelObject(Integer.parseInt(parts[4]));
-                                               dbname.setModelObject(parts[5]);
-                                               }
+                                       case ORACLE:
+                                               dbOracle(props);
                                                break;
-                                       case H2: {
-                                               host.setModelObject("");
-                                               port.setModelObject(0);
-                                               String[] parts = 
props.getURL().split(";");
-                                               
dbname.setModelObject(parts[0].substring("jdbc:h2:".length()));
-                                               }
+                                       case H2:
+                                               dbH2(props);
                                                break;
                                        default:
                                                URI uri = 
URI.create(props.getURL().substring(5));
@@ -452,6 +438,29 @@ public class InstallWizard extends BootstrapWizard {
                        }
                }
 
+               private void dbMssql(ConnectionProperties props) {
+                       String url = 
props.getURL().substring("jdbc:sqlserver://".length());
+                       String[] parts = url.split(";");
+                       String[] hp = parts[0].split(":");
+                       host.setModelObject(hp[0]);
+                       port.setModelObject(Integer.parseInt(hp[1]));
+                       
dbname.setModelObject(parts[1].substring(parts[1].indexOf('=') + 1));
+               }
+
+               private void dbOracle(ConnectionProperties props) {
+                       String[] parts = props.getURL().split(":");
+                       host.setModelObject(parts[3].substring(1));
+                       port.setModelObject(Integer.parseInt(parts[4]));
+                       dbname.setModelObject(parts[5]);
+               }
+
+               private void dbH2(ConnectionProperties props) {
+                       host.setModelObject("");
+                       port.setModelObject(0);
+                       String[] parts = props.getURL().split(";");
+                       
dbname.setModelObject(parts[0].substring("jdbc:h2:".length()));
+               }
+
                @Override
                protected void onInitialize() {
                        super.onInitialize();
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
index 2798914..98781c1 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
@@ -35,6 +35,7 @@ import java.util.Calendar;
 import java.util.List;
 import java.util.Map.Entry;
 import java.util.Set;
+import java.util.stream.Stream;
 
 import org.apache.commons.text.StringEscapeUtils;
 import org.apache.openmeetings.core.remote.KurentoHandler;
@@ -126,10 +127,23 @@ public class RoomPanel extends BasePanel {
        private static final String ACCESS_DENIED_ID = "access-denied";
        private static final String EVENT_DETAILS_ID = "event-details";
        public enum Action {
-               kick
-               , muteOthers
-               , mute
-               , toggleRight
+               KICK("kick")
+               , MUTE_OTHERS("muteOthers")
+               , MUTE("mute")
+               , TOGGLE_RIGHT("toggleRight");
+
+               private final String jsName;
+
+               private Action(String jsName) {
+                       this.jsName = jsName;
+               }
+
+               public static Action of(String jsName) {
+                       return Stream.of(Action.values())
+                                       .filter(a -> a.jsName.equals(jsName))
+                                       .findAny()
+                                       .orElse(null);
+               }
        }
        private final Room r;
        private final boolean interview;
@@ -450,50 +464,13 @@ public class RoomPanel extends BasePanel {
                                                menu.update(handler);
                                                break;
                                        case RIGHT_UPDATED:
-                                               {
-                                                       String uid = 
((TextRoomMessage)m).getText();
-                                                       Client c = cm.get(uid);
-                                                       if (c == null) {
-                                                               log.error("Not 
existing user in rightUpdated {} !!!!", uid);
-                                                               return;
-                                                       }
-                                                       boolean self = 
curClient.getUid().equals(c.getUid());
-                                                       StringBuilder sb = new 
StringBuilder("Room.updateClient(")
-                                                                       
.append(c.toJson(self).toString(new NullStringer()))
-                                                                       
.append(");")
-                                                                       
.append(sendClientsOnUpdate());
-                                                       
handler.appendJavaScript(sb);
-                                                       sidebar.update(handler);
-                                                       menu.update(handler);
-                                                       wb.update(handler);
-                                                       
updateInterviewRecordingButtons(handler);
-                                               }
+                                               onRightUpdated(curClient, 
(TextRoomMessage)m, handler);
                                                break;
                                        case ROOM_ENTER:
-                                               {
-                                                       sidebar.update(handler);
-                                                       menu.update(handler);
-                                                       String uid = 
((TextRoomMessage)m).getText();
-                                                       Client c = cm.get(uid);
-                                                       if (c == null) {
-                                                               log.error("Not 
existing user in rightUpdated {} !!!!", uid);
-                                                               return;
-                                                       }
-                                                       boolean self = 
curClient.getUid().equals(c.getUid());
-                                                       if (self || 
curClient.hasRight(Room.Right.MODERATOR) || 
!r.isHidden(RoomElement.USER_COUNT)) {
-                                                               
handler.appendJavaScript(String.format("Room.addClient([%s]);"
-                                                                               
, c.toJson(self).toString(new NullStringer())));
-                                                       }
-                                                       sidebar.addActivity(new 
Activity(m, Activity.Type.roomEnter), handler);
-                                               }
+                                               onRoomEnter(curClient, 
(TextRoomMessage)m, handler);
                                                break;
                                        case ROOM_EXIT:
-                                               {
-                                                       String uid = 
((TextRoomMessage)m).getText();
-                                                       sidebar.update(handler);
-                                                       sidebar.addActivity(new 
Activity(m, Activity.Type.roomExit), handler);
-                                                       
handler.appendJavaScript("Room.removeClient('" + uid + "'); Chat.removeTab('" + 
ID_USER_PREFIX + m.getUserId() + "');");
-                                               }
+                                               onRoomExit((TextRoomMessage)m, 
handler);
                                                break;
                                        case ROOM_CLOSED:
                                                
handler.add(room.setVisible(false));
@@ -532,45 +509,17 @@ public class RoomPanel extends BasePanel {
                                                }
                                                break;
                                        case KICK:
-                                               {
-                                                       String uid = 
((TextRoomMessage)m).getText();
-                                                       if 
(curClient.getUid().equals(uid)) {
-                                                               
handler.add(room.setVisible(false));
-                                                               
getMainPanel().getChat().toggle(handler, false);
-                                                               
clientKicked.show(handler);
-                                                               
cm.exitRoom(curClient);
-                                                       }
-                                               }
+                                               onKick(curClient, 
(TextRoomMessage)m, handler);
                                                break;
                                        case MUTE:
-                                       {
-                                               JSONObject obj = new 
JSONObject(((TextRoomMessage)m).getText());
-                                               Client c = 
cm.getBySid(obj.getString("sid"));
-                                               if (c == null) {
-                                                       log.error("Not existing 
user in mute {} !!!!", obj);
-                                                       return;
-                                               }
-                                               if 
(!curClient.getUid().equals(c.getUid())) {
-                                                       
handler.appendJavaScript(String.format("if (typeof(VideoManager) !== 
'undefined') {VideoManager.mute('%s', %s);}", obj.getString("uid"), 
obj.getBoolean("mute")));
-                                               }
-                                       }
+                                               onMute(curClient, 
(TextRoomMessage)m, handler);
                                                break;
                                        case MUTE_OTHERS:
-                                       {
-                                               String uid = 
((TextRoomMessage)m).getText();
-                                               Client c = cm.get(uid);
-                                               if (c == null) {
-                                                       // no luck
-                                                       return;
-                                               }
-                                               
handler.appendJavaScript(String.format("if (typeof(VideoManager) !== 
'undefined') {VideoManager.muteOthers('%s');}", uid));
-                                       }
+                                               
onMuteOthers((TextRoomMessage)m, handler);
                                                break;
                                        case QUICK_POLL_UPDATED:
-                                       {
                                                menu.update(handler);
                                                
handler.appendJavaScript(getQuickPollJs());
-                                       }
                                                break;
                                        case KURENTO_STATUS:
                                                menu.update(handler);
@@ -599,10 +548,8 @@ public class RoomPanel extends BasePanel {
                                                }
                                        }
                                                break;
-                                       case WB_PUT_FILE: {
-                                               JSONObject obj = new 
JSONObject(((TextRoomMessage)m).getText());
-                                               
getWb().sendFileToWb(fileDao.getAny(obj.getLong("fileId")), 
obj.getBoolean("clean"));
-                                       }
+                                       case WB_PUT_FILE:
+                                               onWbPutFile((TextRoomMessage)m);
                                                break;
                                }
                        }
@@ -610,6 +557,86 @@ public class RoomPanel extends BasePanel {
                super.onEvent(event);
        }
 
+       private void onRightUpdated(Client curClient, TextRoomMessage m, 
IPartialPageRequestHandler handler) {
+               String uid = m.getText();
+               Client c = cm.get(uid);
+               if (c == null) {
+                       log.error("Not existing user in rightUpdated {} !!!!", 
uid);
+                       return;
+               }
+               boolean self = curClient.getUid().equals(c.getUid());
+               StringBuilder sb = new StringBuilder("Room.updateClient(")
+                               .append(c.toJson(self).toString(new 
NullStringer()))
+                               .append(");")
+                               .append(sendClientsOnUpdate());
+               handler.appendJavaScript(sb);
+               sidebar.update(handler);
+               menu.update(handler);
+               wb.update(handler);
+               updateInterviewRecordingButtons(handler);
+       }
+
+       private void onRoomEnter(Client curClient, TextRoomMessage m, 
IPartialPageRequestHandler handler) {
+               sidebar.update(handler);
+               menu.update(handler);
+               String uid = m.getText();
+               Client c = cm.get(uid);
+               if (c == null) {
+                       log.error("Not existing user in rightUpdated {} !!!!", 
uid);
+                       return;
+               }
+               boolean self = curClient.getUid().equals(c.getUid());
+               if (self || curClient.hasRight(Room.Right.MODERATOR) || 
!r.isHidden(RoomElement.USER_COUNT)) {
+                       handler.appendJavaScript("Room.addClient(["
+                                       + c.toJson(self).toString(new 
NullStringer()) + "]);");
+               }
+               sidebar.addActivity(new Activity(m, Activity.Type.roomEnter), 
handler);
+       }
+
+       private void onRoomExit(TextRoomMessage m, IPartialPageRequestHandler 
handler) {
+               String uid = m.getText();
+               sidebar.update(handler);
+               sidebar.addActivity(new Activity(m, Activity.Type.roomExit), 
handler);
+               handler.appendJavaScript("Room.removeClient('" + uid + "'); 
Chat.removeTab('" + ID_USER_PREFIX + m.getUserId() + "');");
+       }
+
+       private void onKick(Client curClient, TextRoomMessage m, 
IPartialPageRequestHandler handler) {
+               String uid = m.getText();
+               if (curClient.getUid().equals(uid)) {
+                       handler.add(room.setVisible(false));
+                       getMainPanel().getChat().toggle(handler, false);
+                       clientKicked.show(handler);
+                       cm.exitRoom(curClient);
+               }
+       }
+
+       private void onMute(Client curClient, TextRoomMessage m, 
IPartialPageRequestHandler handler) {
+               JSONObject obj = new JSONObject(m.getText());
+               Client c = cm.getBySid(obj.getString("sid"));
+               if (c == null) {
+                       log.error("Not existing user in mute {} !!!!", obj);
+                       return;
+               }
+               if (!curClient.getUid().equals(c.getUid())) {
+                       handler.appendJavaScript(String.format("if 
(typeof(VideoManager) !== 'undefined') {VideoManager.mute('%s', %s);}", 
obj.getString("uid"), obj.getBoolean("mute")));
+               }
+       }
+
+       private void onMuteOthers(TextRoomMessage m, IPartialPageRequestHandler 
handler) {
+               String uid = m.getText();
+               Client c = cm.get(uid);
+               if (c == null) {
+                       // no luck
+                       return;
+               }
+               handler.appendJavaScript(String.format("if 
(typeof(VideoManager) !== 'undefined') {VideoManager.muteOthers('%s');}", uid));
+       }
+
+       private void onWbPutFile(TextRoomMessage m) {
+               JSONObject obj = new JSONObject(m.getText());
+               getWb().sendFileToWb(fileDao.getAny(obj.getLong("fileId")), 
obj.getBoolean("clean"));
+       }
+
        private String getQuickPollJs() {
                return String.format("Room.quickPoll(%s);", 
qpollManager.toJson(r.getId()));
        }
@@ -772,7 +799,7 @@ public class RoomPanel extends BasePanel {
                if (room.isVisible() && "room".equals(o.optString("area"))) {
                        final String type = o.optString("type");
                        if ("wb".equals(type)) {
-                               WbAction a = 
WbAction.valueOf(o.getString(PARAM_ACTION));
+                               WbAction a = 
WbAction.of(o.getString(PARAM_ACTION));
                                wb.processWbAction(a, o.optJSONObject("data"), 
handler);
                        } else if ("room".equals(type)) {
                                sidebar.roomAction(handler, o);
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
index a506b1a..b9cc76d 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
@@ -142,9 +142,9 @@ public class RoomSidebar extends Panel {
                                return;
                        }
                        Client self = room.getClient();
-                       Action a = Action.valueOf(o.getString(PARAM_ACTION));
+                       Action a = Action.of(o.getString(PARAM_ACTION));
                        switch (a) {
-                               case kick:
+                               case KICK:
                                        if (self.hasRight(Right.MODERATOR)) {
                                                final Client kickedClient = 
cm.get(uid);
                                                if (kickedClient == null) {
@@ -155,27 +155,15 @@ public class RoomSidebar extends Panel {
                                                }
                                        }
                                        break;
-                               case muteOthers:
+                               case MUTE_OTHERS:
                                        if 
(room.getClient().hasRight(Right.MUTE_OTHERS)) {
                                                WebSocketHelper.sendRoom(new 
TextRoomMessage(room.getRoom().getId(), self, RoomMessage.Type.MUTE_OTHERS, 
uid));
                                        }
                                        break;
-                               case mute:
-                               {
-                                       Client c = cm.get(uid);
-                                       if (c == null || 
!c.hasActivity(Client.Activity.AUDIO)) {
-                                               return;
-                                       }
-                                       if (self.hasRight(Right.MODERATOR) || 
self.getUid().equals(c.getUid())) {
-                                               WebSocketHelper.sendRoom(new 
TextRoomMessage(room.getRoom().getId(), self, RoomMessage.Type.MUTE
-                                                               , new 
JSONObject()
-                                                                               
.put("sid", self.getSid())
-                                                                               
.put(PARAM_UID, uid)
-                                                                               
.put("mute", o.getBoolean("mute")).toString()));
-                                       }
-                               }
+                               case MUTE:
+                                       muteRoomAction(uid, self, o);
                                        break;
-                               case toggleRight:
+                               case TOGGLE_RIGHT:
                                        toggleRight(handler, self, uid, o);
                                        break;
                                default:
@@ -185,6 +173,20 @@ public class RoomSidebar extends Panel {
                }
        }
 
+       private void muteRoomAction(String uid, Client self, JSONObject o) {
+               Client c = cm.get(uid);
+               if (c == null || !c.hasActivity(Client.Activity.AUDIO)) {
+                       return;
+               }
+               if (self.hasRight(Right.MODERATOR) || 
self.getUid().equals(c.getUid())) {
+                       WebSocketHelper.sendRoom(new 
TextRoomMessage(room.getRoom().getId(), self, RoomMessage.Type.MUTE
+                                       , new JSONObject()
+                                                       .put("sid", 
self.getSid())
+                                                       .put(PARAM_UID, uid)
+                                                       .put("mute", 
o.getBoolean("mute")).toString()));
+               }
+       }
+
        private void toggleRight(IPartialPageRequestHandler handler, Client 
self, String uid, JSONObject o) {
                try {
                        Right right = Right.valueOf(o.getString(PARAM_RIGHT));
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/InterviewWbPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/InterviewWbPanel.java
index bdf55fc..f820baf 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/InterviewWbPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/InterviewWbPanel.java
@@ -53,10 +53,10 @@ public class InterviewWbPanel extends AbstractWbPanel {
        public void processWbAction(WbAction a, JSONObject obj, 
IPartialPageRequestHandler handler) throws IOException {
                Client c = rp.getClient();
                switch (a) {
-                       case startRecording:
+                       case START_RECORDING:
                                streamProcessor.startRecording(c);
                                break;
-                       case stopRecording:
+                       case STOP_RECORDING:
                                streamProcessor.stopRecording(c);
                                break;
                        default:
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbAction.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbAction.java
index f3ba2dd..f0a1f29 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbAction.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbAction.java
@@ -18,25 +18,43 @@
  */
 package org.apache.openmeetings.web.room.wb;
 
+import java.util.stream.Stream;
+
 public enum WbAction {
-       create //create wb without additional calls
-       , createWb
-       , removeWb
-       , activateWb
-       , renameWb
-       , setSlide
-       , createObj
-       , modifyObj
-       , deleteObj
-       , clearAll
-       , clearSlide
-       , save
-       , load
-       , undo
-       , setSize
-       , download
-       , startRecording
-       , stopRecording
-       , videoStatus
-       , loadVideos
+       CREATE_WB("createWb")
+       , REMOVE_WB("removeWb")
+       , ACTIVATE_WB("activateWb")
+       , RENAME_WB("renameWb")
+       , SET_SLIDE("setSlide")
+       , CREATE_OBJ("createObj")
+       , MODIFY_OBJ("modifyObj")
+       , DELETE_OBJ("deleteObj")
+       , CLEAR_ALL("clearAll")
+       , CLEAR_SLIDE("clearSlide")
+       , SAVE("save")
+       , LOAD("load")
+       , UNDO("undo")
+       , SET_SIZE("setSize")
+       , DOWNLOAD("download")
+       , START_RECORDING("startRecording")
+       , STOP_RECORDING("stopRecording")
+       , VIDEO_STATUS("videoStatus")
+       , LOAD_VIDEOS("loadVideos");
+
+       private final String jsName;
+
+       private WbAction(String jsName) {
+               this.jsName = jsName;
+       }
+
+       public String jsName() {
+               return jsName;
+       }
+
+       public static WbAction of(String jsName) {
+               return Stream.of(WbAction.values())
+                               .filter(a -> a.jsName.equals(jsName))
+                               .findAny()
+                               .orElse(null);
+       }
 }
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
index 2f3bf22..7a9ac2f 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
@@ -193,8 +193,8 @@ public class WbPanel extends AbstractWbPanel {
                        return;
                }
                switch (a) {
-                       case createObj:
-                       case modifyObj:
+                       case CREATE_OBJ:
+                       case MODIFY_OBJ:
                        {
                                JSONObject o = obj.optJSONObject("obj");
                                if (o != null && 
"pointer".equals(o.getString(ATTR_OMTYPE))) {
@@ -203,7 +203,7 @@ public class WbPanel extends AbstractWbPanel {
                                }
                        }
                                break;
-                       case download:
+                       case DOWNLOAD:
                        {
                                boolean moder = 
c.hasRight(Room.Right.MODERATOR);
                                Room r = rp.getRoom();
@@ -212,7 +212,7 @@ public class WbPanel extends AbstractWbPanel {
                                }
                                return;
                        }
-                       case loadVideos:
+                       case LOAD_VIDEOS:
                        {
                                StringBuilder sb = new 
StringBuilder("WbArea.initVideos(");
                                JSONArray arr = new JSONArray();
@@ -246,56 +246,56 @@ public class WbPanel extends AbstractWbPanel {
                //presenter-right
                if (c.hasRight(Right.PRESENTER)) {
                        switch (a) {
-                               case createWb:
+                               case CREATE_WB:
                                {
                                        Whiteboard wb = wbm.add(roomId, 
c.getUser().getLanguageId());
-                                       sendWbAll(WbAction.createWb, 
wb.getAddJson());
+                                       sendWbAll(WbAction.CREATE_WB, 
wb.getAddJson());
                                }
                                        break;
-                               case removeWb:
+                               case REMOVE_WB:
                                {
                                        long id = obj.optLong("wbId", -1);
                                        if (id > -1) {
                                                long prevId = 
obj.optLong("prevWbId", -1);
                                                wbm.remove(roomId, id, prevId);
-                                               sendWbAll(WbAction.removeWb, 
obj);
+                                               sendWbAll(WbAction.REMOVE_WB, 
obj);
                                        }
                                }
                                        break;
-                               case activateWb:
+                               case ACTIVATE_WB:
                                {
                                        long wbId = obj.optLong("wbId", -1);
                                        if (wbId > -1) {
                                                wbm.activate(roomId, wbId);
-                                               sendWbAll(WbAction.activateWb, 
obj);
+                                               sendWbAll(WbAction.ACTIVATE_WB, 
obj);
                                        }
                                }
                                        break;
-                               case renameWb:
+                               case RENAME_WB:
                                {
                                        Whiteboard wb = 
wbm.get(roomId).get(obj.optLong("wbId", -1));
                                        if (wb != null) {
                                                wbm.update(roomId, 
wb.setName(obj.getString("name")));
-                                               sendWbAll(WbAction.renameWb, 
obj);
+                                               sendWbAll(WbAction.RENAME_WB, 
obj);
                                        }
                                }
                                        break;
-                               case setSlide:
+                               case SET_SLIDE:
                                {
                                        Whiteboard wb = 
wbm.get(roomId).get(obj.optLong("wbId", -1));
                                        if (wb != null) {
                                                
wb.setSlide(obj.optInt(ATTR_SLIDE, 0));
                                                wbm.update(roomId, wb);
-                                               sendWbOthers(WbAction.setSlide, 
obj);
+                                               
sendWbOthers(WbAction.SET_SLIDE, obj);
                                        }
                                }
                                        break;
-                               case clearAll:
+                               case CLEAR_ALL:
                                {
                                        wbm.clearAll(roomId, 
obj.getLong("wbId"), addUndo);
                                }
                                        break;
-                               case setSize:
+                               case SET_SIZE:
                                {
                                        Whiteboard wb = 
wbm.get(roomId).get(obj.getLong("wbId"));
                                        wb.setWidth(obj.getInt(ATTR_WIDTH));
@@ -303,7 +303,7 @@ public class WbPanel extends AbstractWbPanel {
                                        wb.setZoom(obj.getDouble(ATTR_ZOOM));
                                        
wb.setZoomMode(ZoomMode.valueOf(obj.getString("zoomMode")));
                                        wbm.update(roomId, wb);
-                                       sendWbOthers(WbAction.setSize, 
wb.getAddJson());
+                                       sendWbOthers(WbAction.SET_SIZE, 
wb.getAddJson());
                                }
                                        break;
                                default:
@@ -313,17 +313,17 @@ public class WbPanel extends AbstractWbPanel {
                //wb-right
                if (c.hasRight(Right.PRESENTER) || 
c.hasRight(Right.WHITEBOARD)) {
                        switch (a) {
-                               case createObj:
+                               case CREATE_OBJ:
                                {
                                        Whiteboard wb = 
wbm.get(roomId).get(obj.getLong("wbId"));
                                        JSONObject o = obj.getJSONObject("obj");
                                        wb.put(o.getString("uid"), o);
                                        wbm.update(roomId, wb);
                                        addUndo(wb.getId(), new 
UndoObject(UndoObject.Type.add, o));
-                                       sendWbOthers(WbAction.createObj, obj);
+                                       sendWbOthers(WbAction.CREATE_OBJ, obj);
                                }
                                        break;
-                               case modifyObj:
+                               case MODIFY_OBJ:
                                {
                                        Whiteboard wb = 
wbm.get(roomId).get(obj.getLong("wbId"));
                                        JSONArray arr = obj.getJSONArray("obj");
@@ -341,10 +341,10 @@ public class WbPanel extends AbstractWbPanel {
                                                wbm.update(roomId, wb);
                                                addUndo(wb.getId(), new 
UndoObject(UndoObject.Type.modify, undo));
                                        }
-                                       sendWbOthers(WbAction.modifyObj, obj);
+                                       sendWbOthers(WbAction.MODIFY_OBJ, obj);
                                }
                                        break;
-                               case deleteObj:
+                               case DELETE_OBJ:
                                {
                                        Whiteboard wb = 
wbm.get(roomId).get(obj.getLong("wbId"));
                                        JSONArray arr = obj.getJSONArray("obj");
@@ -360,20 +360,20 @@ public class WbPanel extends AbstractWbPanel {
                                                wbm.update(roomId, wb);
                                                addUndo(wb.getId(), new 
UndoObject(UndoObject.Type.remove, undo));
                                        }
-                                       sendWbAll(WbAction.deleteObj, obj);
+                                       sendWbAll(WbAction.DELETE_OBJ, obj);
                                }
                                        break;
-                               case clearSlide:
+                               case CLEAR_SLIDE:
                                {
                                        wbm.cleanSlide(roomId, 
obj.getLong("wbId"), obj.getInt(ATTR_SLIDE)
                                                        , (wb, arr) -> 
addUndo(wb.getId(), new UndoObject(UndoObject.Type.remove, arr)));
                                }
                                        break;
-                               case save:
+                               case SAVE:
                                        wb2save = obj.getLong("wbId");
                                        fileName.show(handler);
                                        break;
-                               case undo:
+                               case UNDO:
                                {
                                        Long wbId = obj.getLong("wbId");
                                        UndoObject uo = getUndo(wbId);
@@ -385,7 +385,7 @@ public class WbPanel extends AbstractWbPanel {
                                                                JSONObject o = 
new JSONObject(uo.getObject());
                                                                
wb.remove(o.getString("uid"));
                                                                
wbm.update(roomId, wb);
-                                                               
sendWbAll(WbAction.deleteObj, obj.put("obj", new JSONArray().put(o)));
+                                                               
sendWbAll(WbAction.DELETE_OBJ, obj.put("obj", new JSONArray().put(o)));
                                                        }
                                                                break;
                                                        case remove:
@@ -396,7 +396,7 @@ public class WbPanel extends AbstractWbPanel {
                                                                        
wb.put(o.getString("uid"), o);
                                                                }
                                                                
wbm.update(roomId, wb);
-                                                               
sendWbAll(WbAction.createObj, obj.put("obj", new JSONArray(uo.getObject())));
+                                                               
sendWbAll(WbAction.CREATE_OBJ, obj.put("obj", new JSONArray(uo.getObject())));
                                                        }
                                                                break;
                                                        case modify:
@@ -407,14 +407,14 @@ public class WbPanel extends AbstractWbPanel {
                                                                        
wb.put(o.getString("uid"), o);
                                                                }
                                                                
wbm.update(roomId, wb);
-                                                               
sendWbAll(WbAction.modifyObj, obj.put("obj", arr));
+                                                               
sendWbAll(WbAction.MODIFY_OBJ, obj.put("obj", arr));
                                                        }
                                                                break;
                                                }
                                        }
                                }
                                        break;
-                               case videoStatus:
+                               case VIDEO_STATUS:
                                {
                                        Whiteboard wb = 
wbm.get(roomId).get(obj.getLong("wbId"));
                                        String uid = obj.getString("uid");
@@ -424,7 +424,7 @@ public class WbPanel extends AbstractWbPanel {
                                                po.put(PARAM_STATUS, 
ns.put(PARAM_UPDATED, System.currentTimeMillis()));
                                                wbm.update(roomId, wb.put(uid, 
po));
                                                obj.put(ATTR_SLIDE, 
po.getInt(ATTR_SLIDE));
-                                               sendWbAll(WbAction.videoStatus, 
obj);
+                                               
sendWbAll(WbAction.VIDEO_STATUS, obj);
                                        }
                                }
                                        break;
@@ -515,8 +515,8 @@ public class WbPanel extends AbstractWbPanel {
                                                        if (updated[0]) {
                                                                
wbm.update(roomId, wb);
                                                        }
-                                                       
sendWbAll(WbAction.setSize, wb.getAddJson());
-                                                       
sendWbAll(WbAction.load, getObjWbJson(wb.getId(), arr));
+                                                       
sendWbAll(WbAction.SET_SIZE, wb.getAddJson());
+                                                       
sendWbAll(WbAction.LOAD, getObjWbJson(wb.getId(), arr));
                                                } catch (Exception e) {
                                                        log.error("Unexpected 
error while loading WB", e);
                                                }
@@ -553,7 +553,7 @@ public class WbPanel extends AbstractWbPanel {
                                        wb.put(wuid, file);
                                        updateWbSize(wb, fi);
                                        wbm.update(roomId, wb);
-                                       sendWbAll(WbAction.setSize, 
wb.getAddJson());
+                                       sendWbAll(WbAction.SET_SIZE, 
wb.getAddJson());
                                        WbWebSocketHelper.sendWbFile(roomId, 
wb.getId(), ruid, file, fi);
                                }
                                        break;
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 d3ca670..3894920 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
@@ -173,7 +173,7 @@ public class WbWebSocketHelper {
                                roomId
                                , new JSONObject().put("type", "wb")
                                , alwaysTrue()
-                               , (o, c) -> o.put("func", 
WbAction.createObj.name())
+                               , (o, c) -> o.put("func", 
WbAction.CREATE_OBJ.jsName())
                                                        .put("param", 
getObjWbJson(wbId, patchUrls(fi, c, f))));
        }
 
@@ -182,7 +182,7 @@ public class WbWebSocketHelper {
                                roomId
                                , new JSONObject().put("type", "wb")
                                , check
-                               , (o, c) -> o.put("func", meth.name())
+                               , (o, c) -> o.put("func", meth.jsName())
                                                        .put("param", obj)
                        );
        }
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/OmUrlFragment.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/OmUrlFragment.java
index 4ee3030..3e54e8b 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/OmUrlFragment.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/OmUrlFragment.java
@@ -277,21 +277,8 @@ public class OmUrlFragment implements Serializable {
                                        basePanel = new WidgetsPanel(CHILD_ID);
                                }
                                break;
-                       case room: {
-                               Room r = null;
-                               try {
-                                       Long roomId = Long.valueOf(type);
-                                       r = 
Application.get().getBean(RoomDao.class).get(roomId);
-                               } catch(NumberFormatException ne) {
-                                       r = 
Application.get().getBean(RoomDao.class).get(type);
-                               }
-                               if (r != null) {
-                                       moveToServer(r);
-                                       basePanel = new RoomPanel(CHILD_ID, r);
-                               } else {
-                                       basePanel = new 
OmDashboardPanel(CHILD_ID);
-                               }
-                       }
+                       case room:
+                               basePanel = getRoomPanel(type);
                                break;
                        case rooms:
                                basePanel = new RoomsSelectorPanel(CHILD_ID, 
type);
@@ -311,6 +298,22 @@ public class OmUrlFragment implements Serializable {
                return basePanel;
        }
 
+       private static BasePanel getRoomPanel(String type) {
+               Room r = null;
+               try {
+                       Long roomId = Long.valueOf(type);
+                       r = 
Application.get().getBean(RoomDao.class).get(roomId);
+               } catch(NumberFormatException ne) {
+                       r = Application.get().getBean(RoomDao.class).get(type);
+               }
+               if (r != null) {
+                       moveToServer(r);
+                       return new RoomPanel(CHILD_ID, r);
+               } else {
+                       return new OmDashboardPanel(CHILD_ID);
+               }
+       }
+
        public String getLink() {
                return getBaseUrl() + "#" + getArea().name() + "/" + getType();
        }

Reply via email to