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 f3f86bf  [OPENMEETINGS-2236] non-unique room tag is added
f3f86bf is described below

commit f3f86bf69b8bbb05e51a2257d8ba0d455243c038
Author: Maxim Solodovnik <solomax...@gmail.com>
AuthorDate: Fri Jun 12 16:44:01 2020 +0700

    [OPENMEETINGS-2236] non-unique room tag is added
---
 .../org/apache/openmeetings/db/dao/room/RoomDao.java    | 13 +++++++++++++
 .../org/apache/openmeetings/db/dto/room/RoomDTO.java    | 12 ++++++++++++
 .../org/apache/openmeetings/db/entity/room/Room.java    | 13 +++++++++++++
 .../java/org/apache/openmeetings/db/util/DaoHelper.java |  2 +-
 .../apache/openmeetings/web/admin/rooms/RoomForm.java   |  7 ++++++-
 .../apache/openmeetings/web/admin/rooms/RoomsPanel.html |  4 ++++
 .../org/apache/openmeetings/web/util/OmUrlFragment.java | 17 +++++++++--------
 7 files changed, 58 insertions(+), 10 deletions(-)

diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
index f8cdf7d..6bc2d46 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
@@ -49,6 +49,7 @@ import org.apache.openmeetings.db.entity.room.Room.Type;
 import org.apache.openmeetings.db.entity.room.RoomFile;
 import org.apache.openmeetings.db.entity.room.RoomGroup;
 import org.apache.openmeetings.db.util.DaoHelper;
+import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -84,6 +85,18 @@ public class RoomDao implements 
IGroupAdminDataProviderDao<Room> {
                return r;
        }
 
