modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java
| 15 ++++++++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/event/EventCompositeDatasource.java
| 17 +++++++---
2 files changed, 27 insertions(+), 5 deletions(-)
New commits:
commit 769949fb28b0beeeba6c076130708c8a534cce88
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Mon Mar 28 15:00:25 2011 -0400
in our GWT UI, the alert and event severity filters are represented with a drop down
selection menu containing one checkbox for each severity enum (alert: hi, med, lo; event:
debug, info, warn, et...).
If you don't select any severity (i.e. all the checkboxes are unchecked), we used
to assume
this means there is no filtering to be performed and the query returns everything.
However, because the UI renders these in individual checkboxes, that behavior
doesn't really make sense and will
confuse the user. Because, if the user doesn't select any severities, it
seems as though the user is asking it to show nothing - since no event or
alert will match the selected severities (and there are NO selected severities).
So to make the query results/UI more sensical, if the user de-selects all severity
check boxes, the table will show 0 rows.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java
index f776d56..3e51b24 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/alert/AlertDataSource.java
@@ -204,6 +204,13 @@ public class AlertDataSource extends RPCDataSource<Alert,
AlertCriteria> {
@Override
protected void executeFetch(final DSRequest request, final DSResponse response, final
AlertCriteria criteria) {
+ if (criteria == null) {
+ // the user selected no severities in the filter - it makes sense from the UI
perspective to show 0 rows
+ response.setTotalRows(0);
+ processResponse(request.getRequestId(), response);
+ return;
+ }
+
final long start = System.currentTimeMillis();
this.alertService.findAlertsByCriteria(criteria, new
AsyncCallback<PageList<Alert>>() {
@@ -272,10 +279,16 @@ public class AlertDataSource extends RPCDataSource<Alert,
AlertCriteria> {
@Override
protected AlertCriteria getFetchCriteria(DSRequest request) {
+ AlertPriority[] severitiesFilter = getArrayFilter(request,
"severities", AlertPriority.class);
+
+ if (severitiesFilter == null || severitiesFilter.length == 0) {
+ return null; // user didn't select any severities - return null to
indicate no data should be displayed
+ }
+
AlertCriteria criteria = new AlertCriteria();
criteria.setPageControl(getPageControl(request));
- criteria.addFilterPriorities(getArrayFilter(request, "severities",
AlertPriority.class));
+ criteria.addFilterPriorities(severitiesFilter);
criteria.addFilterEntityContext(entityContext);
criteria.fetchConditionLogs(true);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/event/EventCompositeDatasource.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/event/EventCompositeDatasource.java
index e7f93e4..490ee4f 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/event/EventCompositeDatasource.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/common/event/EventCompositeDatasource.java
@@ -109,6 +109,13 @@ public class EventCompositeDatasource extends
RPCDataSource<EventComposite, Even
@Override
protected void executeFetch(final DSRequest request, final DSResponse response, final
EventCriteria criteria) {
+ if (criteria == null) {
+ // the user selected no severities in the filter - it makes sense from the UI
perspective to show 0 rows
+ response.setTotalRows(0);
+ processResponse(request.getRequestId(), response);
+ return;
+ }
+
GWTServiceLookup.getEventService().findEventCompositesByCriteria(criteria,
new AsyncCallback<PageList<EventComposite>>() {
public void onFailure(Throwable caught) {
@@ -128,6 +135,11 @@ public class EventCompositeDatasource extends
RPCDataSource<EventComposite, Even
@Override
protected EventCriteria getFetchCriteria(final DSRequest request) {
+ EventSeverity[] severities = getArrayFilter(request, "severities",
EventSeverity.class);
+ if (severities == null || severities.length == 0) {
+ return null; // user didn't select any severities - return null to
indicate no data should be displayed
+ }
+
EventCriteria criteria = new EventCriteria();
PageControl pageControl = getPageControl(request);
@@ -144,10 +156,7 @@ public class EventCompositeDatasource extends
RPCDataSource<EventComposite, Even
criteria.addFilterSourceName((String) criteriaMap.get("source"));
criteria.addFilterDetail((String) criteriaMap.get("details"));
- if (criteriaMap.get("severities") != null) {
- EventSeverity[] severities = getArrayFilter(request, "severities",
EventSeverity.class);
- criteria.addFilterSeverities(severities);
- }
+ criteria.addFilterSeverities(severities);
criteria.addFilterEntityContext(entityContext);