modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/MetricsResourceView.java
| 152 -------
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/MetricsTableView.java
| 177 ++------
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/ResourceMetricAvailabilityView.java
| 208 ++++++++++
3 files changed, 278 insertions(+), 259 deletions(-)
New commits:
commit 9cd21d169957e369a2b57972face734491f84d07
Author: Mike Thompson <mithomps(a)redhat.com>
Date: Tue Jul 16 15:01:37 2013 -0700
Consolidated Metrics - Add availability detail panel.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/MetricsResourceView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/MetricsResourceView.java
index 25603fe..9273e0b 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/MetricsResourceView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/MetricsResourceView.java
@@ -58,13 +58,14 @@ public class MetricsResourceView extends AbstractD3GraphListView {
private Img expandCollapseArrow;
private MetricsTableView metricsTableView;
private MetricsViewDataSource dataSource;
- private EnhancedHLayout availabilityDetails;
+ private ResourceMetricAvailabilityView availabilityDetails;
public MetricsResourceView(Resource resource) {
super();
this.resource = resource;
dataSource = new MetricsViewDataSource(resource);
metricsTableView = new MetricsTableView(resource, this);
+ availabilityDetails = new ResourceMetricAvailabilityView(resource);
}
private EnhancedHLayout createAvailabilityDetails() {
@@ -115,7 +116,6 @@ public class MetricsResourceView extends AbstractD3GraphListView {
}
});
- availabilityDetails = createAvailabilityDetails();
availabilityGraph = new
AvailabilityD3GraphView<AvailabilityOverUnderGraphType>(
new AvailabilityOverUnderGraphType(resource.getId()));
@@ -123,6 +123,7 @@ public class MetricsResourceView extends AbstractD3GraphListView {
expandCollapseHLayout.addMember(expandCollapseArrow);
expandCollapseHLayout.addMember(availabilityGraph);
vLayout.addMember(expandCollapseHLayout);
+ availabilityDetails.hide();
vLayout.addMember(availabilityDetails);
metricsTableView.setHeight100();
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/ResourceMetricAvailabilityView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/ResourceMetricAvailabilityView.java
new file mode 100644
index 0000000..9d6b892
--- /dev/null
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/ResourceMetricAvailabilityView.java
@@ -0,0 +1,208 @@
+/*
+ * RHQ Management Platform
+ * Copyright 2012, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+package
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.monitoring.table;
+
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.smartgwt.client.widgets.form.DynamicForm;
+import com.smartgwt.client.widgets.form.fields.FormItem;
+import com.smartgwt.client.widgets.form.fields.StaticTextItem;
+
+import org.rhq.core.domain.measurement.MeasurementUnits;
+import org.rhq.core.domain.resource.Resource;
+import org.rhq.core.domain.resource.composite.ResourceAvailabilitySummary;
+import org.rhq.enterprise.gui.coregui.client.CoreGUI;
+import org.rhq.enterprise.gui.coregui.client.components.table.TimestampCellFormatter;
+import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
+import org.rhq.enterprise.gui.coregui.client.util.MeasurementConverterClient;
+import org.rhq.enterprise.gui.coregui.client.util.enhanced.EnhancedVLayout;
+
+/**
+ * This shows the availability history for a resource.
+ *
+ * @author Jay Shaughnessy
+ * @author John Mazzitelli
+ * @author Mike Thompson
+ */
+public class ResourceMetricAvailabilityView extends EnhancedVLayout {
+
+ private Resource resource;
+ private StaticTextItem currentField;
+ private StaticTextItem availField;
+ private StaticTextItem availTimeField;
+ private StaticTextItem downField;
+ private StaticTextItem downTimeField;
+ private StaticTextItem disabledField;
+ private StaticTextItem disabledTimeField;
+ private StaticTextItem failureCountField;
+ private StaticTextItem disabledCountField;
+ private StaticTextItem mtbfField;
+ private StaticTextItem mttrField;
+ private StaticTextItem unknownField;
+ private StaticTextItem currentTimeField;
+
+ public ResourceMetricAvailabilityView(Resource resource) {
+ super();
+
+ this.resource = resource;
+
+ setWidth100();
+ setHeight(165);
+ }
+
+ @Override
+ protected void onInit() {
+ super.onInit();
+
+ addMember(createSummaryForm());
+ }
+
+ private DynamicForm createSummaryForm() {
+ DynamicForm form = new DynamicForm();
+ form.setWidth100();
+ form.setAutoHeight();
+ form.setMargin(10);
+ form.setNumCols(4);
+
+ // row 1
+ currentField = new StaticTextItem("current",
MSG.view_resource_monitor_availability_currentStatus());
+ currentField.setWrapTitle(false);
+ currentField.setColSpan(4);
+
+ // row 2
+ availField = new StaticTextItem("avail",
MSG.view_resource_monitor_availability_availability());
+ availField.setWrapTitle(false);
+ prepareTooltip(availField,
MSG.view_resource_monitor_availability_availability_tooltip());
+
+ availTimeField = new StaticTextItem("availTime",
MSG.view_resource_monitor_availability_uptime());
+ availTimeField.setWrapTitle(false);
+ prepareTooltip(availTimeField,
MSG.view_resource_monitor_availability_uptime_tooltip());
+
+ // row 3
+ downField = new StaticTextItem("down",
MSG.view_resource_monitor_availability_down());
+ downField.setWrapTitle(false);
+ prepareTooltip(downField,
MSG.view_resource_monitor_availability_down_tooltip());
+
+ downTimeField = new StaticTextItem("downTime",
MSG.view_resource_monitor_availability_downtime());
+ downTimeField.setWrapTitle(false);
+ prepareTooltip(downTimeField,
MSG.view_resource_monitor_availability_downtime_tooltip());
+
+ // row 4
+ disabledField = new StaticTextItem("disabled",
MSG.view_resource_monitor_availability_disabled());
+ disabledField.setWrapTitle(false);
+ prepareTooltip(disabledField,
MSG.view_resource_monitor_availability_disabled_tooltip());
+
+ disabledTimeField = new StaticTextItem("disabledTime",
MSG.view_resource_monitor_availability_disabledTime());
+ disabledTimeField.setWrapTitle(false);
+ prepareTooltip(disabledTimeField,
MSG.view_resource_monitor_availability_disabledTime_tooltip());
+
+ // row 5
+ failureCountField = new StaticTextItem("failureCount",
MSG.view_resource_monitor_availability_numFailures());
+ failureCountField.setWrapTitle(false);
+ prepareTooltip(failureCountField,
MSG.view_resource_monitor_availability_numFailures_tooltip());
+
+ disabledCountField = new StaticTextItem("disabledCount",
MSG.view_resource_monitor_availability_numDisabled());
+ disabledCountField.setWrapTitle(false);
+ prepareTooltip(disabledCountField,
MSG.view_resource_monitor_availability_numDisabled_tooltip());
+
+ // row 6
+ mtbfField = new StaticTextItem("mtbf",
MSG.view_resource_monitor_availability_mtbf());
+ mtbfField.setWrapTitle(false);
+ prepareTooltip(mtbfField,
MSG.view_resource_monitor_availability_mtbf_tooltip());
+
+ mttrField = new StaticTextItem("mttr",
MSG.view_resource_monitor_availability_mttr());
+ mttrField.setWrapTitle(false);
+ prepareTooltip(mttrField,
MSG.view_resource_monitor_availability_mttr_tooltip());
+
+ // row 7
+ unknownField = new StaticTextItem("unknown");
+ unknownField.setWrapTitle(false);
+ unknownField.setColSpan(4);
+ unknownField.setShowTitle(false);
+
+ // row 8
+ currentTimeField = new StaticTextItem("currentTime");
+ currentTimeField.setWrapTitle(false);
+ currentTimeField.setColSpan(4);
+ currentTimeField.setShowTitle(false);
+
+ form.setItems(currentField, availField, availTimeField, downField, downTimeField,
disabledField,
+ disabledTimeField, failureCountField, disabledCountField, mtbfField,
mttrField, unknownField,
+ currentTimeField);
+
+ reloadSummaryData();
+
+ return form;
+ }
+
+ private void reloadSummaryData() {
+
GWTServiceLookup.getResourceService().getResourceAvailabilitySummary(resource.getId(),
+ new AsyncCallback<ResourceAvailabilitySummary>() {
+
+ @Override
+ public void onSuccess(ResourceAvailabilitySummary result) {
+
+
currentField.setValue(MSG.view_resource_monitor_availability_currentStatus_value(result
+ .getCurrent().getName(),
TimestampCellFormatter.format(result.getLastChange().getTime())));
+
availField.setValue(MeasurementConverterClient.format(result.getUpPercentage(),
+ MeasurementUnits.PERCENTAGE, true));
+ availTimeField.setValue(MeasurementConverterClient.format((double)
result.getUpTime(),
+ MeasurementUnits.MILLISECONDS, true));
+
downField.setValue(MeasurementConverterClient.format(result.getDownPercentage(),
+ MeasurementUnits.PERCENTAGE, true));
+ downTimeField.setValue(MeasurementConverterClient.format((double)
result.getDownTime(),
+ MeasurementUnits.MILLISECONDS, true));
+
disabledField.setValue(MeasurementConverterClient.format(result.getDisabledPercentage(),
+ MeasurementUnits.PERCENTAGE, true));
+ disabledTimeField.setValue(MeasurementConverterClient.format((double)
result.getDisabledTime(),
+ MeasurementUnits.MILLISECONDS, true));
+ failureCountField.setValue(result.getFailures());
+ disabledCountField.setValue(result.getDisabled());
+ mtbfField.setValue(MeasurementConverterClient.format((double)
result.getMTBF(),
+ MeasurementUnits.MILLISECONDS, true));
+ mttrField.setValue(MeasurementConverterClient.format((double)
result.getMTTR(),
+ MeasurementUnits.MILLISECONDS, true));
+
+ if (result.getUnknownTime() > 0L) {
+
unknownField.setValue(MSG.view_resource_monitor_availability_unknown(MeasurementConverterClient
+ .format((double) result.getUnknownTime(),
MeasurementUnits.MILLISECONDS, true)));
+ } else {
+ unknownField.setValue("");
+ }
+
+
currentTimeField.setValue(MSG.view_resource_monitor_availability_currentAsOf(TimestampCellFormatter
+ .format(result.getCurrentTime())));
+ }
+
+ @Override
+ public void onFailure(Throwable caught) {
+ currentField.setValue(MSG.common_label_error());
+ CoreGUI.getErrorHandler()
+
.handleError(MSG.view_resource_monitor_availability_summaryError(), caught);
+ }
+ });
+ }
+
+ private void prepareTooltip(FormItem item, String tooltip) {
+ item.setHoverWidth(400);
+ item.setPrompt(tooltip);
+ }
+
+}
commit 46d64c5f157d18d2778fdec15909e25226513b6d
Author: Mike Thompson <mithomps(a)redhat.com>
Date: Tue Jul 16 08:50:36 2013 -0700
Consolidated Metrics - more availability work.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/MetricsResourceView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/MetricsResourceView.java
index e4785da..25603fe 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/MetricsResourceView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/MetricsResourceView.java
@@ -18,43 +18,27 @@
*/
package
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.monitoring.table;
-import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
-import java.util.Set;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.rpc.AsyncCallback;
-import com.smartgwt.client.types.ExpansionMode;
import com.smartgwt.client.types.Overflow;
import com.smartgwt.client.types.VerticalAlignment;
-import com.smartgwt.client.widgets.Canvas;
-import com.smartgwt.client.widgets.HTMLFlow;
import com.smartgwt.client.widgets.Img;
import com.smartgwt.client.widgets.Label;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
-import com.smartgwt.client.widgets.grid.ListGrid;
-import com.smartgwt.client.widgets.grid.ListGridField;
-import com.smartgwt.client.widgets.grid.ListGridRecord;
-import com.smartgwt.client.widgets.grid.events.RecordExpandEvent;
-import com.smartgwt.client.widgets.grid.events.RecordExpandHandler;
import com.smartgwt.client.widgets.layout.VLayout;
import org.rhq.core.domain.common.EntityContext;
import org.rhq.core.domain.measurement.Availability;
-import org.rhq.core.domain.measurement.MeasurementDefinition;
-import org.rhq.core.domain.measurement.composite.MeasurementDataNumericHighLowComposite;
import org.rhq.core.domain.resource.Resource;
-import org.rhq.core.domain.resource.ResourceType;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.IconEnum;
import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
import org.rhq.enterprise.gui.coregui.client.inventory.common.AbstractD3GraphListView;
import
org.rhq.enterprise.gui.coregui.client.inventory.common.graph.graphtype.AvailabilityOverUnderGraphType;
-import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.monitoring.MetricD3Graph;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.monitoring.avail.AvailabilityD3GraphView;
-import org.rhq.enterprise.gui.coregui.client.util.BrowserUtility;
import org.rhq.enterprise.gui.coregui.client.util.Log;
import org.rhq.enterprise.gui.coregui.client.util.async.CountDownLatch;
import org.rhq.enterprise.gui.coregui.client.util.enhanced.EnhancedHLayout;
@@ -70,40 +54,17 @@ public class MetricsResourceView extends AbstractD3GraphListView {
private static final String EXPANDED_TOOLTIP = MSG.chart_metrics_expand_tooltip();
private Resource resource;
- private Set<Integer> definitionIds = null;
private VLayout vLayout;
private Img expandCollapseArrow;
- MetricsTableListGrid metricsGrid;
- MetricsViewDataSource dataSource;
- EnhancedHLayout availabilityDetails;
-
+ private MetricsTableView metricsTableView;
+ private MetricsViewDataSource dataSource;
+ private EnhancedHLayout availabilityDetails;
public MetricsResourceView(Resource resource) {
super();
this.resource = resource;
dataSource = new MetricsViewDataSource(resource);
- metricsGrid = new MetricsTableListGrid();
-
- ArrayList<ListGridField> fields = dataSource.getListGridFields();
- metricsGrid.setFields(fields.toArray(new ListGridField[0]));
- metricsGrid.setCanExpandRecords(true);
- metricsGrid.addRecordExpandHandler(new RecordExpandHandler() {
- @Override
- public void onRecordExpand(RecordExpandEvent recordExpandEvent) {
- Log.debug("Record Expanded: "
- +
recordExpandEvent.getRecord().getAttribute(MetricsViewDataSource.FIELD_METRIC_LABEL));
- new Timer() {
-
- @Override
- public void run() {
- BrowserUtility.graphSparkLines();
- }
- }.schedule(150);
-
- }
-
- });
-
+ metricsTableView = new MetricsTableView(resource, this);
}
private EnhancedHLayout createAvailabilityDetails() {
@@ -123,11 +84,10 @@ public class MetricsResourceView extends AbstractD3GraphListView {
Log.debug("MetricResourceView.onDraw() for: " + resource.getName() +
" id: " + resource.getId());
destroyMembers();
-
vLayout = new VLayout();
vLayout.setOverflow(Overflow.AUTO);
vLayout.setWidth100();
- vLayout.setHeight(220);
+ vLayout.setHeight100();
vLayout.addMember(buttonBarDateTimeRangeEditor);
EnhancedHLayout expandCollapseHLayout = new EnhancedHLayout();
@@ -146,8 +106,7 @@ public class MetricsResourceView extends AbstractD3GraphListView {
expandCollapseArrow.setSrc(IconEnum.COLLAPSED_ICON.getIcon16x16Path());
expandCollapseArrow.setTooltip(COLLAPSED_TOOLTIP);
availabilityDetails.hide();
- }
- else {
+ } else {
expandCollapseArrow.setSrc(IconEnum.EXPANDED_ICON.getIcon16x16Path());
expandCollapseArrow.setTooltip(EXPANDED_TOOLTIP);
availabilityDetails.show();
@@ -166,13 +125,14 @@ public class MetricsResourceView extends AbstractD3GraphListView {
vLayout.addMember(expandCollapseHLayout);
vLayout.addMember(availabilityDetails);
- vLayout.addMember(metricsGrid);
+ metricsTableView.setHeight100();
+ vLayout.addMember(metricsTableView);
addMember(vLayout);
if (resource != null) {
queryAvailability(EntityContext.forResource(resource.getId()),
buttonBarDateTimeRangeEditor.getStartTime(),
- buttonBarDateTimeRangeEditor.getEndTime(), null);
+ buttonBarDateTimeRangeEditor.getEndTime(), null);
}
}
@@ -212,95 +172,4 @@ public class MetricsResourceView extends AbstractD3GraphListView {
});
}
- private class MetricsTableListGrid extends ListGrid {
- public MetricsTableListGrid() {
- super();
-
- setCanExpandRecords(true);
- setCanExpandMultipleRecords(true);
- setExpansionMode(ExpansionMode.DETAIL_FIELD);
- }
-
- @Override
- protected Canvas getExpansionComponent(final ListGridRecord record) {
- final Integer definitionId =
record.getAttributeAsInt(MetricsViewDataSource.FIELD_METRIC_DEF_ID);
- final Integer resourceId =
record.getAttributeAsInt(MetricsViewDataSource.FIELD_RESOURCE_ID);
- VLayout vLayout = new VLayout();
- vLayout.setPadding(5);
-
- final String chartId = "rChart" + resourceId + "-" +
definitionId;
- HTMLFlow htmlFlow = new
HTMLFlow(MetricD3Graph.createGraphMarkerTemplate(chartId, 200));
- vLayout.addMember(htmlFlow);
-
- new Timer() {
-
- @Override
- public void run() {
- BrowserUtility.graphSparkLines();
- }
- }.schedule(150);
-
-
- // Load the fully fetched ResourceType.
- ResourceType resourceType = resource.getResourceType();
-
- Set<MeasurementDefinition> definitions =
resourceType.getMetricDefinitions();
- final MeasurementDefinition measurementDefinition;
-
- //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);
- if (definition.getId() == definitionId) {
- measurementDefinition = definition;
- break;
- }
- }
-
- int[] definitionArrayIds = new int[1];
- definitionArrayIds[0] = definitionId;
- GWTServiceLookup.getMeasurementDataService().findDataForResource(resourceId,
definitionArrayIds,
- measurementUserPrefs.getMetricRangePreferences().begin,
- measurementUserPrefs.getMetricRangePreferences().end, 60,
- new
AsyncCallback<List<List<MeasurementDataNumericHighLowComposite>>>() {
- @Override
- public void onFailure(Throwable caught) {
- Log.debug("Error retrieving recent metrics charting data for
resource [" + resourceId + "]:"
- + caught.getMessage());
- }
-
- @Override
- public void
onSuccess(List<List<MeasurementDataNumericHighLowComposite>> results) {
- if (!results.isEmpty()) {
-
- //load the data results for the given metric definition
- List<MeasurementDataNumericHighLowComposite> data =
results.get(0);
- Log.debug(" *** Metric Data Results:
"+data.size());
-
-//
MetricGraphData metricGraphData = MetricGraphData
-//
.createForResource(resourceId, resource.getName(),
-//
measurementDefinition, data, null);
-//
-//
StackedBarMetricGraphImpl graph = GWT
-//
.create(StackedBarMetricGraphImpl.class);
-//
graph.setMetricGraphData(metricGraphData);
-//
final MetricD3Graph graphView = new MetricD3Graph(graph, this);
-// new
Timer() {
-//
@Override
-//
public void run() {
-//
graphView.drawJsniChart();
-//
-//
}
-//
}.schedule(150);
-
- } else {
- Log.warn("No chart data retrieving for resource ["
+ resourceId + "]");
-
- }
- }
- });
-
- return vLayout;
- }
- }
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/MetricsTableView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/MetricsTableView.java
index 82fe2d2..3cb9233 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/MetricsTableView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/inventory/resource/detail/monitoring/table/MetricsTableView.java
@@ -22,7 +22,6 @@ package
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.monitori
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
-import java.util.EnumSet;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -45,26 +44,21 @@ import com.smartgwt.client.widgets.grid.events.RecordExpandEvent;
import com.smartgwt.client.widgets.grid.events.RecordExpandHandler;
import com.smartgwt.client.widgets.layout.VLayout;
-import org.rhq.core.domain.criteria.ResourceCriteria;
import org.rhq.core.domain.measurement.MeasurementData;
import org.rhq.core.domain.measurement.MeasurementDefinition;
import org.rhq.core.domain.measurement.MeasurementUnits;
import org.rhq.core.domain.measurement.composite.MeasurementDataNumericHighLowComposite;
import org.rhq.core.domain.resource.Resource;
-import org.rhq.core.domain.resource.ResourceType;
-import org.rhq.core.domain.resource.composite.ResourceComposite;
-import org.rhq.core.domain.util.PageList;
import org.rhq.enterprise.gui.coregui.client.CoreGUI;
import org.rhq.enterprise.gui.coregui.client.UserSessionManager;
import org.rhq.enterprise.gui.coregui.client.components.table.Table;
import org.rhq.enterprise.gui.coregui.client.components.table.TableAction;
import org.rhq.enterprise.gui.coregui.client.gwt.GWTServiceLookup;
-import
org.rhq.enterprise.gui.coregui.client.inventory.common.graph.ButtonBarDateTimeRangeEditor;
+import org.rhq.enterprise.gui.coregui.client.inventory.common.AbstractD3GraphListView;
import org.rhq.enterprise.gui.coregui.client.inventory.common.graph.MetricGraphData;
import org.rhq.enterprise.gui.coregui.client.inventory.common.graph.RedrawGraphs;
import
org.rhq.enterprise.gui.coregui.client.inventory.common.graph.graphtype.StackedBarMetricGraphImpl;
import
org.rhq.enterprise.gui.coregui.client.inventory.resource.detail.monitoring.MetricD3Graph;
-import
org.rhq.enterprise.gui.coregui.client.inventory.resource.type.ResourceTypeRepository;
import org.rhq.enterprise.gui.coregui.client.util.BrowserUtility;
import org.rhq.enterprise.gui.coregui.client.util.Log;
import org.rhq.enterprise.gui.coregui.client.util.MeasurementConverterClient;
@@ -76,20 +70,19 @@ import
org.rhq.enterprise.gui.coregui.client.util.preferences.MeasurementUserPre
* @author John Mazzitelli
* @author Mike Thompson
*/
-@Deprecated
-public class MetricsTableView extends Table<MetricsTableDataSource> implements
RedrawGraphs {
+public class MetricsTableView extends Table<MetricsViewDataSource> implements
RedrawGraphs {
- private final int resourceId;
+ private final Resource resource;
+ private final AbstractD3GraphListView abstractD3GraphListView;
private MeasurementUserPreferences measurementUserPrefs;
- private ButtonBarDateTimeRangeEditor buttonBarDateTimeRangeEditor;
- public MetricsTableView(int resourceId) {
+ public MetricsTableView(Resource resource, AbstractD3GraphListView
abstractD3GraphListView) {
super();
- this.resourceId = resourceId;
- setDataSource(new MetricsTableDataSource(resourceId));
+ this.resource = resource;
+ this.abstractD3GraphListView = abstractD3GraphListView;
+ setDataSource(new MetricsViewDataSource(resource));
measurementUserPrefs = new
MeasurementUserPreferences(UserSessionManager.getUserPreferences());
- buttonBarDateTimeRangeEditor = new
ButtonBarDateTimeRangeEditor(measurementUserPrefs, this);
}
/**
@@ -100,7 +93,7 @@ public class MetricsTableView extends
Table<MetricsTableDataSource> implements R
*/
@Override
protected ListGrid createListGrid() {
- return new MetricsTableListGrid();
+ return new MetricsTableListGrid(resource);
}
protected void configureTable() {
@@ -111,7 +104,7 @@ public class MetricsTableView extends
Table<MetricsTableDataSource> implements R
@Override
public void onRecordExpand(RecordExpandEvent recordExpandEvent) {
Log.debug("Record Expanded: "
- +
recordExpandEvent.getRecord().getAttribute(MetricsTableDataSource.FIELD_METRIC_LABEL));
+ +
recordExpandEvent.getRecord().getAttribute(MetricsViewDataSource.FIELD_METRIC_LABEL));
new Timer() {
@Override
@@ -124,9 +117,8 @@ public class MetricsTableView extends
Table<MetricsTableDataSource> implements R
});
- addExtraWidget(buttonBarDateTimeRangeEditor, true);
addTableAction(MSG.view_measureTable_getLive(), new
ShowLiveDataTableAction(this));
- addTableAction(MSG.view_measureTable_addToDashboard(), new
AddToDashboardTableAction(this));
+ //addTableAction(MSG.view_measureTable_addToDashboard(), new
AddToDashboardTableAction(this));
}
@@ -152,12 +144,12 @@ public class MetricsTableView extends
Table<MetricsTableDataSource> implements R
int[] definitionIds = new int[selection.length];
int i = 0;
for (ListGridRecord record : selection) {
- Integer defId =
record.getAttributeAsInt(MetricsTableDataSource.FIELD_METRIC_DEF_ID);
+ Integer defId =
record.getAttributeAsInt(MetricsViewDataSource.FIELD_METRIC_DEF_ID);
definitionIds[i++] = defId;
- String name =
record.getAttribute(MetricsTableDataSource.FIELD_METRIC_NAME);
- String label =
record.getAttribute(MetricsTableDataSource.FIELD_METRIC_LABEL);
- String units =
record.getAttribute(MetricsTableDataSource.FIELD_METRIC_UNITS);
+ String name =
record.getAttribute(MetricsViewDataSource.FIELD_METRIC_NAME);
+ String label =
record.getAttribute(MetricsViewDataSource.FIELD_METRIC_LABEL);
+ String units =
record.getAttribute(MetricsViewDataSource.FIELD_METRIC_UNITS);
if (units == null || units.length() < 1) {
units = MeasurementUnits.NONE.name();
}
@@ -166,8 +158,8 @@ public class MetricsTableView extends
Table<MetricsTableDataSource> implements R
}
// actually go out and ask the agents for the data
-
GWTServiceLookup.getMeasurementDataService(60000).findLiveData(metricsTableView.resourceId,
definitionIds,
- new AsyncCallback<Set<MeasurementData>>() {
+
GWTServiceLookup.getMeasurementDataService(60000).findLiveData(metricsTableView.resource.getId(),
+ definitionIds, new AsyncCallback<Set<MeasurementData>>() {
@Override
public void onSuccess(Set<MeasurementData> result) {
if (result == null) {
@@ -281,9 +273,14 @@ public class MetricsTableView extends
Table<MetricsTableDataSource> implements R
}
private class MetricsTableListGrid extends ListGrid {
- public MetricsTableListGrid() {
- super();
+ private static final int TREEVIEW_DETAIL_CHART_HEIGHT = 205;
+ private static final int NUM_METRIC_POINTS = 60;
+ private Resource resource;
+
+ public MetricsTableListGrid(Resource resource) {
+ super();
+ this.resource = resource;
setCanExpandRecords(true);
setCanExpandMultipleRecords(true);
setExpansionMode(ExpansionMode.DETAIL_FIELD);
@@ -291,116 +288,60 @@ public class MetricsTableView extends
Table<MetricsTableDataSource> implements R
@Override
protected Canvas getExpansionComponent(final ListGridRecord record) {
- final Integer definitionId =
record.getAttributeAsInt(MetricsTableDataSource.FIELD_METRIC_DEF_ID);
- final Integer resourceId =
record.getAttributeAsInt(MetricsTableDataSource.FIELD_RESOURCE_ID);
+ final Integer definitionId =
record.getAttributeAsInt(MetricsViewDataSource.FIELD_METRIC_DEF_ID);
+ final Integer resourceId =
record.getAttributeAsInt(MetricsViewDataSource.FIELD_RESOURCE_ID);
VLayout vLayout = new VLayout();
vLayout.setPadding(5);
- final String chartId = "rChart" + resourceId + "-" +
definitionId;
- HTMLFlow htmlFlow = new
HTMLFlow(MetricD3Graph.createGraphMarkerTemplate(chartId, 200));
+ final String chartId = "rChart-" + resourceId + "-" +
definitionId;
+ Log.debug("getExpansionComponent for: " + chartId);
+ HTMLFlow htmlFlow = new
HTMLFlow(MetricD3Graph.createGraphMarkerTemplate(chartId, TREEVIEW_DETAIL_CHART_HEIGHT));
vLayout.addMember(htmlFlow);
- //locate resource reference
- ResourceCriteria criteria = new ResourceCriteria();
- criteria.addFilterId(resourceId);
-
- //locate the resource
-
GWTServiceLookup.getResourceService().findResourceCompositesByCriteria(criteria,
- new AsyncCallback<PageList<ResourceComposite>>() {
+ int[] definitionArrayIds = new int[1];
+ definitionArrayIds[0] = definitionId;
+ GWTServiceLookup.getMeasurementDataService().findDataForResource(resourceId,
definitionArrayIds,
+ measurementUserPrefs.getMetricRangePreferences().begin,
+ measurementUserPrefs.getMetricRangePreferences().end, NUM_METRIC_POINTS,
+ new
AsyncCallback<List<List<MeasurementDataNumericHighLowComposite>>>() {
@Override
public void onFailure(Throwable caught) {
- Log.debug("Error retrieving resource resource composite for
resource [" + resourceId + "]:"
+ Log.debug("Error retrieving recent metrics charting data for
resource [" + resourceId + "]:"
+ caught.getMessage());
}
@Override
- public void onSuccess(PageList<ResourceComposite> results) {
+ public void
onSuccess(List<List<MeasurementDataNumericHighLowComposite>> results) {
if (!results.isEmpty()) {
- new Timer() {
+ //load the data results for the given metric definition
+ List<MeasurementDataNumericHighLowComposite>
measurementList = results.get(0);
+ Log.debug("getExpansionComponent MeasurementList.size:
" + measurementList.size());
+ MeasurementDefinition measurementDefinition = null;
+ for (MeasurementDefinition definition :
resource.getResourceType().getMetricDefinitions()) {
+ if (definition.getId() == definitionId) {
+ measurementDefinition = definition;
+ break;
+ }
+ }
+
+ MetricGraphData metricGraphData =
MetricGraphData.createForResource(resourceId,
+ resource.getName(), measurementDefinition,
measurementList, null);
+
+ StackedBarMetricGraphImpl graph =
GWT.create(StackedBarMetricGraphImpl.class);
+ graph.setMetricGraphData(metricGraphData);
+ final MetricD3Graph graphView = new MetricD3Graph(graph,
abstractD3GraphListView);
+ new Timer() {
@Override
public void run() {
- BrowserUtility.graphSparkLines();
+ graphView.drawJsniChart();
+
}
}.schedule(150);
- final Resource resource = results.get(0).getResource();
- //D3GraphListView graphListView =
D3GraphListView.createSingleGraph(resource, definitionId, false);
-
- // Load the fully fetched ResourceType.
- ResourceType resourceType = resource.getResourceType();
- ResourceTypeRepository.Cache.getInstance().getResourceTypes(
- resourceType.getId(),
- EnumSet.of(ResourceTypeRepository.MetadataType.content,
- ResourceTypeRepository.MetadataType.operations,
- ResourceTypeRepository.MetadataType.measurements,
- ResourceTypeRepository.MetadataType.events,
-
ResourceTypeRepository.MetadataType.resourceConfigurationDefinition),
- new ResourceTypeRepository.TypeLoadedCallback() {
- public void onTypesLoaded(ResourceType type) {
- resource.setResourceType(type);
- //metric definitions
- Set<MeasurementDefinition> definitions =
type.getMetricDefinitions();
- final MeasurementDefinition
measurementDefinition;
-
- //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);
- if (definition.getId() == definitionId) {
- measurementDefinition = definition;
- break;
- }
- }
-
- int[] definitionArrayIds = new int[1];
- definitionArrayIds[0] = definitionId;
-
GWTServiceLookup.getMeasurementDataService().findDataForResource(resourceId,
- definitionArrayIds,
measurementUserPrefs.getMetricRangePreferences().begin,
-
measurementUserPrefs.getMetricRangePreferences().end, 60,
- new
AsyncCallback<List<List<MeasurementDataNumericHighLowComposite>>>() {
- @Override
- public void onFailure(Throwable caught)
{
- Log.debug("Error retrieving
recent metrics charting data for resource ["
- + resourceId + "]:" +
caught.getMessage());
- }
-
- @Override
- public void onSuccess(
-
List<List<MeasurementDataNumericHighLowComposite>> results) {
- if (!results.isEmpty()) {
-
- //load the data results for the
given metric definition
-
List<MeasurementDataNumericHighLowComposite> data = results
- .get(0);
-
-// MetricGraphData metricGraphData
= MetricGraphData
-//
.createForResource(resourceId, resource.getName(),
-// measurementDefinition,
data, null);
-//
-// StackedBarMetricGraphImpl graph
= GWT
-//
.create(StackedBarMetricGraphImpl.class);
-//
graph.setMetricGraphData(metricGraphData);
-// final MetricD3Graph graphView =
new MetricD3Graph(graph, this);
-// new Timer() {
-// @Override
-// public void run() {
-//
graphView.drawJsniChart();
-//
-// }
-// }.schedule(150);
-
- } else {
- Log.warn("No chart data
retrieving for resource [" + resourceId
- + "]");
-
- }
- }
- });
-
- }
- });
+ } else {
+ Log.warn("No chart data retrieving for resource ["
+ resourceId + "-"+definitionId+"]");
}
}