Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or .
*/
package org.hibernate.cache.ehcache.management.impl;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.management.openmbean.CompositeData;
import javax.management.openmbean.CompositeDataSupport;
import javax.management.openmbean.CompositeType;
import javax.management.openmbean.OpenDataException;
import javax.management.openmbean.OpenType;
import javax.management.openmbean.SimpleType;
import javax.management.openmbean.TabularData;
import javax.management.openmbean.TabularDataSupport;
import javax.management.openmbean.TabularType;
import org.hibernate.stat.QueryStatistics;
/**
* Represent point in time state of the query stats of a given query
*
* @author gkeim
* @author Alex Snaps
*/
public class QueryStats implements Serializable {
private static final String COMPOSITE_TYPE_NAME = "QueryStats";
private static final String COMPOSITE_TYPE_DESCRIPTION = "Statistics per Query";
private static final String[] ITEM_NAMES = new String[] {
"query", "cacheHitCount",
"cacheMissCount",
"cachePutCount",
"executionCount",
"executionRowCount",
"executionAvgTime",
"executionMaxTime",
"executionMinTime",
};
private static final String[] ITEM_DESCRIPTIONS = new String[] {
"query", "cacheHitCount",
"cacheMissCount",
"cachePutCount",
"executionCount",
"executionRowCount",
"executionAvgTime",
"executionMaxTime",
"executionMinTime",
};
private static final OpenType[] ITEM_TYPES = new OpenType[] {
SimpleType.STRING, SimpleType.LONG,
SimpleType.LONG, SimpleType.LONG, SimpleType.LONG, SimpleType.LONG, SimpleType.LONG, SimpleType.LONG,
SimpleType.LONG,
};
private static final CompositeType COMPOSITE_TYPE;
private static final String TABULAR_TYPE_NAME = "Statistics by Query";
private static final String TABULAR_TYPE_DESCRIPTION = "All Query Statistics";
private static final String[] INDEX_NAMES = new String[] {"query",};
private static final TabularType TABULAR_TYPE;
static {
try {
COMPOSITE_TYPE = new CompositeType(
COMPOSITE_TYPE_NAME, COMPOSITE_TYPE_DESCRIPTION, ITEM_NAMES,
ITEM_DESCRIPTIONS, ITEM_TYPES
);
TABULAR_TYPE = new TabularType( TABULAR_TYPE_NAME, TABULAR_TYPE_DESCRIPTION, COMPOSITE_TYPE, INDEX_NAMES );
}
catch (OpenDataException e) {
throw new RuntimeException( e );
}
}
/**
* query
*/
protected final String query;
/**
* cacheHitCount
*/
protected long cacheHitCount;
/**
* cacheMissCount
*/
protected long cacheMissCount;
/**
* cachePutCount
*/
protected long cachePutCount;
/**
* executionCount
*/
protected long executionCount;
/**
* executionRowCount
*/
protected long executionRowCount;
/**
* executionAvgTime
*/
protected long executionAvgTime;
/**
* executionMaxTime
*/
protected long executionMaxTime;
/**
* executionMinTime
*/
protected long executionMinTime;
/**
* Constructor
* @param name the query string
*/
public QueryStats(String name) {
this.query = name;
}
/**
* Constructor
* @param name the query string
* @param src the source of the stats to this query
*/
public QueryStats(String name, QueryStatistics src) {
this( name );
try {
this.cacheHitCount = BeanUtils.getLongBeanProperty( src, "cacheHitCount" );
this.cacheMissCount = BeanUtils.getLongBeanProperty( src, "cacheMissCount" );
this.cachePutCount = BeanUtils.getLongBeanProperty( src, "cachePutCount" );
this.executionCount = BeanUtils.getLongBeanProperty( src, "executionCount" );
this.executionRowCount = BeanUtils.getLongBeanProperty( src, "executionRowCount" );
this.executionAvgTime = BeanUtils.getLongBeanProperty( src, "executionAvgTime" );
this.executionMaxTime = BeanUtils.getLongBeanProperty( src, "executionMaxTime" );
this.executionMinTime =
BeanUtils.getLongBeanProperty( src, "executionMinTime" );
}
catch (Exception e) {
e.printStackTrace();
throw new RuntimeException( "Exception retrieving statistics", e );
}
}
/**
* Constructor
* @param cData CompositeDate to construct an instance from
*/
@SuppressWarnings("UnusedAssignment")
public QueryStats(final CompositeData cData) {
int i = 0;
query = (String) cData.get( ITEM_NAMES[i++] );
cacheHitCount = (Long) cData.get( ITEM_NAMES[i++] );
cacheMissCount = (Long) cData.get( ITEM_NAMES[i++] );
cachePutCount = (Long) cData.get( ITEM_NAMES[i++] );
executionCount = (Long) cData.get( ITEM_NAMES[i++] );
executionRowCount = (Long) cData.get( ITEM_NAMES[i++] );
executionAvgTime = (Long) cData.get( ITEM_NAMES[i++] );
executionMaxTime = (Long) cData.get( ITEM_NAMES[i++] );
executionMinTime = (Long) cData.get( ITEM_NAMES[i++] );
}
/**
* Adds to the counter of this instance
* @param stats the counters to add to these ones
*/
public void add(QueryStats stats) {
cacheHitCount += stats.getCacheHitCount();
cacheMissCount += stats.getCacheMissCount();
cachePutCount += stats.getCachePutCount();
executionCount += stats.getExecutionCount();
executionRowCount += stats.getExecutionRowCount();
executionAvgTime += stats.getExecutionAvgTime();
executionMaxTime += stats.getExecutionMaxTime();
executionMinTime += stats.getExecutionMinTime();
}
@Override
public String toString() {
return "query=" + query + ", cacheHitCount=" + cacheHitCount + ", cacheMissCount=" + cacheMissCount
+ ", cachePutCount=" + cachePutCount + ", executionCount=" + executionCount + ", executionRowCount="
+ executionRowCount + ", executionAvgTime=" + executionAvgTime + ", executionMaxTime=" + executionMaxTime
+ ", executionMinTime=" + executionMinTime;
}
/**
* Accessor to the queryString
* @return the query string
*/
@SuppressWarnings("UnusedDeclaration")
public String getQuery() {
return query;
}
/**
* The amount of hits for this query
* @return the hit count
*/
public long getCacheHitCount() {
return cacheHitCount;
}
/**
* The amount of misses for this query
* @return the miss count
*/
public long getCacheMissCount() {
return cacheMissCount;
}
/**
* The amount of puts for this query
* @return the put count
*/
public long getCachePutCount() {
return cachePutCount;
}
/**
* The amount of execution of this query
* @return the execution count
*/
public long getExecutionCount() {
return executionCount;
}
/**
* The amount of rows returned for this query
* @return the row count
*/
public long getExecutionRowCount() {
return executionRowCount;
}
/**
* The avg time to execute this query
* @return the avg time in ms
*/
public long getExecutionAvgTime() {
return executionAvgTime;
}
/**
* The max time to execute this query
* @return the max time in ms
*/
public long getExecutionMaxTime() {
return executionMaxTime;
}
/**
* The minimum time to execute this query
* @return the min time in ms
*/
public long getExecutionMinTime() {
return executionMinTime;
}
/**
* Creates a CompositeData instance of this instance
* @return the compositeData representation of this instance
*/
public CompositeData toCompositeData() {
try {
return new CompositeDataSupport(
COMPOSITE_TYPE, ITEM_NAMES, new Object[] {
query, cacheHitCount, cacheMissCount,
cachePutCount,
executionCount,
executionRowCount,
executionAvgTime,
executionMaxTime,
executionMinTime,
}
);
}
catch (OpenDataException e) {
throw new RuntimeException( e );
}
}
/**
* Creates a new TabularData
* @return a new TabularData instance
*/
public static TabularData newTabularDataInstance() {
return new TabularDataSupport( TABULAR_TYPE );
}
/**
* Reads an array of queryStats from TabularData
* @param tabularData the tabularData with the {@link CompositeData} of stats to extract
* @return all queryStats as an array
*/
@SuppressWarnings({"unchecked", "UnusedDeclaration"})
public static QueryStats[] fromTabularData(final TabularData tabularData) {
final List countList = new ArrayList( tabularData.size() );
for ( Object o : tabularData.values() ) {
countList.add( new QueryStats( (CompositeData) o ) );
}
return countList.toArray( new QueryStats[countList.size()] );
}
}