/** {@inheritDoc} */
 @Override
 public void setStatisticsEnabled(boolean flag) {
   if (flag) {
     ehcacheStats.enableStats();
     hibernateStats.enableStats();
   } else {
     ehcacheStats.disableStats();
     hibernateStats.disableStats();
   }
   statsEnabled.set(flag);
   sendNotification(HibernateStats.CACHE_STATISTICS_ENABLED, flag);
 }
 /** {@inheritDoc} */
 @Override
 public void flushRegionCache(String region) {
   ehcacheStats.flushRegionCache(region);
   sendNotification(HibernateStats.CACHE_REGION_FLUSHED, region);
 }
 /**
  * {@inheritDoc}
  *
  * @see EhcacheStats#getAverageGetTimeMillis(java.lang.String)
  */
 @Override
 public float getAverageGetTimeMillis(String region) {
   return ehcacheStats.getAverageGetTimeMillis(region);
 }
 /**
  * {@inheritDoc}
  *
  * @see EhcacheStats#getMinGetTimeMillis()
  */
 @Override
 public long getMinGetTimeMillis() {
   return ehcacheStats.getMinGetTimeMillis();
 }
 /**
  * {@inheritDoc}
  *
  * @see EhcacheStats#getNumberOfElementsInMemory(java.lang.String)
  */
 @Override
 public int getNumberOfElementsInMemory(String region) {
   return ehcacheStats.getNumberOfElementsInMemory(region);
 }
 /** {@inheritDoc} */
 @Override
 public void setRegionCacheMaxTTLSeconds(String region, int maxTTLSeconds) {
   ehcacheStats.setRegionCacheMaxTTLSeconds(region, maxTTLSeconds);
   sendNotification(HibernateStats.CACHE_REGION_CHANGED, getRegionCacheAttributes(region), region);
 }
 /** {@inheritDoc} */
 @Override
 public boolean isTerracottaHibernateCache(String region) {
   return ehcacheStats.isTerracottaHibernateCache(region);
 }
 /** {@inheritDoc} */
 @Override
 public boolean isRegionCacheOrphanEvictionEnabled(String region) {
   return ehcacheStats.isRegionCacheOrphanEvictionEnabled(region);
 }
 /** {@inheritDoc} */
 @Override
 public String getOriginalConfigDeclaration(String region) {
   return ehcacheStats.getOriginalConfigDeclaration(region);
 }
 /** {@inheritDoc} */
 @Override
 public long getCachePutSample() {
   return ehcacheStats.getCachePutSample();
 }
 /** {@inheritDoc} */
 @Override
 public double getCachePutRate() {
   return ehcacheStats.getCachePutRate();
 }
 /** {@inheritDoc} */
 @Override
 public long getCachePutCount() {
   return ehcacheStats.getCachePutCount();
 }
 /** {@inheritDoc} */
 @Override
 public String generateActiveConfigDeclaration(String region) {
   return ehcacheStats.generateActiveConfigDeclaration(region);
 }
 /** {@inheritDoc} */
 @Override
 public void flushRegionCaches() {
   ehcacheStats.flushRegionCaches();
   sendNotification(HibernateStats.CACHE_FLUSHED);
 }
 /** {@inheritDoc} */
 @Override
 public void setRegionCachesEnabled(boolean enabled) {
   ehcacheStats.setRegionCachesEnabled(enabled);
   sendNotification(HibernateStats.CACHE_ENABLED, enabled);
 }
 /** {@inheritDoc} */
 @Override
 public boolean isRegionCacheLoggingEnabled(String region) {
   return ehcacheStats.isRegionCacheLoggingEnabled(region);
 }
 /** {@inheritDoc} */
 @Override
 public Map<String, Map<String, Object>> getRegionCacheAttributes() {
   return ehcacheStats.getRegionCacheAttributes();
 }
 /** {@inheritDoc} */
 @Override
 public boolean isRegionCachesEnabled() {
   return ehcacheStats.isRegionCachesEnabled();
 }
 /** {@inheritDoc} */
 @Override
 public Map<String, Object> getRegionCacheAttributes(String regionName) {
   return ehcacheStats.getRegionCacheAttributes(regionName);
 }
 /** {@inheritDoc} */
 @Override
 public void setRegionCacheLoggingEnabled(String region, boolean loggingEnabled) {
   ehcacheStats.setRegionCacheLoggingEnabled(region, loggingEnabled);
   sendNotification(HibernateStats.CACHE_REGION_CHANGED, getRegionCacheAttributes(region), region);
 }
 /** {@inheritDoc} */
 @Override
 public int getRegionCacheMaxTTLSeconds(String region) {
   return ehcacheStats.getRegionCacheMaxTTLSeconds(region);
 }
 /** {@inheritDoc} */
 @Override
 public void setRegionCacheTargetMaxTotalCount(String region, int targetMaxTotalCount) {
   ehcacheStats.setRegionCacheTargetMaxTotalCount(region, targetMaxTotalCount);
   sendNotification(HibernateStats.CACHE_REGION_CHANGED, getRegionCacheAttributes(region), region);
 }
 /** {@inheritDoc} */
 @Override
 public int getRegionCacheOrphanEvictionPeriod(String region) {
   return ehcacheStats.getRegionCacheOrphanEvictionPeriod(region);
 }
 /**
  * {@inheritDoc}
  *
  * @see EhcacheStats#getNumberOfElementsOnDisk(java.lang.String)
  */
 @Override
 public int getNumberOfElementsOnDisk(String region) {
   return ehcacheStats.getNumberOfElementsOnDisk(region);
 }
 /** {@inheritDoc} */
 @Override
 public Map<String, int[]> getRegionCacheSamples() {
   return ehcacheStats.getRegionCacheSamples();
 }
 /**
  * {@inheritDoc}
  *
  * @see EhcacheStats#getMinGetTimeMillis(java.lang.String)
  */
 @Override
 public long getMinGetTimeMillis(String cacheName) {
   return ehcacheStats.getMinGetTimeMillis(cacheName);
 }
 /** {@inheritDoc} */
 @Override
 public int getRegionCacheTargetMaxTotalCount(String region) {
   return ehcacheStats.getRegionCacheTargetMaxTotalCount(region);
 }
 /** {@inheritDoc} */
 @Override
 public String[] getTerracottaHibernateCacheRegionNames() {
   return ehcacheStats.getTerracottaHibernateCacheRegionNames();
 }
 /** {@inheritDoc} */
 @Override
 public void clearStats() {
   ehcacheStats.clearStats();
   hibernateStats.clearStats();
 }