@Override public boolean test(Object receiver, String property, Object[] args, Object expectedValue) { if (receiver instanceof JmxSensorValueData) { JmxSensorValueData jmxData = (JmxSensorValueData) receiver; if ("canChart".equals(property)) { return jmxData.isBooleanOrNumeric(); } } return false; }
/** * {@inheritDoc} */ @Override public void aggregate(JmxSensorValueData data) { if (!data.isBooleanOrNumeric()) { throw new RuntimeException("The given JMX data can not be aggregated."); } aggregationCount++; double valueToAggregate = data.getValueAsDouble(); minValue = Math.min(minValue, valueToAggregate); maxValue = Math.max(maxValue, valueToAggregate); totalValue += valueToAggregate; }
/** * Sets the {@link #value}. * * @param value * New value for {@link #value}. */ public void setValue(String value) { this.value = value; if ((aggregationCount <= 0) && isBooleanOrNumeric()) { double currentValue = getValueAsDouble(); aggregationCount = 1; minValue = currentValue; maxValue = currentValue; totalValue = currentValue; } }
/** * Check if the data if valid. We currently have following constraints: * * <ul> * <li>If {@link TimerData} instance then charting must be set * <li>If {@link JmxSensorValueData} instance then it must be boolean or numeric * </ul> * * @param defaultData * Data to check. * @return True if data should be used with the pointer and sent to influx. */ private boolean isValidData(DefaultData defaultData) { if ((defaultData instanceof TimerData) && !((TimerData) defaultData).isCharting()) { return false; } if ((defaultData instanceof JmxSensorValueData) && !((JmxSensorValueData) defaultData).isBooleanOrNumeric()) { return false; } if ((defaultData instanceof InvocationSequenceData) && (((InvocationSequenceData) defaultData).getParentSequence() != null)) { return false; } return true; }
return o1.getValue().compareTo(o2.getValue()); case CHARTING: return BooleanUtils.toBooleanObject(o1.isBooleanOrNumeric()).compareTo(o2.isBooleanOrNumeric()); default: break;