Repository: openmeetings Updated Branches: refs/heads/OPENMEETINGS-1671-room-files f10ba389a -> 43792d16b
[OPENMEETINGS-1671] file selector is added to room admin Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/43792d16 Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/43792d16 Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/43792d16 Branch: refs/heads/OPENMEETINGS-1671-room-files Commit: 43792d16b66b5fc97829e076f853a3953432ccac Parents: f10ba38 Author: Maxim Solodovnik <solomax...@gmail.com> Authored: Thu Sep 14 13:10:22 2017 +0700 Committer: Maxim Solodovnik <solomax...@gmail.com> Committed: Thu Sep 14 13:10:22 2017 +0700 ---------------------------------------------------------------------- .../openmeetings/db/dao/file/FileItemDao.java | 21 +++++++++++ .../db/entity/file/BaseFileItem.java | 13 +++++++ .../web/admin/AdminUserChoiceProvider.java | 2 +- .../openmeetings/web/admin/rooms/RoomForm.java | 37 ++++++++++++++++++-- .../web/admin/rooms/RoomsPanel.html | 4 +-- 5 files changed, 71 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/openmeetings/blob/43792d16/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemDao.java ---------------------------------------------------------------------- diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemDao.java index 14c8ce9..fc7f1c3 100644 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemDao.java +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemDao.java @@ -23,17 +23,21 @@ import static org.apache.openmeetings.util.OmFileHelper.thumbImagePrefix; import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey; import java.io.File; +import java.util.Collection; import java.util.Date; import java.util.List; import java.util.UUID; +import java.util.stream.Collectors; import javax.persistence.EntityManager; import javax.persistence.NoResultException; import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; +import org.apache.openmeetings.db.entity.file.BaseFileItem; import org.apache.openmeetings.db.entity.file.BaseFileItem.Type; import org.apache.openmeetings.db.entity.file.FileItem; +import org.apache.openmeetings.db.entity.user.Group; import org.apache.openmeetings.util.OmFileHelper; import org.red5.logging.Red5LoggerFactory; import org.slf4j.Logger; @@ -282,6 +286,23 @@ public class FileItemDao { return update(f); } + public List<BaseFileItem> getAllRoomFiles(String search, int start, int count, Long roomId/*, Long ownerId*/, List<Group> groups) { + return em.createNamedQuery("getAllFileItemsForRoom", BaseFileItem.class) + .setParameter("folder", Type.Folder) + .setParameter("roomId", roomId) + .setParameter("groups", groups.stream().map(Group::getId).collect(Collectors.toList())) + .setParameter("name", String.format("%%%s%%", search == null ? "" : search)) + .setFirstResult(start) + .setMaxResults(count) + .getResultList(); + } + + public List<BaseFileItem> get(Collection<String> ids) { + return em.createNamedQuery("getFileItemsByIds", BaseFileItem.class) + .setParameter("ids", ids.stream().map(Long::valueOf).collect(Collectors.toList())) + .getResultList(); + } + public long getOwnSize(Long userId) { return getSize(getByOwner(userId)); } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/43792d16/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java ---------------------------------------------------------------------- diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java index c439664..763e636 100644 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java @@ -39,6 +39,8 @@ import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; import javax.persistence.Table; import javax.persistence.Transient; import javax.xml.bind.annotation.XmlType; @@ -47,6 +49,17 @@ import org.apache.openmeetings.db.entity.IDataProviderEntity; import org.simpleframework.xml.Element; @Entity +@NamedQueries({ + @NamedQuery(name = "getAllFileItemsForRoom", query = "SELECT f FROM BaseFileItem f" + + " WHERE f.deleted = false AND f.type <> :folder" + + " AND (f.roomId IS NULL OR f.roomId = :roomId)" + + " AND (f.groupId IS NULL OR f.groupId IN :groups)" + //+ " AND (f.ownerId IS NULL OR f.ownerId = :ownerId)" + + " AND f.name LIKE :name" + + " ORDER BY f.name") + , @NamedQuery(name = "getFileItemsByIds", query = "SELECT f FROM BaseFileItem f" + + " WHERE f.deleted = false AND f.id IN :ids)") +}) @Table(name = "file") @Inheritance(strategy = InheritanceType.SINGLE_TABLE) public abstract class BaseFileItem implements IDataProviderEntity { http://git-wip-us.apache.org/repos/asf/openmeetings/blob/43792d16/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminUserChoiceProvider.java ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminUserChoiceProvider.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminUserChoiceProvider.java index c29febf..6993bd5 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminUserChoiceProvider.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminUserChoiceProvider.java @@ -31,7 +31,7 @@ import org.wicketstuff.select2.Response; public abstract class AdminUserChoiceProvider extends ChoiceProvider<User> { private static final long serialVersionUID = 1L; - protected static int PAGE_SIZE = 20; + public static int PAGE_SIZE = 20; @Override public String getIdValue(User choice) { http://git-wip-us.apache.org/repos/asf/openmeetings/blob/43792d16/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java ---------------------------------------------------------------------- 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 42e5b64..9a291ae 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 @@ -19,6 +19,7 @@ package org.apache.openmeetings.web.admin.rooms; import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel; +import static org.apache.openmeetings.web.admin.AdminUserChoiceProvider.PAGE_SIZE; import static org.apache.openmeetings.web.app.Application.getBean; import static org.apache.openmeetings.web.app.WebSession.getRights; import static org.apache.openmeetings.web.app.WebSession.getSid; @@ -29,11 +30,13 @@ import java.util.Arrays; import java.util.Collection; import java.util.List; +import org.apache.openmeetings.db.dao.file.FileItemDao; import org.apache.openmeetings.db.dao.room.RoomDao; import org.apache.openmeetings.db.dao.server.ISessionManager; import org.apache.openmeetings.db.dao.user.GroupDao; import org.apache.openmeetings.db.dao.user.IUserManager; import org.apache.openmeetings.db.dao.user.UserDao; +import org.apache.openmeetings.db.entity.file.BaseFileItem; import org.apache.openmeetings.db.entity.room.Room; import org.apache.openmeetings.db.entity.room.Room.RoomElement; import org.apache.openmeetings.db.entity.room.RoomGroup; @@ -68,6 +71,7 @@ import org.apache.wicket.model.CompoundPropertyModel; import org.apache.wicket.model.IModel; import org.apache.wicket.model.Model; import org.apache.wicket.model.PropertyModel; +import org.apache.wicket.model.util.CollectionModel; import org.apache.wicket.util.string.Strings; import org.apache.wicket.util.time.Duration; import org.wicketstuff.select2.ChoiceProvider; @@ -105,6 +109,7 @@ public class RoomForm extends AdminBaseForm<Room> { } }; private IModel<User> moderator2add = Model.of((User)null); + private IModel<Collection<BaseFileItem>> files2add = new CollectionModel<>(new ArrayList<BaseFileItem>()); public RoomForm(String id, WebMarkupContainer roomList, final Room room) { super(id, new CompoundPropertyModel<>(room)); @@ -227,9 +232,6 @@ public class RoomForm extends AdminBaseForm<Room> { add(new CheckBox("filesOpened")); add(new CheckBox("autoVideoSelect")); - // Users in this Room - add(clientsContainer.add(clients.setOutputMarkupId(true)).setOutputMarkupId(true)); - // Moderators final Select2Choice<User> moderatorChoice = new Select2Choice<>("moderator2add", moderator2add, new AdminUserChoiceProvider() { private static final long serialVersionUID = 1L; @@ -304,6 +306,35 @@ public class RoomForm extends AdminBaseForm<Room> { add(new CheckBox("moderated")); + // Files + add(new Select2MultiChoice<>("files2add", files2add, new ChoiceProvider<BaseFileItem>() { + private static final long serialVersionUID = 1L; + + @Override + public String getDisplayValue(BaseFileItem f) { + return f.getName(); + } + + @Override + public String getIdValue(BaseFileItem f) { + return "" + f.getId(); + } + + @Override + public void query(String term, int page, Response<BaseFileItem> response) { + response.addAll(getBean(FileItemDao.class).getAllRoomFiles(term, page * PAGE_SIZE, PAGE_SIZE, RoomForm.this.getModelObject().getId(), orgList)); + response.setHasMore(PAGE_SIZE == response.getResults().size()); + } + + @Override + public Collection<BaseFileItem> toChoices(Collection<String> ids) { + return getBean(FileItemDao.class).get(ids); + } + }).setLabel(Model.of(getString("245")))); + + // Users in this Room + add(clientsContainer.add(clients.setOutputMarkupId(true)).setOutputMarkupId(true)); + add(new TextField<String>("confno").setEnabled(false)); add(pin); pin.setEnabled(getModelObject().isSipEnabled()); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/43792d16/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html ---------------------------------------------------------------------- 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 8631b38..c43451b 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 @@ -144,8 +144,8 @@ <fieldset class="ui-widget-content"> <legend class="ui-widget-header"><wicket:message key="245" /></legend> <div class="formelement"> - <label ><wicket:message key="245" /></label> - <div class="om-select2"><select class="input" ></select></div> + <label wicket:for="files2add"><wicket:message key="245" /></label> + <div class="om-select2"><select class="input" wicket:id="files2add"></select></div> </div> </fieldset>