/* * Copyright 2008-2010 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 es.alvsanand.webpage.web.beans.admin; import java.io.Serializable; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.faces.application.FacesMessage; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import javax.faces.component.UIComponent; import javax.faces.component.UIInput; import javax.faces.context.FacesContext; import javax.faces.validator.ValidatorException; import org.apache.commons.lang.StringUtils; import org.primefaces.model.LazyDataModel; import es.alvsanand.webpage.AlvsanandException; import es.alvsanand.webpage.common.Globals; import es.alvsanand.webpage.common.Logger; import es.alvsanand.webpage.common.MessageResources; import es.alvsanand.webpage.db.QueryBean; import es.alvsanand.webpage.db.QueryBean.OrderBean; import es.alvsanand.webpage.model.Role; import es.alvsanand.webpage.model.User; import es.alvsanand.webpage.services.ServiceException; import es.alvsanand.webpage.services.admin.UserAdminService; import es.alvsanand.webpage.services.admin.UserAdminServiceImpl; @SessionScoped @ManagedBean(name="userBean") public class UserBean implements Serializable{ /** * */ private static final long serialVersionUID = -8906971058757132704L; private transient final static Logger logger = new Logger(UserBean.class); private transient final static String DEFAULT_SORT_FIELD = "creationdate"; private transient final static String OBLIGATORY_SORT_FIELD = "loginName"; private transient static final String LIST_USER_VIEW_ID = "pretty:listUser"; private transient static final String EDIT_USER_VIEW_ID = "/xhtml/secured/admin/users/edit.jsf"; private transient UserAdminService userAdminService; private String idUser; private String loginName; private String name; private String surname; private String email; private String state; private String roleName; private Map<String, Boolean> selectedUsers = new HashMap<String, Boolean>(); private LazyDataModel<User> lazyModel; public UserBean() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getLoginName() { return loginName; } public void setLoginName(String loginName) { this.loginName = loginName; } public String getSurname() { return surname; } public void setSurname(String surname) { this.surname = surname; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getState() { return state; } public void setState(String state) { this.state = state; } public String getRoleName() { return roleName; } public void setRoleName(String roleName) { this.roleName = roleName; } public String getIdUser() { return idUser; } public void setIdUser(String idUser) { this.idUser = idUser; } public LazyDataModel<User> getLazyModel() throws ServiceException { int rowCount = getUserAdminService().getUserCount(); if(lazyModel==null){ final String actualName = ((es.alvsanand.webpage.model.User)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get(Globals.SES_USER)).getLoginName(); lazyModel = new LazyDataModel<User>() { /** * */ private static final long serialVersionUID = -3849916319838761619L; @Override public List<User> load(int first, int pageSize, String sortField, boolean sortOrder, Map<String,String> filters) { logger.info("Loading the user list between " + first + " and " + (first + pageSize)); List<User> lazyUsers = null; try { QueryBean queryBean = new QueryBean(); queryBean.setLimit(pageSize); queryBean.setOffset(first); // //Sorting disabled until Primefaces implements it // OrderBean orderBean = new OrderBean(sortOrder, sortField); // List<OrderBean> orderBeans = new java.util.ArrayList<OrderBean>(); // orderBeans.add(orderBean); // queryBean.setOrderBeans(orderBeans); if(sortField==null){ List<OrderBean> orderBeans = new java.util.ArrayList<OrderBean>(); OrderBean orderBean = new OrderBean(true, OBLIGATORY_SORT_FIELD); orderBeans.add(orderBean); orderBean = new OrderBean(true, DEFAULT_SORT_FIELD); orderBeans.add(orderBean); queryBean.setOrderBeans(orderBeans); } lazyUsers = getUserAdminService().getUsers(actualName, queryBean); } catch (ServiceException e) { logger.error("Error loading the user list between " + first + " and " + (first+pageSize) + ": " + e.getMessage()); } return lazyUsers; } }; } lazyModel.setRowCount(rowCount); return lazyModel; } public Map<String, Boolean> getSelectedUsers() { return selectedUsers; } public void setSelectedUsers(Map<String, Boolean> selectedUsers) { this.selectedUsers = selectedUsers; } public UserAdminService getUserAdminService() { if(userAdminService==null){ userAdminService = new UserAdminServiceImpl(); } return userAdminService; } // JSF methods public void getUsers() throws AlvsanandException { logger.info("Launched UserBean.getUsers"); } public String editUser() throws AlvsanandException { logger.info("Launched UserBean.editUser[" + idUser + "]"); User userTmp = new User(); userTmp.setIdUser(idUser); User user = getUserAdminService().getUser(userTmp); loginName = user.getLoginName(); name = user.getName(); surname = user.getSurname(); email = user.getEmail(); state = Integer.toString(user.getState()); idUser = user.getIdUser(); roleName = user.getRole().getName(); return EDIT_USER_VIEW_ID; } public String deleteUser() throws AlvsanandException { logger.info("Launched UserBean.deleteUser[" + idUser + "]"); User user = new User(); user.setIdUser(idUser); getUserAdminService().deleteUser(user); return LIST_USER_VIEW_ID; } public String saveUser() throws AlvsanandException { logger.info("Launched UserBean.saveUser[" + idUser + "]"); User userTmp = new User(); userTmp.setIdUser(idUser); User user = getUserAdminService().getUser(userTmp); user.setLoginName(loginName); user.setName(name); user.setSurname(surname); user.setEmail(email); Role role = new Role(); role.setName(roleName); user.setRole(role); getUserAdminService().saveOrUpdateUser(user); return LIST_USER_VIEW_ID; } public String updateStateUser() throws AlvsanandException { logger.info("Launched UserBean.updateStateUser[" + idUser + "]"); User userTmp = new User(); userTmp.setIdUser(idUser); User user = getUserAdminService().getUser(userTmp); user.setState(Integer.parseInt(state)); getUserAdminService().saveOrUpdateUser(user); return LIST_USER_VIEW_ID; } public String updateStateUsers() throws AlvsanandException { logger.info("Launched UserBean.updateStateUsers[" + selectedUsers.keySet() + "]"); List<User> userList = new java.util.ArrayList<User>(); if(selectedUsers!=null){ for(String idUser: selectedUsers.keySet()){ if(selectedUsers.get(idUser)!=null && selectedUsers.get(idUser).booleanValue()){ User userTmp = new User(); userTmp.setIdUser(idUser); User user = getUserAdminService().getUser(userTmp); user.setState(Integer.parseInt(state)); userList.add(user); } } } getUserAdminService().saveOrUpdateUsers(userList); return LIST_USER_VIEW_ID; } }