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 2016/11/14 04:00:07 UTC
svn commit: r1769560 [2/2] - in /openmeetings/application:
branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/
branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/
branches/3.1.x/openmeetings-db/src...
Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java?rev=1769560&r1=1769559&r2=1769560&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java Mon Nov 14 04:00:07 2016
@@ -32,7 +32,7 @@ import javax.persistence.TypedQuery;
import org.apache.openjpa.persistence.OpenJPAEntityManager;
import org.apache.openjpa.persistence.OpenJPAPersistence;
import org.apache.openjpa.persistence.OpenJPAQuery;
-import org.apache.openmeetings.db.dao.IDataProviderDao;
+import org.apache.openmeetings.db.dao.IGroupAdminDataProviderDao;
import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
import org.apache.openmeetings.db.dao.user.UserDao;
import org.apache.openmeetings.db.entity.room.Room;
@@ -45,16 +45,16 @@ import org.springframework.beans.factory
import org.springframework.transaction.annotation.Transactional;
@Transactional
-public class RoomDao implements IDataProviderDao<Room> {
+public class RoomDao implements IGroupAdminDataProviderDao<Room> {
private static final Logger log = Red5LoggerFactory.getLogger(RoomDao.class, webAppRootKey);
public final static String[] searchFields = {"name"};
@PersistenceContext
private EntityManager em;
- @Autowired
+ @Autowired
private ConfigurationDao cfgDao;
- @Autowired
- private SipDao sipDao;
+ @Autowired
+ private SipDao sipDao;
@Autowired
private UserDao userDao;
@Autowired
@@ -64,7 +64,7 @@ public class RoomDao implements IDataPro
public Room get(long id) {
return get(Long.valueOf(id));
}
-
+
@Override
public Room get(Long id) {
Room r = null;
@@ -125,6 +125,16 @@ public class RoomDao implements IDataPro
}
@Override
+ public List<Room> get(String search, Long adminId, int start, int count, String order) {
+ TypedQuery<Room> q = em.createQuery(DaoHelper.getSearchQuery("RoomGroup rg, IN(rg.room)", "r", null, search, true, true, false
+ , "rg.group.id IN (SELECT gu1.group.id FROM GroupUser gu1 WHERE gu1.moderator = true AND gu1.user.id = :adminId)", order, searchFields), Room.class);
+ q.setParameter("adminId", adminId);
+ q.setFirstResult(start);
+ q.setMaxResults(count);
+ return q.getResultList();
+ }
+
+ @Override
public long count() {
TypedQuery<Long> q = em.createNamedQuery("countRooms", Long.class);
return q.getSingleResult();
@@ -136,6 +146,14 @@ public class RoomDao implements IDataPro
return q.getSingleResult();
}
+ @Override
+ public long count(String search, Long adminId) {
+ TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery("RoomGroup rg, IN(rg.room)", "r", null, search, true, true, true
+ , "rg.group.id IN (SELECT gu1.group.id FROM GroupUser gu1 WHERE gu1.moderator = true AND gu1.user.id = :adminId)", null, searchFields), Long.class);
+ q.setParameter("adminId", adminId);
+ return q.getSingleResult();
+ }
+
public List<Room> getPublicRooms() {
return em.createNamedQuery("getPublicRoomsOrdered", Room.class).getResultList();
}
Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupDao.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupDao.java?rev=1769560&r1=1769559&r2=1769560&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupDao.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupDao.java Mon Nov 14 04:00:07 2016
@@ -27,13 +27,13 @@ import javax.persistence.NoResultExcepti
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
-import org.apache.openmeetings.db.dao.IDataProviderDao;
+import org.apache.openmeetings.db.dao.IGroupAdminDataProviderDao;
import org.apache.openmeetings.db.entity.user.Group;
import org.apache.openmeetings.util.DaoHelper;
import org.springframework.transaction.annotation.Transactional;
@Transactional
-public class GroupDao implements IDataProviderDao<Group> {
+public class GroupDao implements IGroupAdminDataProviderDao<Group> {
public final static String[] searchFields = {"name"};
@PersistenceContext
private EntityManager em;
@@ -71,12 +71,22 @@ public class GroupDao implements IDataPr
@Override
public List<Group> get(String search, int start, int count, String sort) {
- TypedQuery<Group> q = em.createQuery(DaoHelper.getSearchQuery("Group", "o", search, true, false, sort, searchFields), Group.class);
+ TypedQuery<Group> q = em.createQuery(DaoHelper.getSearchQuery("Group", "g", search, true, false, sort, searchFields), Group.class);
q.setFirstResult(start);
q.setMaxResults(count);
return q.getResultList();
}
-
+
+ @Override
+ public List<Group> get(String search, Long adminId, int start, int count, String order) {
+ TypedQuery<Group> q = em.createQuery(DaoHelper.getSearchQuery("GroupUser gu, IN(gu.group)", "g", null, search, true, true, false
+ , "gu.user.id = :adminId AND gu.moderator = true", order, searchFields), Group.class);
+ q.setParameter("adminId", adminId);
+ q.setFirstResult(start);
+ q.setMaxResults(count);
+ return q.getResultList();
+ }
+
@Override
public long count() {
TypedQuery<Long> q = em.createNamedQuery("countGroups", Long.class);
@@ -88,7 +98,15 @@ public class GroupDao implements IDataPr
TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery("Group", "o", search, true, true, null, searchFields), Long.class);
return q.getSingleResult();
}
-
+
+ @Override
+ public long count(String search, Long adminId) {
+ TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery("GroupUser gu, IN(gu.group)", "g", null, search, true, true, true
+ , "gu.user.id = :adminId AND gu.moderator = true", null, searchFields), Long.class);
+ q.setParameter("adminId", adminId);
+ return q.getSingleResult();
+ }
+
public List<Group> get(Collection<Long> ids) {
return em.createNamedQuery("getGroupsByIds", Group.class).setParameter("ids", ids).getResultList();
}
Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java?rev=1769560&r1=1769559&r2=1769560&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java Mon Nov 14 04:00:07 2016
@@ -45,7 +45,7 @@ import org.apache.commons.lang3.StringUt
import org.apache.openjpa.persistence.OpenJPAEntityManager;
import org.apache.openjpa.persistence.OpenJPAPersistence;
import org.apache.openjpa.persistence.OpenJPAQuery;
-import org.apache.openmeetings.db.dao.IDataProviderDao;
+import org.apache.openmeetings.db.dao.IGroupAdminDataProviderDao;
import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
import org.apache.openmeetings.db.entity.user.Address;
import org.apache.openmeetings.db.entity.user.GroupUser;
@@ -72,7 +72,7 @@ import org.springframework.transaction.a
*
*/
@Transactional
-public class UserDao implements IDataProviderDao<User> {
+public class UserDao implements IGroupAdminDataProviderDao<User> {
private static final Logger log = Red5LoggerFactory.getLogger(UserDao.class, webAppRootKey);
public final static String[] searchFields = {"lastname", "firstname", "login", "address.email", "address.town"};
@@ -164,7 +164,17 @@ public class UserDao implements IDataPro
setAdditionalParams(q, params);
return q.getResultList();
}
-
+
+ @Override
+ public List<User> get(String search, Long adminId, int start, int count, String order) {
+ TypedQuery<User> q = em.createQuery(DaoHelper.getSearchQuery("GroupUser gu, IN(gu.user)", "u", null, search, true, true, false
+ , "gu.group.id IN (SELECT gu1.group.id FROM GroupUser gu1 WHERE gu1.moderator = true AND gu1.user.id = :adminId)", order, searchFields), User.class);
+ q.setParameter("adminId", adminId);
+ q.setFirstResult(start);
+ q.setMaxResults(count);
+ return q.getResultList();
+ }
+
@Override
public long count() {
// get all users
@@ -176,11 +186,11 @@ public class UserDao implements IDataPro
public long count(String search) {
return count(search, false, Long.valueOf(-1));
}
-
- public long count(String search, Long currentUserId) {
+
+ public long countUsers(String search, Long currentUserId) {
return count(search, false, currentUserId);
}
-
+
public long count(String search, boolean filterContacts, Long currentUserId) {
Map<String, Object> params = new HashMap<String, Object>();
TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery("User", "u", getAdditionalJoin(filterContacts), search, true, true, true
@@ -188,7 +198,15 @@ public class UserDao implements IDataPro
setAdditionalParams(q, params);
return q.getSingleResult();
}
-
+
+ @Override
+ public long count(String search, Long adminId) {
+ TypedQuery<Long> q = em.createQuery(DaoHelper.getSearchQuery("GroupUser gu, IN(gu.user)", "u", null, search, true, true, true
+ , "gu.group.id IN (SELECT gu1.group.id FROM GroupUser gu1 WHERE gu1.moderator = true AND gu1.user.id = :adminId)", null, searchFields), Long.class);
+ q.setParameter("adminId", adminId);
+ return q.getSingleResult();
+ }
+
//This is AdminDao method
public List<User> get(String search, boolean excludeContacts, int first, int count) {
Map<String, Object> params = new HashMap<String, Object>();
Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Group.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Group.java?rev=1769560&r1=1769559&r2=1769560&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Group.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Group.java Mon Nov 14 04:00:07 2016
@@ -35,12 +35,12 @@ import org.simpleframework.xml.Root;
@Entity
@NamedQueries({
- @NamedQuery(name="getGroupById", query="SELECT c FROM Group AS c WHERE c.id = :id AND c.deleted = false")
- , @NamedQuery(name="getGroupByName", query="SELECT o FROM Group AS o WHERE o.name = :name AND o.deleted = false")
- , @NamedQuery(name="getAnyGroupById", query="SELECT c FROM Group AS c WHERE c.id = :groupId")
- , @NamedQuery(name="getGroupsByIds", query="SELECT c FROM Group AS c WHERE c.id IN :ids")
- , @NamedQuery(name="getNondeletedGroups", query="SELECT o FROM Group o WHERE o.deleted = false ORDER BY o.id")
- , @NamedQuery(name="countGroups", query="SELECT COUNT(c) FROM Group AS c WHERE c.deleted = false")
+ @NamedQuery(name="getGroupById", query="SELECT g FROM Group AS g WHERE g.id = :id AND g.deleted = false")
+ , @NamedQuery(name="getGroupByName", query="SELECT g FROM Group AS g WHERE g.name = :name AND g.deleted = false")
+ , @NamedQuery(name="getAnyGroupById", query="SELECT g FROM Group AS g WHERE g.id = :groupId")
+ , @NamedQuery(name="getGroupsByIds", query="SELECT g FROM Group AS g WHERE g.id IN :ids")
+ , @NamedQuery(name="getNondeletedGroups", query="SELECT g FROM Group g WHERE g.deleted = false ORDER BY g.id")
+ , @NamedQuery(name="countGroups", query="SELECT COUNT(g) FROM Group AS g WHERE g.deleted = false")
})
@Table(name = "om_group")
@Root(name = "organisation")
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java?rev=1769560&r1=1769559&r2=1769560&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java Mon Nov 14 04:00:07 2016
@@ -18,17 +18,7 @@
*/
package org.apache.openmeetings.web.admin.groups;
-import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
-import static org.apache.openmeetings.web.app.WebSession.getRights;
-import static org.apache.openmeetings.web.app.WebSession.getUserId;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import static org.apache.openmeetings.web.app.Application.getBean;
-
import org.apache.openmeetings.db.dao.user.GroupDao;
-import org.apache.openmeetings.db.dao.user.UserDao;
import org.apache.openmeetings.db.entity.user.Group;
import org.apache.openmeetings.db.entity.user.GroupUser;
import org.apache.openmeetings.web.admin.AdminPanel;
@@ -37,7 +27,7 @@ import org.apache.openmeetings.web.commo
import org.apache.openmeetings.web.common.PagedEntityListPanel;
import org.apache.openmeetings.web.data.DataViewContainer;
import org.apache.openmeetings.web.data.OmOrderByBorder;
-import org.apache.openmeetings.web.data.SearchableDataProvider;
+import org.apache.openmeetings.web.data.SearchableGroupAdminDataProvider;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -69,22 +59,13 @@ public class GroupsPanel extends AdminPa
public GroupsPanel(String id) {
super(id);
final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
- final boolean isGroupAdmin = hasGroupAdminLevel(getRights());
- final Set<Long> groupIds = new HashSet<>();
- if (isGroupAdmin) {
- for (GroupUser gu : getBean(UserDao.class).get(getUserId()).getGroupUsers()) {
- if (gu.isModerator()) {
- groupIds.add(gu.getGroup().getId());
- }
- }
- }
//Adding the Group Form
form = new GroupForm("form", listContainer, new Group());
add(form);
//List view
- SearchableDataView<Group> dataView = new SearchableDataView<Group>("groupList", new SearchableDataProvider<Group>(GroupDao.class)) {
+ SearchableDataView<Group> dataView = new SearchableDataView<Group>("groupList", new SearchableGroupAdminDataProvider<Group>(GroupDao.class)) {
private static final long serialVersionUID = 1L;
@Override
@@ -92,23 +73,19 @@ public class GroupsPanel extends AdminPa
final Group g = item.getModelObject();
item.add(new Label("id"));
item.add(new Label("name"));
- if (!isGroupAdmin || (isGroupAdmin && groupIds.contains(g.getId()))) {
- item.add(new AjaxEventBehavior("click") {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onEvent(AjaxRequestTarget target) {
- form.hideNewRecord();
- form.setModelObject(g);
- form.updateView(target);
- target.add(listContainer);
- target.appendJavaScript("groupsInit();");
- }
- });
- item.add(AttributeModifier.append("class", getRowClass(g.getId(), form.getModelObject().getId())));
- } else {
- item.add(AttributeModifier.append("class", BASE_ROW_CLASS));
- }
+ item.add(new AjaxEventBehavior("click") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+ form.hideNewRecord();
+ form.setModelObject(g);
+ form.updateView(target);
+ target.add(listContainer);
+ target.appendJavaScript("groupsInit();");
+ }
+ });
+ item.add(AttributeModifier.append("class", getRowClass(g.getId(), form.getModelObject().getId())));
}
};
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java?rev=1769560&r1=1769559&r2=1769560&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java Mon Nov 14 04:00:07 2016
@@ -18,7 +18,9 @@
*/
package org.apache.openmeetings.web.admin.rooms;
+import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
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;
import static org.apache.openmeetings.web.app.WebSession.getUserId;
@@ -77,17 +79,42 @@ public class RoomForm extends AdminBaseF
private final static List<Long> DROPDOWN_NUMBER_OF_PARTICIPANTS = Arrays.asList(2L, 4L, 6L, 8L, 10L, 12L, 14L, 16L, 20L, 25L, 32L, 50L,
100L, 150L, 200L, 500L, 1000L);
private final WebMarkupContainer roomList;
- private final TextField<String> pin;
+ private final TextField<String> pin = new TextField<>("pin");
private final WebMarkupContainer moderatorContainer = new WebMarkupContainer("moderatorContainer");
private final WebMarkupContainer clientsContainer = new WebMarkupContainer("clientsContainer");
- private final ListView<Client> clients;
- private List<Client> clientsInRoom = null;
+ private final ListView<Client> clients = new ListView<Client>("clients", new ArrayList<>()) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void populateItem(final ListItem<Client> item) {
+ Client client = item.getModelObject();
+ item.add(new Label("clientId", "" + client.getId()))
+ .add(new Label("clientLogin", "" + client.getUsername()))
+ .add(new ConfirmableAjaxBorder("clientDelete", getString("80"), getString("833")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+ Client c = item.getModelObject();
+ getBean(IUserService.class).kickUserByStreamId(getSid(), c.getStreamid()
+ , c.getServer() == null ? 0 : c.getServer().getId());
+
+ updateClients(target);
+ }
+ });
+ }
+ };
private IModel<User> moderator2add = Model.of((User)null);
public RoomForm(String id, WebMarkupContainer roomList, final Room room) {
super(id, new CompoundPropertyModel<Room>(room));
this.roomList = roomList;
setOutputMarkupId(true);
+ }
+
+ @Override
+ protected void onInitialize() {
+ super.onInitialize();
RequiredTextField<String> name = new RequiredTextField<String>("name");
name.setLabel(new Model<String>(Application.getString(193)));
add(name);
@@ -110,10 +137,13 @@ public class RoomForm extends AdminBaseF
add(new TextArea<String>("comment"));
+ boolean isGroupAdmin = hasGroupAdminLevel(getRights());
add(new CheckBox("appointment").setEnabled(false));
- add(new CheckBox("ispublic"));
+ add(new CheckBox("ispublic").setEnabled(!isGroupAdmin));
- List<Group> orgList = Application.getBean(GroupDao.class).get(0, Integer.MAX_VALUE);
+ List<Group> orgList = isGroupAdmin
+ ? getBean(GroupDao.class).get(null, getUserId(), 0, Integer.MAX_VALUE, null)
+ : getBean(GroupDao.class).get(0, Integer.MAX_VALUE);
final List<RoomGroup> orgRooms = new ArrayList<RoomGroup>(orgList.size());
for (Group org : orgList) {
orgRooms.add(new RoomGroup(org, getModelObject()));
@@ -154,7 +184,7 @@ public class RoomForm extends AdminBaseF
}
return list;
}
- }));
+ }).setLabel(Model.of(getString("828"))).setRequired(isGroupAdmin));
add(new CheckBox("isDemoRoom"));
TextField<Integer> demoTime = new TextField<Integer>("demoTime");
@@ -204,28 +234,6 @@ public class RoomForm extends AdminBaseF
add(new CheckBox("autoVideoSelect"));
// Users in this Room
- clients = new ListView<Client>("clients", clientsInRoom) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void populateItem(final ListItem<Client> item) {
- Client client = item.getModelObject();
- item.add(new Label("clientId", "" + client.getId()))
- .add(new Label("clientLogin", "" + client.getUsername()))
- .add(new ConfirmableAjaxBorder("clientDelete", getString("80"), getString("833")) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
- Client c = item.getModelObject();
- getBean(IUserService.class).kickUserByStreamId(getSid(), c.getStreamid()
- , c.getServer() == null ? 0 : c.getServer().getId());
-
- updateClients(target);
- }
- });
- }
- };
add(clientsContainer.add(clients.setOutputMarkupId(true)).setOutputMarkupId(true));
// Moderators
@@ -302,8 +310,8 @@ public class RoomForm extends AdminBaseF
add(new CheckBox("moderated"));
add(new TextField<String>("confno").setEnabled(false));
- add(pin = new TextField<>("pin"));
- pin.setEnabled(room.isSipEnabled());
+ add(pin);
+ pin.setEnabled(getModelObject().isSipEnabled());
add(new TextField<String>("ownerId").setEnabled(false));
add(new AjaxCheckBox("sipEnabled") {
private static final long serialVersionUID = 1L;
@@ -321,7 +329,7 @@ public class RoomForm extends AdminBaseF
void updateClients(AjaxRequestTarget target) {
long roomId = (getModelObject().getId() != null ? getModelObject().getId() : 0);
- final List<Client> clientsInRoom = Application.getBean(ISessionManager.class).getClientListByRoom(roomId);
+ final List<Client> clientsInRoom = getBean(ISessionManager.class).getClientListByRoom(roomId);
clients.setDefaultModelObject(clientsInRoom);
target.add(clientsContainer);
}
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java?rev=1769560&r1=1769559&r2=1769560&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java Mon Nov 14 04:00:07 2016
@@ -28,7 +28,7 @@ import org.apache.openmeetings.web.commo
import org.apache.openmeetings.web.common.PagedEntityListPanel;
import org.apache.openmeetings.web.data.DataViewContainer;
import org.apache.openmeetings.web.data.OmOrderByBorder;
-import org.apache.openmeetings.web.data.SearchableDataProvider;
+import org.apache.openmeetings.web.data.SearchableGroupAdminDataProvider;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -57,7 +57,7 @@ public class RoomsPanel extends AdminPan
public RoomsPanel(String id) {
super(id);
- SearchableDataView<Room> dataView = new SearchableDataView<Room>("roomList", new SearchableDataProvider<Room>(RoomDao.class)) {
+ SearchableDataView<Room> dataView = new SearchableDataView<Room>("roomList", new SearchableGroupAdminDataProvider<Room>(RoomDao.class)) {
private static final long serialVersionUID = 1L;
@Override
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java?rev=1769560&r1=1769559&r2=1769560&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java Mon Nov 14 04:00:07 2016
@@ -18,10 +18,12 @@
*/
package org.apache.openmeetings.web.admin.users;
+import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
import static org.apache.openmeetings.db.util.UserHelper.getMinLoginLength;
import static org.apache.openmeetings.util.OpenmeetingsVariables.WEB_DATE_PATTERN;
import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
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.getUserId;
import static org.apache.wicket.datetime.markup.html.basic.DateLabel.forDatePattern;
import static org.apache.wicket.validation.validator.StringValidator.minimumLength;
@@ -202,10 +204,14 @@ public class UserForm extends AdminBaseF
@Override
public void query(String term, int page, Response<Right> response) {
+ boolean isGroupAdmin = hasGroupAdminLevel(getRights());
for (Right r : Right.values()) {
if (Right.GroupAdmin == r) {
continue;
}
+ if (isGroupAdmin && (Right.Admin == r || Right.Soap == r)) {
+ continue;
+ }
if (Strings.isEmpty(term) || r.name().contains(term)) {
response.add(r);
}
@@ -259,7 +265,7 @@ public class UserForm extends AdminBaseF
target.add(domain);
}
}
-
+
public void update(AjaxRequestTarget target) {
updateDomain(target);
if (target != null) {
@@ -267,12 +273,12 @@ public class UserForm extends AdminBaseF
target.appendJavaScript("omUserPanelInit();");
}
}
-
+
@Override
protected void onValidate() {
User u = getModelObject();
if(!getBean(UserDao.class).checkLogin(login.getConvertedInput(), u.getType(), u.getDomainId(), u.getId())) {
- error(Application.getString(105));
+ error(getString("105"));
}
}
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java?rev=1769560&r1=1769559&r2=1769560&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java Mon Nov 14 04:00:07 2016
@@ -30,7 +30,7 @@ import org.apache.openmeetings.web.commo
import org.apache.openmeetings.web.common.PagedEntityListPanel;
import org.apache.openmeetings.web.data.DataViewContainer;
import org.apache.openmeetings.web.data.OmOrderByBorder;
-import org.apache.openmeetings.web.data.SearchableDataProvider;
+import org.apache.openmeetings.web.data.SearchableGroupAdminDataProvider;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -69,7 +69,7 @@ public class UsersPanel extends AdminPan
public UsersPanel(String id) {
super(id);
- final SearchableDataView<User> dataView = new SearchableDataView<User>("userList", new SearchableDataProvider<User>(UserDao.class)) {
+ final SearchableDataView<User> dataView = new SearchableDataView<User>("userList", new SearchableGroupAdminDataProvider<User>(UserDao.class)) {
private static final long serialVersionUID = 1L;
@Override
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java?rev=1769560&r1=1769559&r2=1769560&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.java Mon Nov 14 04:00:07 2016
@@ -18,9 +18,12 @@
*/
package org.apache.openmeetings.web.common;
+import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
import static org.apache.openmeetings.db.util.UserHelper.getMinPasswdLength;
import static org.apache.openmeetings.web.app.Application.getBean;
import static org.apache.openmeetings.web.app.WebSession.AVAILABLE_TIMEZONES;
+import static org.apache.openmeetings.web.app.WebSession.getRights;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
import static org.apache.wicket.validation.validator.StringValidator.minimumLength;
import java.util.ArrayList;
@@ -71,9 +74,11 @@ public class GeneralUserForm extends For
private final PasswordTextField passwordField;
private final RequiredTextField<String> email;
private final List<GroupUser> grpUsers = new ArrayList<>();
+ private final boolean isAdminForm;
public GeneralUserForm(String id, IModel<User> model, boolean isAdminForm) {
super(id, model);
+ this.isAdminForm = isAdminForm;
//TODO should throw exception if non admin User edit somebody else (or make all fields read-only)
add(passwordField = new PasswordTextField("password", new Model<String>()));
@@ -123,7 +128,11 @@ public class GeneralUserForm extends For
add(new TextField<String>("address.town"));
add(new CountryDropDown("address.country"));
add(new TextArea<String>("address.comment"));
+ }
+ @Override
+ protected void onInitialize() {
+ super.onInitialize();
add(new Select2MultiChoice<GroupUser>("groupUsers", null, new ChoiceProvider<GroupUser>() {
private static final long serialVersionUID = 1L;
@@ -162,14 +171,16 @@ public class GeneralUserForm extends For
}
return list;
}
- }).setEnabled(isAdminForm));
+ }).setLabel(Model.of(getString("161"))).setRequired(isAdminForm && hasGroupAdminLevel(getRights())).setEnabled(isAdminForm));
}
public void updateModelObject(User u, boolean isAdminForm) {
grpUsers.clear();
grpUsers.addAll(u.getGroupUsers());
if (isAdminForm) {
- List<Group> grpList = getBean(GroupDao.class).get(0, Integer.MAX_VALUE);
+ List<Group> grpList = hasGroupAdminLevel(getRights())
+ ? getBean(GroupDao.class).get(null, getUserId(), 0, Integer.MAX_VALUE, null)
+ : getBean(GroupDao.class).get(0, Integer.MAX_VALUE);
for (Group g : grpList) {
GroupUser gu = new GroupUser(g, u);
int idx = grpUsers.indexOf(gu);
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/data/SearchableDataProvider.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/data/SearchableDataProvider.java?rev=1769560&r1=1769559&r2=1769560&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/data/SearchableDataProvider.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/data/SearchableDataProvider.java Mon Nov 14 04:00:07 2016
@@ -43,7 +43,7 @@ public class SearchableDataProvider<T ex
public SearchableDataProvider(Class<? extends IDataProviderDao<T>> c) {
this.clazz = c;
}
-
+
@Override
public void detach() {
// does nothing
@@ -52,7 +52,7 @@ public class SearchableDataProvider<T ex
protected IDataProviderDao<T> getDao() {
return getBean(clazz);
}
-
+
protected String getSortStr() {
String result = null;
if (getSort() != null) {
@@ -60,7 +60,7 @@ public class SearchableDataProvider<T ex
}
return result;
}
-
+
@Override
public Iterator<? extends T> iterator(long first, long count) {
return (search == null && getSort() == null
Added: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/data/SearchableGroupAdminDataProvider.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/data/SearchableGroupAdminDataProvider.java?rev=1769560&view=auto
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/data/SearchableGroupAdminDataProvider.java (added)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/data/SearchableGroupAdminDataProvider.java Mon Nov 14 04:00:07 2016
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") + you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.data;
+
+import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
+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.getUserId;
+
+import java.util.Iterator;
+
+import org.apache.openmeetings.db.dao.IGroupAdminDataProviderDao;
+import org.apache.openmeetings.db.entity.IDataProviderEntity;
+
+public class SearchableGroupAdminDataProvider<T extends IDataProviderEntity> extends SearchableDataProvider<T> {
+ private static final long serialVersionUID = 1L;
+ protected Class<? extends IGroupAdminDataProviderDao<T>> clazz;
+
+ public SearchableGroupAdminDataProvider(Class<? extends IGroupAdminDataProviderDao<T>> c) {
+ super(c);
+ this.clazz = c;
+ }
+
+ @Override
+ protected IGroupAdminDataProviderDao<T> getDao() {
+ return getBean(clazz);
+ }
+
+ @Override
+ public Iterator<? extends T> iterator(long first, long count) {
+ return (hasGroupAdminLevel(getRights())
+ ? getDao().get(search, getUserId(), (int)first, (int)count, getSortStr())
+ : getDao().get(search, (int)first, (int)count, getSortStr())).iterator();
+ }
+
+ @Override
+ public long size() {
+ return (hasGroupAdminLevel(getRights())
+ ? getDao().count(search, getUserId())
+ : getDao().count(search));
+ }
+}
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserChoiceProvider.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserChoiceProvider.java?rev=1769560&r1=1769559&r2=1769560&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserChoiceProvider.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserChoiceProvider.java Mon Nov 14 04:00:07 2016
@@ -103,7 +103,7 @@ public class UserChoiceProvider extends
UserDao dao = getBean(UserDao.class);
response.addAll(dao.get(term, page * PAGE_SIZE, PAGE_SIZE, null, true, getUserId()));
- response.setHasMore(page < dao.count(term, getUserId()) / PAGE_SIZE);
+ response.setHasMore(page < dao.countUsers(term, getUserId()) / PAGE_SIZE);
}
@Override