/** * Bean responsible for the agent details display page. This bean will also provide a pagable list * of the failover servers for a particular agent. * * @author Jason Dobies */ public class ViewAgentUIBean extends PagedDataTableUIBean { public static final String MANAGED_BEAN_NAME = "ViewAgentUIBean"; private AgentManagerLocal agentManager = LookupUtil.getAgentManager(); private CloudManagerLocal cloudManager = LookupUtil.getCloudManager(); private Agent agent; public Agent getAgent() { if (agent == null) { hasPermission(); int agentId = FacesContextUtility.getRequiredRequestParameter("agentId", Integer.class); agent = agentManager.getAgentByID(agentId); } return agent; } @Override public DataModel getDataModel() { if (dataModel == null) { dataModel = new ViewAgentUIBeanDataModel(PageControlView.AgentFailoverListView, MANAGED_BEAN_NAME); } return dataModel; } private class ViewAgentUIBeanDataModel extends PagedListDataModel<FailoverListDetails> { private ViewAgentUIBeanDataModel(PageControlView view, String beanName) { super(view, beanName); } @Override public PageList<FailoverListDetails> fetchPage(PageControl pc) { int agentId = getAgent().getId(); PageList<FailoverListDetails> pageList = cloudManager.getFailoverListDetailsByAgentId(agentId, pc); return pageList; } } /** Throws a permission exception if the user is not allowed to access this functionality. */ private void hasPermission() { Subject subject = EnterpriseFacesContextUtility.getSubject(); if (!LookupUtil.getAuthorizationManager() .hasGlobalPermission(subject, Permission.MANAGE_INVENTORY)) { throw new PermissionException( "User [" + subject.getName() + "] does not have the proper permissions to view or manage agents"); } } }