/* * Copyright 2005 the original author or authors. * * Licensed 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.wamblee.photos.tapestry; import java.util.ArrayList; import java.util.List; import java.util.Set; import org.apache.tapestry.IRequestCycle; import org.wamblee.general.BeanKernel; import org.wamblee.usermgt.Group; import org.wamblee.usermgt.User; import org.wamblee.usermgt.UserAccessor; import org.wamblee.usermgt.UserAdministration; import org.wamblee.usermgt.UserMgtException; /** * Administrator page. */ public class AdminPage extends PhotosProtectedPage { public static final String PAGE_NAME = "Admin"; private String _message; private String _currentGroup; private String _currentUser; private String _newGroupName; private String _newUserName; private String _newPassword; private String _selectedGroupName; private String _selectedUserName; public AdminPage() { super(); initializeImpl(); } private void initializeImpl() { _message = ""; _currentGroup = ""; _currentUser = ""; _newGroupName = ""; _newUserName = ""; _newPassword = ""; _selectedGroupName = ""; _selectedUserName = ""; } /* (non-Javadoc) * @see org.apache.tapestry.AbstractPage#initialize() */ @Override protected void initialize() { super.initialize(); initializeImpl(); } public String getMessage() { return _message; } public void setMessage(String aMessage) { _message = aMessage; } public List getGroups() { UserAdministration admin = getUserAdministration(); List result = new ArrayList(); Set groups = admin.getGroups(); for (Group group : groups) { result.add(group.getName()); } return result; } public String getCurrentGroup() { return _currentGroup; } public void setCurrentGroup(String aGroup) { _currentGroup = aGroup; } public void deleteGroup(IRequestCycle aCycle) { Object[] params = aCycle.getServiceParameters(); String groupName = (String) params[0]; setMessage(getVisit().deleteGroup(aCycle, groupName)); } public void setNewGroupName(String aGroup) { _newGroupName = aGroup; } public String getNewGroupName() { return ""; } public void createGroup(IRequestCycle aCycle) { setMessage(getVisit().createGroup(aCycle, _newGroupName)); } public boolean getGroupMayBeDeleted() { Group group = getUserAdministration().getGroup(_currentGroup); Set users = getUserAdministration().getUsers(group); return users.size() == 0; } public List getUsers() { UserAdministration admin = getUserAdministration(); List result = new ArrayList(); Set users = admin.getUsers(); for (User user : users) { result.add(user.getName()); } return result; } public String getCurrentUser() { return _currentUser; } public void setCurrentUser(String aUser) { _currentUser = aUser; } public void deleteUser(IRequestCycle aCycle) { Object[] params = aCycle.getServiceParameters(); String userName = (String) params[0]; setMessage( getVisit().deleteUser(aCycle, userName)); } public boolean getUserMayBeDeleted() { return !getUserAccessor().getCurrentUser().getName().equals( _currentUser); } /** * @return */ private UserAccessor getUserAccessor() { return BeanKernel.getBeanFactory().find(UserAccessor.class); } public List getUserGroups() { Set groups = getUserAdministration().getUser(_currentUser) .getGroups(); List result = new ArrayList(); for (Group group : groups) { result.add(group.getName()); } return result; } public void setNewUserName(String aUser) { _newUserName = aUser; } public String getNewUserName() { return ""; } public void setNewPassword(String aPassword) { _newPassword = aPassword; } public String getNewPassword() { return ""; } public boolean isGroupSelected() { return _currentGroup.equals(_selectedGroupName); } public void setGroupSelected(boolean aSelected) { if (aSelected) { _selectedGroupName = _currentGroup; } } public boolean isUserSelected() { return _currentUser.equals(_selectedUserName); } public void setUserSelected(boolean aSelected) { if (aSelected) { _selectedUserName = _currentUser; } } public void changePassword(IRequestCycle aCycle) throws UserMgtException { setMessage(getVisit().changePasswordForUser(aCycle, _currentUser, _newPassword)); } public void createUser(IRequestCycle aCycle) { setMessage( getVisit().createUser(aCycle, _newUserName, _newPassword, _selectedGroupName)); } public void addUserToGroup(IRequestCycle aCycle) { setMessage(getVisit().addUserToGroup(aCycle, _selectedUserName, _selectedGroupName)); } public String[] getCurrentUserAndGroup() { return new String[] { _currentUser, _currentGroup }; } public boolean getUserMayBeRemovedFromGroup() { UserAdministration admin = getUserAdministration(); User user = admin.getUser(_currentUser); return user.getGroups().size() > 1 && !user.equals(getUserAccessor().getCurrentUser()); } public void removeUserFromGroup(IRequestCycle aCycle) { Object[] values = aCycle.getServiceParameters(); setMessage(getVisit().removeUserFromGroup(aCycle, (String)values[0], (String)values[1])); } }