package net.techreadiness.customer.action.user; import static net.techreadiness.security.CorePermissionCodes.CORE_CUSTOMER_USER_ACCESS; import static net.techreadiness.security.CorePermissionCodes.CORE_CUSTOMER_USER_DELETE; import static net.techreadiness.security.CorePermissionCodes.CORE_CUSTOMER_USER_UPDATE; import javax.inject.Inject; import net.techreadiness.annotation.CoreSecured; import net.techreadiness.navigation.taskflow.user.UserTaskFlowDefinition; import net.techreadiness.persistence.datagrid.UserByScopeItemProvider; import net.techreadiness.service.ConfigService; import net.techreadiness.service.ScopeService; import net.techreadiness.service.common.ViewDef; import net.techreadiness.service.common.ViewDef.ViewDefTypeCode; import net.techreadiness.service.object.Org; import net.techreadiness.service.object.Role; import net.techreadiness.service.object.Scope; import net.techreadiness.service.object.User; import net.techreadiness.ui.action.filters.FilterSelectionHandler; import net.techreadiness.ui.tags.datagrid.DataGridState; import net.techreadiness.ui.task.BaseTaskControlAction; import net.techreadiness.ui.util.Conversation; import net.techreadiness.ui.util.ConversationAware; import net.techreadiness.ui.util.ConversationScoped; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; @Results({ @Result(name = "success", location = "/user/list.jsp") }) public class ListAction extends BaseTaskControlAction<UserTaskFlowDefinition> implements ConversationAware, ApplicationContextAware { private static final long serialVersionUID = 1L; @Inject private UserByScopeItemProvider itemProvider; @Inject private ConfigService configService; @Inject private ScopeService scopeService; private ViewDef viewDef; private Conversation conversation; private ApplicationContext applicationContext; @ConversationScoped private DataGridState<User> userGrid; @Override @CoreSecured({ CORE_CUSTOMER_USER_ACCESS }) public String execute() { Scope scope = scopeService.getScopeWithUsers(getServiceContext()); itemProvider.setScope(scope); itemProvider.setServiceContext(getServiceContext()); conversation.put("orgFilterSelectionHandler", "orgFilterSelectionHandlerForUser"); conversation.put("roleFilterSelectionHandler", "roleFilterSelectionHandlerForUser"); viewDef = configService.getViewDefinition(getServiceContext(), ViewDefTypeCode.USER_DATAGRID); return SUCCESS; } public UserByScopeItemProvider getItemProvider() { return itemProvider; } public void setUserGrid(DataGridState<User> userGrid) { this.userGrid = userGrid; } public DataGridState<User> getUserGrid() { return userGrid; } public void setViewDef(ViewDef viewDef) { this.viewDef = viewDef; } public ViewDef getViewDef() { return viewDef; } public Boolean getInlineEditable() { return hasPermission(CORE_CUSTOMER_USER_UPDATE); } @Override public void setConversation(Conversation conversation) { this.conversation = conversation; } protected FilterSelectionHandler<Role> getRoleSelectionHandler() { String beanName = conversation.get(String.class, "roleFilterSelectionHandler"); FilterSelectionHandler<Role> selectionHandler = applicationContext.getBean(beanName, FilterSelectionHandler.class); if (selectionHandler instanceof ConversationAware) { ((ConversationAware) selectionHandler).setConversation(conversation); } return selectionHandler; } protected FilterSelectionHandler<Org> getOrgSelectionHandler() { String beanName = conversation.get(String.class, "orgFilterSelectionHandler"); FilterSelectionHandler<Org> selectionHandler = applicationContext.getBean(beanName, FilterSelectionHandler.class); if (selectionHandler instanceof ConversationAware) { ((ConversationAware) selectionHandler).setConversation(conversation); } return selectionHandler; } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; } public boolean isShowDeletedUsersCheckboxDisplayed() { return hasPermission(CORE_CUSTOMER_USER_DELETE); } }