001 // Copyright 2009, 2011 The Apache Software Foundation 002 // 003 // Licensed under the Apache License, Version 2.0 (the "License"); 004 // you may not use this file except in compliance with the License. 005 // You may obtain a copy of the License at 006 // 007 // http://www.apache.org/licenses/LICENSE-2.0 008 // 009 // Unless required by applicable law or agreed to in writing, software 010 // distributed under the License is distributed on an "AS IS" BASIS, 011 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 012 // See the License for the specific language governing permissions and 013 // limitations under the License. 014 015 package org.apache.tapestry5.hibernate.pages; 016 017 import java.util.Collection; 018 019 import org.apache.tapestry5.SymbolConstants; 020 import org.apache.tapestry5.annotations.ContentType; 021 import org.apache.tapestry5.annotations.Property; 022 import org.apache.tapestry5.annotations.WhitelistAccessOnly; 023 import org.apache.tapestry5.ioc.annotations.Inject; 024 import org.apache.tapestry5.ioc.annotations.Symbol; 025 import org.hibernate.Session; 026 import org.hibernate.metadata.ClassMetadata; 027 import org.hibernate.stat.CollectionStatistics; 028 import org.hibernate.stat.EntityStatistics; 029 import org.hibernate.stat.QueryStatistics; 030 import org.hibernate.stat.SecondLevelCacheStatistics; 031 032 /** 033 * Page used to see the Hibernate statistics. 034 * 035 * @since 5.1.0.2 036 * 037 */ 038 @ContentType("text/html") 039 @WhitelistAccessOnly 040 public class Statistics { 041 @Inject 042 private Session session; 043 044 @Property 045 @Inject 046 @Symbol(SymbolConstants.PRODUCTION_MODE) 047 private boolean productionMode; 048 049 @Property 050 private String currentEntityName; 051 052 @Property 053 private String currentCollectionRoleName; 054 055 @Property 056 private String currentQuery; 057 058 @Property 059 private String currentSecondLevelCacheRegionName; 060 061 @Property 062 private org.hibernate.stat.Statistics statistics; 063 064 void onActivate() { 065 this.statistics = this.session.getSessionFactory().getStatistics(); 066 } 067 068 @SuppressWarnings("unchecked") 069 public Collection<ClassMetadata> getAllClassMetadata() { 070 return this.session.getSessionFactory().getAllClassMetadata().values 071 (); 072 } 073 074 public EntityStatistics getEntityStatistics() { 075 return this.statistics.getEntityStatistics(this.currentEntityName); 076 } 077 078 public CollectionStatistics getCollectionStatistics() { 079 return this.statistics 080 .getCollectionStatistics(this.currentCollectionRoleName); 081 } 082 083 public QueryStatistics getQueryStatistics() { 084 return this.statistics.getQueryStatistics(this.currentQuery); 085 } 086 087 public SecondLevelCacheStatistics getSecondLevelCacheStatistics() { 088 return this.statistics 089 .getSecondLevelCacheStatistics 090 (this.currentSecondLevelCacheRegionName); 091 } 092 }