2 * Copyright 2005 the original author or authors.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org.wamblee.usermgt;
18 import static org.wamblee.usermgt.UserMgtException.Reason.DUPLICATE_GROUP;
19 import static org.wamblee.usermgt.UserMgtException.Reason.DUPLICATE_USER;
20 import static org.wamblee.usermgt.UserMgtException.Reason.GROUP_STILL_OCCUPIED;
21 import static org.wamblee.usermgt.UserMgtException.Reason.TRIVIAL_RENAME;
22 import static org.wamblee.usermgt.UserMgtException.Reason.UNKNOWN_GROUP;
23 import static org.wamblee.usermgt.UserMgtException.Reason.UNKNOWN_USER;
29 * Administration of users and groups.
31 * @author Erik Brakkee
33 public class UserAdministrationImpl implements UserAdministration {
37 private UserSet users;
42 private GroupSet groups;
45 * Validator for user names.
47 private NameValidator userValidator;
50 * Validator for group names.
52 private NameValidator groupValidator;
55 * Constructs empty user administration.
58 public UserAdministrationImpl(UserSet aUsers, GroupSet aGroups,
59 NameValidator aUserValidator, NameValidator aGroupValidator) {
62 userValidator = aUserValidator;
63 groupValidator = aGroupValidator;
69 * @see org.wamblee.usermgt.UserAdministration#createUser(java.lang.String,
75 * @param aUser DOCUMENT ME!
76 * @param aPassword DOCUMENT ME!
77 * @param aGroup DOCUMENT ME!
79 * @return DOCUMENT ME!
81 * @throws UserMgtException DOCUMENT ME!
83 public User createUser(String aUser, String aPassword, Group aGroup)
84 throws UserMgtException {
85 userValidator.validate(aUser);
88 User user = users.createUser(aUser, aPassword, aGroup);
90 return new User(user);
96 * @see org.wamblee.usermgt.UserAdministration#createGroup(java.lang.String)
101 * @param aName DOCUMENT ME!
103 * @return DOCUMENT ME!
105 * @throws UserMgtException DOCUMENT ME!
107 public Group createGroup(String aName) throws UserMgtException {
108 groupValidator.validate(aName);
110 Group group = new Group(aName);
112 if (groups.contains(group)) {
113 throw new UserMgtException(DUPLICATE_GROUP, group);
118 return new Group(group);
124 * @see org.wamblee.usermgt.UserAdministration#userModified(org.wamblee.usermgt.User)
129 * @param aUser DOCUMENT ME!
131 public void userModified(User aUser) {
132 users.userModified(aUser);
138 * @see org.wamblee.usermgt.UserAdministration#groupModified(org.wamblee.usermgt.Group)
143 * @param aGroup DOCUMENT ME!
145 public void groupModified(Group aGroup) {
146 groups.groupModified(aGroup);
152 * @see org.wamblee.usermgt.UserAdministration#getUser(java.lang.String)
157 * @param aName DOCUMENT ME!
159 * @return DOCUMENT ME!
161 public User getUser(String aName) {
162 return users.find(aName);
168 * @see org.wamblee.usermgt.UserAdministration#getGroup(java.lang.String)
173 * @param aName DOCUMENT ME!
175 * @return DOCUMENT ME!
177 public Group getGroup(String aName) {
178 return groups.find(aName);
184 * @see org.wamblee.usermgt.UserAdministration#getUsers()
189 * @return DOCUMENT ME!
191 public Set<User> getUsers() {
198 * @see org.wamblee.usermgt.UserAdministration#getUsers(org.wamblee.usermgt.Group)
203 * @param aGroup DOCUMENT ME!
205 * @return DOCUMENT ME!
207 public Set<User> getUsers(Group aGroup) {
208 return users.list(aGroup);
214 * @see org.wamblee.usermgt.UserAdministration#getGroups()
219 * @return DOCUMENT ME!
221 public Set<Group> getGroups() {
222 return groups.list();
228 * @see org.wamblee.usermgt.UserAdministration#removeUser(org.wamblee.usermgt.User)
233 * @param aUser DOCUMENT ME!
235 * @throws UserMgtException DOCUMENT ME!
237 public void removeUser(User aUser) throws UserMgtException {
245 * @see org.wamblee.usermgt.UserAdministration#removeGroup(org.wamblee.usermgt.Group)
250 * @param aGroup DOCUMENT ME!
252 * @throws UserMgtException DOCUMENT ME!
254 public void removeGroup(Group aGroup) throws UserMgtException {
257 if (getUsers(aGroup).size() > 0) {
258 throw new UserMgtException(GROUP_STILL_OCCUPIED, aGroup);
261 groups.remove(aGroup);
267 * @see org.wamblee.usermgt.UserAdministration#renameUser(org.wamblee.usermgt.User,
273 * @param aUser DOCUMENT ME!
274 * @param aUserName DOCUMENT ME!
276 * @throws UserMgtException DOCUMENT ME!
278 public void renameUser(User aUser, String aUserName)
279 throws UserMgtException {
282 if (aUser.getName().equals(aUserName)) {
283 throw new UserMgtException(TRIVIAL_RENAME, aUser);
286 if (users.find(aUserName) != null) {
287 throw new UserMgtException(DUPLICATE_USER, aUser);
290 userValidator.validate(aUserName);
291 // we are modifying the user so we should re-insert it into the set
292 // after renaming it.
294 aUser.setName(aUserName);
301 * @see org.wamblee.usermgt.UserAdministration#renameGroup(org.wamblee.usermgt.Group,
307 * @param aGroup DOCUMENT ME!
308 * @param aGroupName DOCUMENT ME!
310 * @throws UserMgtException DOCUMENT ME!
312 public void renameGroup(Group aGroup, String aGroupName)
313 throws UserMgtException {
316 if (aGroup.getName().equals(aGroupName)) {
317 throw new UserMgtException(TRIVIAL_RENAME, aGroup);
320 if (groups.find(aGroupName) != null) {
321 throw new UserMgtException(DUPLICATE_GROUP, aGroup);
324 groupValidator.validate(aGroupName);
325 // we are renaming the group so we should re-insert it into the set
326 // after renaming it.
327 groups.remove(aGroup);
328 aGroup.setName(aGroupName);
335 * @see org.wamblee.usermgt.UserAdministration#addUserToGroup(org.wamblee.usermgt.User,
336 * org.wamblee.usermgt.Group)
341 * @param aUser DOCUMENT ME!
342 * @param aGroup DOCUMENT ME!
344 * @throws UserMgtException DOCUMENT ME!
346 public void addUserToGroup(User aUser, Group aGroup)
347 throws UserMgtException {
350 aUser.addGroup(aGroup);
351 users.userModified(aUser);
357 * @see org.wamblee.usermgt.UserAdministration#removeUserFromGroup(org.wamblee.usermgt.User,
358 * org.wamblee.usermgt.Group)
363 * @param aUser DOCUMENT ME!
364 * @param aGroup DOCUMENT ME!
366 * @throws UserMgtException DOCUMENT ME!
368 public void removeUserFromGroup(User aUser, Group aGroup)
369 throws UserMgtException {
372 aUser.removeGroup(aGroup);
373 users.userModified(aUser);
381 * @throws UserMgtException
383 private void checkUser(User aUser) throws UserMgtException {
384 if (!users.contains(aUser)) {
385 throw new UserMgtException(UNKNOWN_USER, aUser);
394 * @throws UserMgtException
396 private void checkGroup(Group aGroup) throws UserMgtException {
397 if (!groups.contains(aGroup)) {
398 throw new UserMgtException(UNKNOWN_GROUP, aGroup);
403 * @see org.wamblee.usermgt.UserAdministration#getUserCount()
408 * @return DOCUMENT ME!
410 public int getUserCount() {
415 * @see org.wamblee.usermgt.UserAdministration#getGroupCount()
420 * @return DOCUMENT ME!
422 public int getGroupCount() {
423 return groups.size();