package com.codahale.metrics.jdbi3;

import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.jdbi3.strategies.SmartNameStrategy;
import com.codahale.metrics.jdbi3.strategies.StatementNameStrategy;
import org.jdbi.v3.core.statement.SqlLogger;
import org.jdbi.v3.core.statement.StatementContext;
import org.jdbi.v3.core.statement.TimingCollector;

import java.util.concurrent.TimeUnit;

A TimingCollector implementation for JDBI which uses the SQL objects' class names and method names for millisecond-precision timers.
Deprecated:Use InstrumentedSqlLogger and Configurable<Jdbi>.setSqlLogger(SqlLogger) instead.
/** * A {@link TimingCollector} implementation for JDBI which uses the SQL objects' class names and * method names for millisecond-precision timers. * * @deprecated Use {@link InstrumentedSqlLogger} and {@link org.jdbi.v3.core.Jdbi#setSqlLogger(SqlLogger)} instead. */
@Deprecated public class InstrumentedTimingCollector implements TimingCollector { private final MetricRegistry registry; private final StatementNameStrategy statementNameStrategy; public InstrumentedTimingCollector(MetricRegistry registry) { this(registry, new SmartNameStrategy()); } public InstrumentedTimingCollector(MetricRegistry registry, StatementNameStrategy statementNameStrategy) { this.registry = registry; this.statementNameStrategy = statementNameStrategy; } @Override public void collect(long elapsedTime, StatementContext ctx) { String statementName = statementNameStrategy.getStatementName(ctx); if (statementName != null) { registry.timer(statementName).update(elapsedTime, TimeUnit.NANOSECONDS); } } }