modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/subsystem/SubsystemAlertDefinitionUIBean.java | 88 +++++++++- modules/enterprise/gui/portal-war/src/main/webapp/rhq/subsystem/alertDefinitions.xhtml | 12 + 2 files changed, 92 insertions(+), 8 deletions(-)
New commits: commit f944f3d58c4d7719ea075429faa1dc938737ecf1 Author: James Livingston jlivings@redhat.com Date: Fri Feb 26 10:53:48 2010 +0100
BZ 560859 - Add mechanism to enable/disable alert definitions for multiple resources
diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/subsystem/SubsystemAlertDefinitionUIBean.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/subsystem/SubsystemAlertDefinitionUIBean.java index 5831f3e..2e8d49c 100644 --- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/subsystem/SubsystemAlertDefinitionUIBean.java +++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/subsystem/SubsystemAlertDefinitionUIBean.java @@ -1,6 +1,6 @@ /* * RHQ Management Platform - * Copyright (C) 2005-2008 Red Hat, Inc. + * Copyright (C) 2005-2010 Red Hat, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify @@ -73,13 +73,13 @@ public class SubsystemAlertDefinitionUIBean extends SubsystemView { private SelectItem[] categoryFilterItems;
private IntExtractor<AlertDefinitionComposite> RESOURCE_ID_EXTRACTOR = new IntExtractor<AlertDefinitionComposite>() { - + public int extract(AlertDefinitionComposite object) { Resource resource = object.getAlertDefinition().getResource(); return resource == null ? 0 : resource.getId(); } }; - + public SubsystemAlertDefinitionUIBean() { datePattern = EnterpriseFacesContextUtility.getWebUser().getWebPreferences().getDateTimeDisplayPreferences() .getDateTimeFormatTrigger(); @@ -178,6 +178,84 @@ public class SubsystemAlertDefinitionUIBean extends SubsystemView { return "success"; }
+ public String disableSelected() { + Integer[] selected = getSelectedItems(); + + try { + Subject subject = getSubject(); + + List<Integer> resourceDefinitions = new ArrayList<Integer>(); + List<Integer> groupDefinitions = new ArrayList<Integer>(); + List<Integer> typeDefinitions = new ArrayList<Integer>(); + + for (Integer definitionId : selected) { + if (alertDefinitionManager.isTemplate(definitionId)) { + typeDefinitions.add(definitionId); + } else if (alertDefinitionManager.isGroupAlertDefinition(definitionId)) { + groupDefinitions.add(definitionId); + } else { + resourceDefinitions.add(definitionId); + } + } + + // delete resources first + alertDefinitionManager.disableAlertDefinitions(subject, resourceDefinitions + .toArray(new Integer[resourceDefinitions.size()])); + + // then delete templates and group alert defs, which are both tolerant of missing child definitions + groupAlertDefinitionManager.disableGroupAlertDefinitions(subject, groupDefinitions + .toArray(new Integer[groupDefinitions.size()])); + alertTemplateManager.removeAlertTemplates(subject, typeDefinitions.toArray(new Integer[typeDefinitions + .size()])); + + FacesContextUtility.addMessage(FacesMessage.SEVERITY_INFO, "Disable selected alert definitions."); + } catch (Exception e) { + FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR, "Failed to disable selected alert definitions.", + e); + } + + return "success"; + } + + public String enableSelected() { + Integer[] selected = getSelectedItems(); + + try { + Subject subject = getSubject(); + + List<Integer> resourceDefinitions = new ArrayList<Integer>(); + List<Integer> groupDefinitions = new ArrayList<Integer>(); + List<Integer> typeDefinitions = new ArrayList<Integer>(); + + for (Integer definitionId : selected) { + if (alertDefinitionManager.isTemplate(definitionId)) { + typeDefinitions.add(definitionId); + } else if (alertDefinitionManager.isGroupAlertDefinition(definitionId)) { + groupDefinitions.add(definitionId); + } else { + resourceDefinitions.add(definitionId); + } + } + + // delete resources first + alertDefinitionManager.enableAlertDefinitions(subject, resourceDefinitions + .toArray(new Integer[resourceDefinitions.size()])); + + // then delete templates and group alert defs, which are both tolerant of missing child definitions + groupAlertDefinitionManager.enableGroupAlertDefinitions(subject, groupDefinitions + .toArray(new Integer[groupDefinitions.size()])); + alertTemplateManager.removeAlertTemplates(subject, typeDefinitions.toArray(new Integer[typeDefinitions + .size()])); + + FacesContextUtility.addMessage(FacesMessage.SEVERITY_INFO, "Enable selected alert definitions."); + } catch (Exception e) { + FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR, "Failed to enable selected alert definitions.", + e); + } + + return "success"; + } + @Override public DataModel getDataModel() { if (dataModel == null) { @@ -229,7 +307,7 @@ public class SubsystemAlertDefinitionUIBean extends SubsystemView { protected IntExtractor<AlertDefinitionComposite> getResourceIdExtractor() { return RESOURCE_ID_EXTRACTOR; } - + private void getDataFromRequest() { SubsystemAlertDefinitionUIBean outer = SubsystemAlertDefinitionUIBean.this; outer.resourceFilter = FacesContextUtility.getOptionalRequestParameter(FORM_PREFIX + "resourceFilter"); @@ -255,4 +333,4 @@ public class SubsystemAlertDefinitionUIBean extends SubsystemView { return null; } } -} \ No newline at end of file +} diff --git a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/subsystem/alertDefinitions.xhtml b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/subsystem/alertDefinitions.xhtml index 2cc9a52..a1caee7 100644 --- a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/subsystem/alertDefinitions.xhtml +++ b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/subsystem/alertDefinitions.xhtml @@ -189,7 +189,7 @@ <f:param name="ad" value="#{item.original.alertDefinition.parentId}"/> <h:outputText value="View Template" /> </h:outputLink> - + <h:outputLink value="/alerts/Config.do" rendered="#{not empty item.original.alertDefinition.groupAlertDefinition}"> <f:param name="mode" value="viewRoles"/> <f:param name="groupId" value="#{item.original.alertDefinition.groupAlertDefinition.resourceGroup.id}"/> @@ -197,8 +197,8 @@ <f:param name="ad" value="#{item.original.alertDefinition.groupAlertDefinition.id}"/> <h:outputText value="View Group Definition" /> </h:outputLink> - - <h:outputText value="N/A" + + <h:outputText value="N/A" rendered="#{item.original.alertDefinition.parentId eq 0 and empty item.original.alertDefinition.groupAlertDefinition}" /> </rich:column>
@@ -208,6 +208,12 @@ <onc:selectCommandButton action="#{SubsystemAlertDefinitionUIBean.deleteSelected}" value="DELETE SELECTED" target="selectedItems" styleClass="on-pager-button buttonsmall" rendered="#{GlobalPermissionsUIBean.superuser}" /> + <onc:selectCommandButton action="#{SubsystemAlertDefinitionUIBean.disableSelected}" + value="DISABLE SELECTED" target="selectedItems" styleClass="on-pager-button buttonsmall" + rendered="#{GlobalPermissionsUIBean.superuser}" /> + <onc:selectCommandButton action="#{SubsystemAlertDefinitionUIBean.enableSelected}" + value="ENABLE SELECTED" target="selectedItems" styleClass="on-pager-button buttonsmall" + rendered="#{GlobalPermissionsUIBean.superuser}" />
<ui:param name="paginationDataTableName" value="alertDefinitionDataTable"/> <ui:param name="paginationDataModel" value="#{alertDefinitionDataModel}"/>
rhq-commits@lists.fedorahosted.org