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);