
com.librato.metrics.SingleValueGaugeMeasurement Maven / Gradle / Ivy
package com.librato.metrics;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import static com.librato.metrics.Preconditions.checkNotNull;
import static com.librato.metrics.Preconditions.checkNumeric;
/**
* A class representing a single gauge reading
*
* See http://dev.librato.com/v1/post/metrics for an explanation of basic vs multi-sample gauge
*/
public class SingleValueGaugeMeasurement implements Measurement {
private static final Map emptyAttributes = Collections.emptyMap();
private final Number period;
private final String source;
private final String name;
private final Number reading;
private final Map metricAttributes;
private Long measureTime;
public static SingleValueGaugeMeasurementBuilder builder(String name, Number reading) {
return new SingleValueGaugeMeasurementBuilder(name, reading);
}
public SingleValueGaugeMeasurement(String name, Number reading) {
this(null, null, name, reading);
}
public SingleValueGaugeMeasurement(String source, String name, Number reading) {
this(source, null, name, reading);
}
public SingleValueGaugeMeasurement(String source, Number period, String name, Number reading) {
this(source, period, name, reading, emptyAttributes, null);
}
public SingleValueGaugeMeasurement(String source, Number period, String name, Number reading, Map metricAttributes, Long measureTime) {
try {
this.source = source;
this.period = period;
this.name = checkNotNull(name);
this.reading = checkNumeric(checkNumeric(reading));
this.metricAttributes = metricAttributes;
this.measureTime = measureTime;
} catch (Exception e) {
throw new IllegalArgumentException("Invalid single-gauge measurement name=" + name, e);
}
}
public Long getMeasureTime() {
return measureTime;
}
public Map getMetricAttributes() {
return metricAttributes;
}
public String getSource() {
return source;
}
public String getName() {
return name;
}
public Number getPeriod() {
return period;
}
public Map toMap() {
final Map value = new HashMap(1);
value.put("value", reading);
return value;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy