bachelor-thesis/chapters/thesis/appendix05_Provider.java

42 lines
1.4 KiB
Java
Raw Normal View History

2024-09-12 23:02:22 +02:00
public interface PerfStatistics {
String getOpenJPAStatistics();
String getEntityClasses();
}
@Stateless
public class PerfStatisticsImpl implements PerfStatistics {
@Inject
private EntityManagerJPAFactory entityManagerFactory;
private OpenJPAEntityManagerFactory openJPAEntityManagerFactory;
@PostConstruct
public void init() {
openJPAEntityManagerFactory = OpenJPAPersistence.cast(entityManagerFactory.getEntityManager().getEntityManagerFactory());
}
@Override
public String getOpenJPAStatistics() {
StoreCache cache = openJPAEntityManagerFactory.getStoreCache();
CacheStatistics st = cache.getStatistics();
return String.format("{ \"ReadCount\": %d, \"HitCount\": %d, \"WriteCount\": %d }", st.getReadCount(), st.getHitCount(), st.getWriteCount());
}
@Override
public String getEntityClasses() {
StringBuilder res = new StringBuilder("{ \"Entities\": [");
EntityManagerFactory emf = openJPAEntityManagerFactory;
EntityManager em = emf.createEntityManager();
Cache cache = emf.getCache();
for(EntityType<?> entityType : em.getMetamodel().getEntities()) {
Class<?> cls = entityType.getBindableJavaType();
res.append(String.format("\"%s\", ", cls.getCanonicalName()));
}
res.append("\"\"], \"Cache\": \"");
res.append(cache.toString());
res.append("\" }");
return res.toString();
}
}