You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2017/09/14 06:10:30 UTC
openmeetings git commit: [OPENMEETINGS-1671] file selector is added
to room admin
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 <so...@gmail.com>
Authored: Thu Sep 14 13:10:22 2017 +0700
Committer: Maxim Solodovnik <so...@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>