+       public Room get(String tag) {
+               Room r = null;
+               if (!Strings.isEmpty(tag)) {
+                       r = single(fillLazy(em
+                                       , oem -> 
oem.createNamedQuery("getRoomByTag", Room.class).setParameter("tag", tag)
+                                       , "roomModerators", "roomGroups", 
"roomFiles"));
+               } else {
+                       log.info("[get]: No room tag given");
+               }
+               return r;
+       }
+
        public List<Room> get() {
                return fillLazy(em
                                , oem -> oem.createNamedQuery("getBackupRooms", 
Room.class)
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
index cc16318..9291f7b 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
@@ -49,6 +49,7 @@ public class RoomDTO implements Serializable {
        private static final long serialVersionUID = 1L;
        private Long id;
        private String name;
+       private String tag;
        private String comment;
        private Room.Type type;
        private Long capacity = Long.valueOf(4);
@@ -77,6 +78,7 @@ public class RoomDTO implements Serializable {
        public RoomDTO(Room r) {
                id = r.getId();
                name = r.getName();
+               tag = r.getTag();
                comment = r.getComment();
                type = r.getType();
                capacity = r.getCapacity();
@@ -103,6 +105,7 @@ public class RoomDTO implements Serializable {
                Room r = id == null ? new Room() : roomDao.get(id);
                r.setId(id);
                r.setName(name);
+               r.setTag(tag);
                r.setComment(comment);
                r.setType(type);
                r.setCapacity(capacity);
@@ -146,6 +149,14 @@ public class RoomDTO implements Serializable {
                this.name = name;
        }
 
+       public String getTag() {
+               return tag;
+       }
+
+       public void setTag(String tag) {
+               this.tag = tag;
+       }
+
        public String getComment() {
                return comment;
        }
@@ -319,6 +330,7 @@ public class RoomDTO implements Serializable {
                RoomDTO r = new RoomDTO();
                r.id = optLong(o, "id");
                r.name = o.optString("name");
+               r.tag = o.optString("tag");
                r.comment = o.optString("comment");
                r.type = optEnum(Room.Type.class, o, "type");
                if (r.type == null) {
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
index 83ffcfb..cfed2c5 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
@@ -81,6 +81,7 @@ import org.apache.openmeetings.db.entity.user.Group;
 @NamedQuery(name = "getPublicRoomsOrdered", query = "SELECT r from Room r 
WHERE r.ispublic= true AND r.deleted= false AND r.appointment = false ORDER BY 
r.name ASC")
 @NamedQuery(name = "getRoomById", query = "SELECT r FROM Room r WHERE 
r.deleted = false AND r.id = :id")
 @NamedQuery(name = "getRoomsByIds", query = "SELECT r FROM Room r WHERE 
r.deleted = false AND r.id IN :ids")
+@NamedQuery(name = "getRoomByTag", query = "SELECT r FROM Room r WHERE 
r.deleted = false AND r.tag = :tag")
 @NamedQuery(name = "getSipRoomIdsByIds", query = "SELECT r.id FROM Room r 
WHERE r.deleted = false AND r.sipEnabled = true AND r.id IN :ids")
 @NamedQuery(name = "countRooms", query = "SELECT COUNT(r) FROM Room r WHERE 
r.deleted = false")
 @NamedQuery(name = "getBackupRooms", query = "SELECT r FROM Room r ORDER BY 
r.id")
@@ -175,6 +176,10 @@ public class Room extends HistoricalEntity {
        @XmlElement(name = "name", required = false)
        private String name;
 
+       @Column(name = "tag", length = 10)
+       @XmlElement(name = "tag", required = false)
+       private String tag;
+
        @Lob
        @Column(name = "comment")
        @XmlElement(name = "comment", required = false)
@@ -346,6 +351,14 @@ public class Room extends HistoricalEntity {
                this.name = name;
        }
 
+       public String getTag() {
+               return tag;
+       }
+
+       public void setTag(String tag) {
+               this.tag = tag;
+       }
+
        @Override
        public Long getId() {
                return id;
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/DaoHelper.java 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/DaoHelper.java
index 9263055..bb61045 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/DaoHelper.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/DaoHelper.java
@@ -146,6 +146,6 @@ public class DaoHelper {
        }
 
        public static <T> T single(List<T> l) {
-               return l.size() == 1 ? l.get(0) : null;
+               return l.size() > 0 ? l.get(0) : null;
        }
 }
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
index 36c5c93..a67edcc 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
@@ -24,6 +24,7 @@ import static 
org.apache.openmeetings.web.app.Application.kickUser;
 import static org.apache.openmeetings.web.app.WebSession.getRights;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static 
org.apache.openmeetings.web.common.confirmation.ConfirmableAjaxBorder.newOkCancelDangerConfirm;
+import static 
org.apache.wicket.validation.validator.StringValidator.maximumLength;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -139,8 +140,12 @@ public class RoomForm extends AdminBaseForm<Room> {
        protected void onInitialize() {
                super.onInitialize();
                RequiredTextField<String> name = new 
RequiredTextField<>("name");
-               name.setLabel(new Model<>(getString("165")));
+               name.setLabel(new ResourceModel("165"));
                add(name);
+               TextField<String> tag = new TextField<>("tag");
+               tag.add(maximumLength(10));
+               tag.setLabel(new ResourceModel("admin.group.form.tag"));
+               add(tag);
 
                add(new DropDownChoice<>("capacity", //
                                DROPDOWN_NUMBER_OF_PARTICIPANTS, //
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
index b19e38e..83b7752 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
@@ -53,6 +53,10 @@
                                                <input type="text" 
wicket:id="name" class="col-8"/>
                                        </div>
                                        <div class="formelement">
+                                               <label wicket:for="tag" 
class="col-3 text-right"><wicket:message key="admin.group.form.tag" /></label>
+                                               <input type="text" 
wicket:id="tag" class="col-8"/>
+                                       </div>
+                                       <div class="formelement">
                                                <label wicket:for="capacity" 
class="col-3 text-right"><wicket:message key="482" /></label>
                                                <select wicket:id="capacity" 
class="custom-select col-8"/>
                                        </div>
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 86d8eb5..4ee3030 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,20 +277,21 @@ public class OmUrlFragment implements Serializable {
                                        basePanel = new WidgetsPanel(CHILD_ID);
                                }
                                break;
-                       case room:
+                       case room: {
+                               Room r = null;
                                try {
                                        Long roomId = Long.valueOf(type);
-                                       Room r = 
Application.get().getBean(RoomDao.class).get(roomId);
-                                       if (r != null) {
-                                               moveToServer(r);
-                                               basePanel = new 
RoomPanel(CHILD_ID, r);
-                                       }
+                                       r = 
Application.get().getBean(RoomDao.class).get(roomId);
                                } catch(NumberFormatException ne) {
-                                       //skip it, bad roomid passed
+                                       r = 
Application.get().getBean(RoomDao.class).get(type);
                                }
-                               if (basePanel == null) {
+                               if (r != null) {
+                                       moveToServer(r);
+                                       basePanel = new RoomPanel(CHILD_ID, r);
+                               } else {
                                        basePanel = new 
OmDashboardPanel(CHILD_ID);
                                }
+                       }
                                break;
                        case rooms:
                                basePanel = new RoomsSelectorPanel(CHILD_ID, 
type);

Reply via email to