package org.businessmanager.web.controller.page.admin; import java.util.ArrayList; import java.util.List; import javax.annotation.PostConstruct; import javax.faces.application.FacesMessage; import org.apache.commons.lang3.StringUtils; import org.businessmanager.domain.security.Group; import org.businessmanager.domain.security.User; import org.businessmanager.service.security.GroupService; import org.businessmanager.service.security.UserService; import org.businessmanager.web.controller.AbstractController; import org.businessmanager.web.controller.model.UserGroupModel; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; @Component("assignUsersController") @Scope("view") public class AssignUsersController extends AbstractController { @Autowired private UserService userService; @Autowired private GroupService groupService; @Autowired private UserGroupModel model; private String username; private List<User> assignedUsers = new ArrayList<User>(); private User selectedUser; @PostConstruct public void init() { Group selectedGroup = model.getSelectedGroup(); if(selectedGroup != null) { List<User> members = selectedGroup.getMembers(); assignedUsers.addAll(members); } } public String navigateBack() { return navigationManager.getAdminSecuritymanagement(); } public List<String> searchUser(String usernameFragment) { List<String> resultList = new ArrayList<String>(); List<User> userList = userService.getUsersByNameFragment(usernameFragment); for (User user : userList) { resultList.add(user.getUsername()); } return resultList; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public void assignUser() { User user = retrieveUser(); if(user != null) { if(!assignedUsers.contains(user)) { assignedUsers.add(user); } } } private User retrieveUser() { if(!StringUtils.isEmpty(username)) { User user = userService.getUserByName(username); if(user != null) { return user; } else { addErrorMessage("assignUsers_error_user_not_found"); } } else { addErrorMessage("assignUsers_error_empty_username"); } return null; } public List<User> getAssignedUsers() { return assignedUsers; } public String save() { if(model.getSelectedGroup() != null) { groupService.assignUsersToGroup(assignedUsers, model.getSelectedGroup()); addMessage(FacesMessage.SEVERITY_INFO, "assignUsers_success_users_assigned"); return navigationManager.getAdminSecuritymanagement(); } return "#"; } public User getSelectedUser() { return selectedUser; } public void setSelectedUser(User selectedUser) { this.selectedUser = selectedUser; } public void removeUser() { if(selectedUser != null) { assignedUsers.remove(selectedUser); } } public UserGroupModel getModel() { return model; } }