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>