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/12/24 15:58:32 UTC

svn commit: r1775980 - in /openmeetings/application: branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/ branches/3.2.x/openmeetings-web/...

Author: solomax
Date: Sat Dec 24 15:58:32 2016
New Revision: 1775980

URL: http://svn.apache.org/viewvc?rev=1775980&view=rev
Log:
no jira: GroupChoiceProvider is extracted to be separate class

Added:
    openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GroupChoiceProvider.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GroupChoiceProvider.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GroupChoiceProvider.java
Modified:
    openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java

Added: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GroupChoiceProvider.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GroupChoiceProvider.java?rev=1775980&view=auto
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GroupChoiceProvider.java (added)
+++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GroupChoiceProvider.java Sat Dec 24 15:58:32 2016
@@ -0,0 +1,79 @@
+/*
+ * 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.common;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+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.db.entity.user.User;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.util.string.Strings;
+import org.wicketstuff.select2.ChoiceProvider;
+import org.wicketstuff.select2.Response;
+
+public class GroupChoiceProvider extends ChoiceProvider<Group> {
+	private static final long serialVersionUID = 1L;
+
+	@Override
+	public void query(String term, int page, Response<Group> response) {
+		if (WebSession.getRights().contains(User.Right.Admin)) {
+			List<Group> groups = getBean(GroupDao.class).get(0, Integer.MAX_VALUE);
+			for (Group g : groups) {
+				if (Strings.isEmpty(term) || g.getName().toLowerCase().contains(term.toLowerCase())) {
+					response.add(g);
+				}
+			}
+		} else {
+			User u = getBean(UserDao.class).get(getUserId());
+			for (GroupUser ou : u.getGroupUsers()) {
+				if (Strings.isEmpty(term) || ou.getGroup().getName().toLowerCase().contains(term.toLowerCase())) {
+					response.add(ou.getGroup());
+				}
+			}
+		}
+	}
+
+	@Override
+	public Collection<Group> toChoices(Collection<String> ids) {
+		Collection<Group> c = new ArrayList<>();
+		for (String id : ids) {
+			c.add(getBean(GroupDao.class).get(Long.valueOf(id)));
+		}
+		return c;
+	}
+
+	@Override
+	public String getDisplayValue(Group choice) {
+		return choice.getName();
+	}
+
+	@Override
+	public String getIdValue(Group choice) {
+		Long id = choice.getId();
+		return id == null ? null : "" + id;
+	}
+}

Modified: openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java?rev=1775980&r1=1775979&r2=1775980&view=diff
==============================================================================
--- openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java (original)
+++ openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java Sat Dec 24 15:58:32 2016
@@ -21,25 +21,20 @@ package org.apache.openmeetings.web.room
 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 java.util.ArrayList;
 import java.util.Collection;
-import java.util.List;
 
 import org.apache.openmeetings.db.dao.room.RoomDao;
-import org.apache.openmeetings.db.dao.user.GroupDao;
 import org.apache.openmeetings.db.dao.user.GroupUserDao;
-import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.room.Invitation;
 import org.apache.openmeetings.db.entity.room.Invitation.MessageType;
 import org.apache.openmeetings.db.entity.user.Group;
 import org.apache.openmeetings.db.entity.user.GroupUser;
-import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.util.AuthLevelUtil;
 import org.apache.openmeetings.service.room.InvitationManager;
 import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.common.GroupChoiceProvider;
 import org.apache.openmeetings.web.common.InvitationForm;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior;
@@ -53,8 +48,6 @@ import org.apache.wicket.model.util.Coll
 import org.apache.wicket.util.string.Strings;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
-import org.wicketstuff.select2.ChoiceProvider;
-import org.wicketstuff.select2.Response;
 import org.wicketstuff.select2.Select2MultiChoice;
 
 import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
@@ -67,48 +60,7 @@ public class RoomInvitationForm extends
 	private final WebMarkupContainer groupContainer = new WebMarkupContainer("groupContainer");
 	final Select2MultiChoice<Group> groups = new Select2MultiChoice<Group>("groups"
 			, new CollectionModel<Group>(new ArrayList<Group>())
-			, new ChoiceProvider<Group>() {
-				private static final long serialVersionUID = 1L;
-
-				@Override
-				public void query(String term, int page, Response<Group> response) {
-					if (WebSession.getRights().contains(User.Right.Admin)) {
-						List<Group> groups = getBean(GroupDao.class).get(0, Integer.MAX_VALUE);
-						for (Group g : groups) {
-							if (Strings.isEmpty(term) || g.getName().toLowerCase().contains(term.toLowerCase())) {
-								response.add(g);
-							}
-						}
-					} else {
-						User u = getBean(UserDao.class).get(getUserId());
-						for (GroupUser ou : u.getGroupUsers()) {
-							if (Strings.isEmpty(term) || ou.getGroup().getName().toLowerCase().contains(term.toLowerCase())) {
-								response.add(ou.getGroup());
-							}
-						}
-					}
-				}
-
-				@Override
-				public Collection<Group> toChoices(Collection<String> ids) {
-					Collection<Group> c = new ArrayList<>();
-					for (String id : ids) {
-						c.add(getBean(GroupDao.class).get(Long.valueOf(id)));
-					}
-					return c;
-				}
-
-				@Override
-				public String getDisplayValue(Group choice) {
-					return choice.getName();
-				}
-
-				@Override
-				public String getIdValue(Group choice) {
-					Long id = choice.getId();
-					return id == null ? null : "" + id;
-				}
-			});
+			, new GroupChoiceProvider());
 	final WebMarkupContainer sipContainer = new WebMarkupContainer("sip-container");
 
 	enum InviteeType {

Added: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GroupChoiceProvider.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GroupChoiceProvider.java?rev=1775980&view=auto
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GroupChoiceProvider.java (added)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GroupChoiceProvider.java Sat Dec 24 15:58:32 2016
@@ -0,0 +1,79 @@
+/*
+ * 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.common;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+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.db.entity.user.User;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.util.string.Strings;
+import org.wicketstuff.select2.ChoiceProvider;
+import org.wicketstuff.select2.Response;
+
+public class GroupChoiceProvider extends ChoiceProvider<Group> {
+	private static final long serialVersionUID = 1L;
+
+	@Override
+	public void query(String term, int page, Response<Group> response) {
+		if (WebSession.getRights().contains(User.Right.Admin)) {
+			List<Group> groups = getBean(GroupDao.class).get(0, Integer.MAX_VALUE);
+			for (Group g : groups) {
+				if (Strings.isEmpty(term) || g.getName().toLowerCase().contains(term.toLowerCase())) {
+					response.add(g);
+				}
+			}
+		} else {
+			User u = getBean(UserDao.class).get(getUserId());
+			for (GroupUser ou : u.getGroupUsers()) {
+				if (Strings.isEmpty(term) || ou.getGroup().getName().toLowerCase().contains(term.toLowerCase())) {
+					response.add(ou.getGroup());
+				}
+			}
+		}
+	}
+
+	@Override
+	public Collection<Group> toChoices(Collection<String> ids) {
+		Collection<Group> c = new ArrayList<>();
+		for (String id : ids) {
+			c.add(getBean(GroupDao.class).get(Long.valueOf(id)));
+		}
+		return c;
+	}
+
+	@Override
+	public String getDisplayValue(Group choice) {
+		return choice.getName();
+	}
+
+	@Override
+	public String getIdValue(Group choice) {
+		Long id = choice.getId();
+		return id == null ? null : "" + id;
+	}
+}

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java?rev=1775980&r1=1775979&r2=1775980&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java Sat Dec 24 15:58:32 2016
@@ -21,25 +21,20 @@ package org.apache.openmeetings.web.room
 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 java.util.ArrayList;
 import java.util.Collection;
-import java.util.List;
 
 import org.apache.openmeetings.db.dao.room.RoomDao;
-import org.apache.openmeetings.db.dao.user.GroupDao;
 import org.apache.openmeetings.db.dao.user.GroupUserDao;
-import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.room.Invitation;
 import org.apache.openmeetings.db.entity.room.Invitation.MessageType;
 import org.apache.openmeetings.db.entity.user.Group;
 import org.apache.openmeetings.db.entity.user.GroupUser;
-import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.util.AuthLevelUtil;
 import org.apache.openmeetings.service.room.InvitationManager;
 import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.common.GroupChoiceProvider;
 import org.apache.openmeetings.web.common.InvitationForm;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior;
@@ -53,8 +48,6 @@ import org.apache.wicket.model.util.Coll
 import org.apache.wicket.util.string.Strings;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
-import org.wicketstuff.select2.ChoiceProvider;
-import org.wicketstuff.select2.Response;
 import org.wicketstuff.select2.Select2MultiChoice;
 
 import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
@@ -67,48 +60,7 @@ public class RoomInvitationForm extends
 	private final WebMarkupContainer groupContainer = new WebMarkupContainer("groupContainer");
 	final Select2MultiChoice<Group> groups = new Select2MultiChoice<Group>("groups"
 			, new CollectionModel<Group>(new ArrayList<Group>())
-			, new ChoiceProvider<Group>() {
-				private static final long serialVersionUID = 1L;
-
-				@Override
-				public void query(String term, int page, Response<Group> response) {
-					if (WebSession.getRights().contains(User.Right.Admin)) {
-						List<Group> groups = getBean(GroupDao.class).get(0, Integer.MAX_VALUE);
-						for (Group g : groups) {
-							if (Strings.isEmpty(term) || g.getName().toLowerCase().contains(term.toLowerCase())) {
-								response.add(g);
-							}
-						}
-					} else {
-						User u = getBean(UserDao.class).get(getUserId());
-						for (GroupUser ou : u.getGroupUsers()) {
-							if (Strings.isEmpty(term) || ou.getGroup().getName().toLowerCase().contains(term.toLowerCase())) {
-								response.add(ou.getGroup());
-							}
-						}
-					}
-				}
-
-				@Override
-				public Collection<Group> toChoices(Collection<String> ids) {
-					Collection<Group> c = new ArrayList<>();
-					for (String id : ids) {
-						c.add(getBean(GroupDao.class).get(Long.valueOf(id)));
-					}
-					return c;
-				}
-
-				@Override
-				public String getDisplayValue(Group choice) {
-					return choice.getName();
-				}
-
-				@Override
-				public String getIdValue(Group choice) {
-					Long id = choice.getId();
-					return id == null ? null : "" + id;
-				}
-			});
+			, new GroupChoiceProvider());
 	final WebMarkupContainer sipContainer = new WebMarkupContainer("sip-container");
 
 	enum InviteeType {

Added: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GroupChoiceProvider.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GroupChoiceProvider.java?rev=1775980&view=auto
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GroupChoiceProvider.java (added)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GroupChoiceProvider.java Sat Dec 24 15:58:32 2016
@@ -0,0 +1,79 @@
+/*
+ * 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.common;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+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.db.entity.user.User;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.util.string.Strings;
+import org.wicketstuff.select2.ChoiceProvider;
+import org.wicketstuff.select2.Response;
+
+public class GroupChoiceProvider extends ChoiceProvider<Group> {
+	private static final long serialVersionUID = 1L;
+
+	@Override
+	public void query(String term, int page, Response<Group> response) {
+		if (WebSession.getRights().contains(User.Right.Admin)) {
+			List<Group> groups = getBean(GroupDao.class).get(0, Integer.MAX_VALUE);
+			for (Group g : groups) {
+				if (Strings.isEmpty(term) || g.getName().toLowerCase().contains(term.toLowerCase())) {
+					response.add(g);
+				}
+			}
+		} else {
+			User u = getBean(UserDao.class).get(getUserId());
+			for (GroupUser ou : u.getGroupUsers()) {
+				if (Strings.isEmpty(term) || ou.getGroup().getName().toLowerCase().contains(term.toLowerCase())) {
+					response.add(ou.getGroup());
+				}
+			}
+		}
+	}
+
+	@Override
+	public Collection<Group> toChoices(Collection<String> ids) {
+		Collection<Group> c = new ArrayList<>();
+		for (String id : ids) {
+			c.add(getBean(GroupDao.class).get(Long.valueOf(id)));
+		}
+		return c;
+	}
+
+	@Override
+	public String getDisplayValue(Group choice) {
+		return choice.getName();
+	}
+
+	@Override
+	public String getIdValue(Group choice) {
+		Long id = choice.getId();
+		return id == null ? null : "" + id;
+	}
+}

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java?rev=1775980&r1=1775979&r2=1775980&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomInvitationForm.java Sat Dec 24 15:58:32 2016
@@ -21,25 +21,20 @@ package org.apache.openmeetings.web.room
 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 java.util.ArrayList;
 import java.util.Collection;
-import java.util.List;
 
 import org.apache.openmeetings.db.dao.room.RoomDao;
-import org.apache.openmeetings.db.dao.user.GroupDao;
 import org.apache.openmeetings.db.dao.user.GroupUserDao;
-import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.room.Invitation;
 import org.apache.openmeetings.db.entity.room.Invitation.MessageType;
 import org.apache.openmeetings.db.entity.user.Group;
 import org.apache.openmeetings.db.entity.user.GroupUser;
-import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.util.AuthLevelUtil;
 import org.apache.openmeetings.service.room.InvitationManager;
 import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.common.GroupChoiceProvider;
 import org.apache.openmeetings.web.common.InvitationForm;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior;
@@ -53,8 +48,6 @@ import org.apache.wicket.model.util.Coll
 import org.apache.wicket.util.string.Strings;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
-import org.wicketstuff.select2.ChoiceProvider;
-import org.wicketstuff.select2.Response;
 import org.wicketstuff.select2.Select2MultiChoice;
 
 import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
@@ -67,48 +60,7 @@ public class RoomInvitationForm extends
 	private final WebMarkupContainer groupContainer = new WebMarkupContainer("groupContainer");
 	final Select2MultiChoice<Group> groups = new Select2MultiChoice<Group>("groups"
 			, new CollectionModel<Group>(new ArrayList<Group>())
-			, new ChoiceProvider<Group>() {
-				private static final long serialVersionUID = 1L;
-
-				@Override
-				public void query(String term, int page, Response<Group> response) {
-					if (WebSession.getRights().contains(User.Right.Admin)) {
-						List<Group> groups = getBean(GroupDao.class).get(0, Integer.MAX_VALUE);
-						for (Group g : groups) {
-							if (Strings.isEmpty(term) || g.getName().toLowerCase().contains(term.toLowerCase())) {
-								response.add(g);
-							}
-						}
-					} else {
-						User u = getBean(UserDao.class).get(getUserId());
-						for (GroupUser ou : u.getGroupUsers()) {
-							if (Strings.isEmpty(term) || ou.getGroup().getName().toLowerCase().contains(term.toLowerCase())) {
-								response.add(ou.getGroup());
-							}
-						}
-					}
-				}
-
-				@Override
-				public Collection<Group> toChoices(Collection<String> ids) {
-					Collection<Group> c = new ArrayList<>();
-					for (String id : ids) {
-						c.add(getBean(GroupDao.class).get(Long.valueOf(id)));
-					}
-					return c;
-				}
-
-				@Override
-				public String getDisplayValue(Group choice) {
-					return choice.getName();
-				}
-
-				@Override
-				public String getIdValue(Group choice) {
-					Long id = choice.getId();
-					return id == null ? null : "" + id;
-				}
-			});
+			, new GroupChoiceProvider());
 	final WebMarkupContainer sipContainer = new WebMarkupContainer("sip-container");
 
 	enum InviteeType {