patterntesting.runtime.monitor.db.SqlStatistic Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of patterntesting-rt Show documentation
Show all versions of patterntesting-rt Show documentation
PatternTesting Runtime (patterntesting-rt) is the runtime component for
the PatternTesting framework. It provides the annotations and base classes
for the PatternTesting testing framework (e.g. patterntesting-check,
patterntesting-concurrent or patterntesting-exception) but can be also
used standalone for classpath monitoring or profiling.
It uses AOP and AspectJ to perform this feat.
/*
* $Id: SqlStatistic.java,v 1.5 2014/04/23 14:45:48 oboehm Exp $
*
* Copyright (c) 2014 by Oliver Boehm
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express orimplied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* (c)reated 16.04.2014 by oliver ([email protected])
*/
package patterntesting.runtime.monitor.db;
import patterntesting.runtime.monitor.*;
/**
* This class monitors and measures SQL statements. To be able to distinguish
* them from methods profiling it is a separate class derived from
* {@link ProfileStatistic}.
*
* @author oliver
* @since 1.4.2 (16.04.2014)
*/
public class SqlStatistic extends ProfileStatistic implements SqlStatisticMBean {
private static final SqlStatistic sqlInstance;
/**
* rootMonitor *must* be initialized before isJamonAvailable() is called.
* Otherwise you'll get a NullPointerException because in
* JamonAvailable() rootMonitor will be accessed (so rootMonitor must
* be initialized before!)
*/
static {
sqlInstance = new SqlStatistic();
}
/**
* Gets the single instance of SqlStatistic.
*
* @return single instance of SqlStatistic
*/
public static SqlStatistic getInstance() {
return sqlInstance;
}
private SqlStatistic() {
super("SQL");
}
/**
* To start a new statistic call this method. In contradiction to
* {@link ProfileStatistic#reset()} old {@link ProfileMonitor}s will be not
* kept.
*/
public void reset() {
synchronized(SqlStatistic.class) {
this.resetRootMonitor();
}
}
/**
* Start.
*
* @param sql the sql
* @return the started profile monitor
*/
public static ProfileMonitor start(final String sql) {
return sqlInstance.startProfileMonitorFor(sql);
}
/**
* You can register the instance as shutdown hook. If the VM is
* terminated the profile values are logged and dumped to a CSV file in the
* tmp directory.
*
* @see #logStatistic()
* @see #dumpStatistic()
*/
public static void addAsShutdownHook() {
addAsShutdownHook(sqlInstance);
}
}