/* * 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.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.AvailabilityType; import org.rhq.core.domain.measurement.MeasurementUnits; import org.rhq.core.domain.resource.composite.ResourceAvailabilitySummary; import org.rhq.coregui.client.CoreGUI; import org.rhq.coregui.client.components.table.TimestampCellFormatter; import org.rhq.coregui.client.gwt.GWTServiceLookup; import org.rhq.coregui.client.util.MeasurementConverterClient; import org.rhq.coregui.client.util.enhanced.EnhancedVLayout; /** * This shows the availability history for a resource. * * @author Jay Shaughnessy * @author John Mazzitelli * @author Mike Thompson */ public class MetricAvailabilityView extends EnhancedVLayout { private int resourceId; 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 MetricAvailabilityView(int resourceId) { super(); this.resourceId = resourceId; 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.common_title_availability()); availField.setWrapTitle(false); prepareTooltip(availField, MSG.view_resource_monitor_availability_tooltip_up()); 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.common_status_avail_down_lower()); downField.setWrapTitle(false); prepareTooltip(downField, MSG.view_resource_monitor_availability_tooltip_down()); 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.common_status_avail_disabled_lower()); disabledField.setWrapTitle(false); prepareTooltip(disabledField, MSG.view_resource_monitor_availability_tooltip_disabled()); 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(resourceId, new AsyncCallback<ResourceAvailabilitySummary>() { @Override public void onSuccess(ResourceAvailabilitySummary result) { currentField.setValue(MSG.view_resource_monitor_availability_currentStatus_value( getAvailabilityTypeMessage(result.getCurrent()), 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 String getAvailabilityTypeMessage(AvailabilityType availabilityType) { switch (availabilityType) { case UP: return MSG.common_status_avail_up(); case DOWN: return MSG.common_status_avail_down(); case DISABLED: return MSG.common_status_avail_disabled(); case UNKNOWN: default: return MSG.common_status_avail_unknown(); } } private void prepareTooltip(FormItem item, String tooltip) { item.setHoverWidth(400); item.setPrompt(tooltip); } }