modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/monitoring/metric/MetricsGroupViewDataSource.java
| 27 +++++-----
modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/resource/detail/monitoring/table/MetricsViewDataSource.java
| 27 +++++-----
2 files changed, 28 insertions(+), 26 deletions(-)
New commits:
commit 3cbe934a3b7f986ca816744bb2578bdfbad23e56
Author: Lukas Krejci <lkrejci(a)redhat.com>
Date: Thu Jan 30 18:04:52 2014 +0100
[BZ 1031200] - Don't assume unique display names of metrics
While having unique names generally is true and even desirable, we were
throwing NPE's in the UI due to that assumption.
Now the UI will just correctly show 2 metrics with the same name which will
hint the user correctly that there's something wrong with the plugin,
not with RHQ itself.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/monitoring/metric/MetricsGroupViewDataSource.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/monitoring/metric/MetricsGroupViewDataSource.java
index a5f1353..dd67500 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/monitoring/metric/MetricsGroupViewDataSource.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/groups/detail/monitoring/metric/MetricsGroupViewDataSource.java
@@ -21,6 +21,8 @@ package
org.rhq.coregui.client.inventory.groups.detail.monitoring.metric;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -256,24 +258,23 @@ public class MetricsGroupViewDataSource extends
RPCDataSource<MetricDisplaySumma
}
private void organizeMeasurementDefinitionOrder(ResourceGroup resourceGroup) {
- Set<MeasurementDefinition> definitions =
getMetricDefinitions(resourceGroup);
+ List<MeasurementDefinition> definitions =
getMetricDefinitions(resourceGroup);
- //build id mapping for measurementDefinition instances Ex. Free Memory ->
MeasurementDefinition[100071]
- final HashMap<String, MeasurementDefinition> measurementDefMap = new
HashMap<String, MeasurementDefinition>();
- for (MeasurementDefinition definition : definitions) {
- measurementDefMap.put(definition.getDisplayName(), definition);
- }
//bundle definition ids for asynch call.
definitionArrayIds = new int[definitions.size()];
- final String[] displayOrder = new String[definitions.size()];
- measurementDefMap.keySet().toArray(displayOrder);
+
//sort the charting data ex. Free Memory, Free Swap Space,..System Load
- Arrays.sort(displayOrder);
+ Collections.sort(definitions, new Comparator<MeasurementDefinition>() {
+ @Override
+ public int compare(MeasurementDefinition o1, MeasurementDefinition o2) {
+ return o1.getDisplayName().compareTo(o2.getDisplayName());
+ }
+ });
//organize definitionArrayIds for ordered request on server.
int index = 0;
- for (String definitionToDisplay : displayOrder) {
- definitionArrayIds[index++] =
measurementDefMap.get(definitionToDisplay).getId();
+ for (MeasurementDefinition definitionToDisplay : definitions) {
+ definitionArrayIds[index++] = definitionToDisplay.getId();
}
}
@@ -302,8 +303,8 @@ public class MetricsGroupViewDataSource extends
RPCDataSource<MetricDisplaySumma
this.metricDisplaySummaries = metricDisplaySummaries;
}
- private Set<MeasurementDefinition> getMetricDefinitions(ResourceGroup
resourceGroup) {
- Set<MeasurementDefinition> definitions = new
HashSet<MeasurementDefinition>();
+ private List<MeasurementDefinition> getMetricDefinitions(ResourceGroup
resourceGroup) {
+ List<MeasurementDefinition> definitions = new
ArrayList<MeasurementDefinition>();
for (MeasurementDefinition measurementDefinition :
resourceGroup.getResourceType().getMetricDefinitions()) {
if (measurementDefinition.getDataType() == MEASUREMENT ||
measurementDefinition.getDataType() == COMPLEX) {
definitions.add(measurementDefinition);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/resource/detail/monitoring/table/MetricsViewDataSource.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/resource/detail/monitoring/table/MetricsViewDataSource.java
index 248eee0..db79dc0 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/resource/detail/monitoring/table/MetricsViewDataSource.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/coregui/client/inventory/resource/detail/monitoring/table/MetricsViewDataSource.java
@@ -24,6 +24,8 @@ import static org.rhq.core.domain.measurement.DataType.MEASUREMENT;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -351,7 +353,7 @@ public class MetricsViewDataSource extends
RPCDataSource<MetricDisplaySummary, C
private void queryResourceMetrics(final Resource resource, final Long startTime,
final Long endTime,
final CountDownLatch countDownLatch) {
- HashSet<MeasurementDefinition> definitions =
getMetricDefinitions(resource);
+ List<MeasurementDefinition> definitions = getMetricDefinitions(resource);
if (definitions.size() == 0) {
countDownLatch.countDown();
return;
@@ -366,22 +368,21 @@ public class MetricsViewDataSource extends
RPCDataSource<MetricDisplaySummary, C
}
}
- //build id mapping for measurementDefinition instances Ex. Free Memory ->
MeasurementDefinition[100071]
- final HashMap<String, MeasurementDefinition> measurementDefMap = new
HashMap<String, MeasurementDefinition>();
- for (MeasurementDefinition definition : definitions) {
- measurementDefMap.put(definition.getDisplayName(), definition);
- }
//bundle definition ids for asynch call.
definitionArrayIds = new int[definitions.size()];
- final String[] displayOrder = new String[definitions.size()];
- measurementDefMap.keySet().toArray(displayOrder);
+
//sort the charting data ex. Free Memory, Free Swap Space,..System Load
- Arrays.sort(displayOrder);
+ Collections.sort(definitions, new Comparator<MeasurementDefinition>() {
+ @Override
+ public int compare(MeasurementDefinition o1, MeasurementDefinition o2) {
+ return o1.getDisplayName().compareTo(o2.getDisplayName());
+ }
+ });
//organize definitionArrayIds for ordered request on server.
int index = 0;
- for (String definitionToDisplay : displayOrder) {
- definitionArrayIds[index++] =
measurementDefMap.get(definitionToDisplay).getId();
+ for (MeasurementDefinition definitionToDisplay : definitions) {
+ definitionArrayIds[index++] = definitionToDisplay.getId();
}
GWTServiceLookup.getMeasurementDataService().findDataForResource(resource.getId(),
definitionArrayIds,
@@ -405,8 +406,8 @@ public class MetricsViewDataSource extends
RPCDataSource<MetricDisplaySummary, C
}
- private HashSet<MeasurementDefinition> getMetricDefinitions(Resource resource)
{
- HashSet<MeasurementDefinition> definitions = new
HashSet<MeasurementDefinition>();
+ private List<MeasurementDefinition> getMetricDefinitions(Resource resource) {
+ List<MeasurementDefinition> definitions = new
ArrayList<MeasurementDefinition>();
for (MeasurementDefinition measurementDefinition :
resource.getResourceType().getMetricDefinitions()) {
if (measurementDefinition.getDataType() == MEASUREMENT ||
measurementDefinition.getDataType() == COMPLEX) {
definitions.add(measurementDefinition);
Show replies by date