package rocks.inspectit.server.influx.builder;
import org.influxdb.dto.Point.Builder;
import org.springframework.stereotype.Component;
import rocks.inspectit.server.influx.constants.Series;
import rocks.inspectit.shared.all.cmr.model.MethodIdent;
import rocks.inspectit.shared.all.communication.data.TimerData;
/**
* Point builder for the {@link TimerData}.
*
* @author Ivan Senic
* @author Alexander Wert
*
*/
@Component
public class TimerPointBuilder extends DefaultDataPointBuilder<TimerData> {
/**
* {@inheritDoc}
*/
@Override
public Class<TimerData> getDataClass() {
return TimerData.class;
}
/**
* {@inheritDoc}
*/
@Override
protected String getSeriesName() {
return Series.Methods.NAME;
}
/**
* {@inheritDoc}
*/
@Override
protected void addTags(TimerData data, Builder builder) {
super.addTags(data, builder);
MethodIdent methodIdent = cachedDataService.getMethodIdentForId(data.getMethodIdent());
if (null != methodIdent) {
builder.tag(Series.Methods.TAG_METHOD_NAME, methodIdent.getMethodName());
builder.tag(Series.Methods.TAG_CLASS_FQN, methodIdent.getFQN());
builder.tag(Series.Methods.TAG_METHOD_SIGNATURE, methodIdent.getFullyQualifiedMethodSignature());
}
}
/**
* {@inheritDoc}
*/
@Override
protected void addFields(TimerData data, Builder builder) {
// fields
builder.addField(Series.Methods.FIELD_MIN_DURATION, data.getMin());
builder.addField(Series.Methods.FIELD_DURATION, data.getAverage());
builder.addField(Series.Methods.FIELD_MAX_DURATION, data.getMax());
builder.addField(Series.Methods.FIELD_MIN_CPU_TIME, data.getCpuMin());
builder.addField(Series.Methods.FIELD_CPU_TIME, data.getCpuAverage());
builder.addField(Series.Methods.FIELD_MAX_CPU_TIME, data.getCpuMax());
builder.addField(Series.Methods.FIELD_COUNT, data.getCount());
}
}