001package io.ebean.meta; 002 003import java.util.ArrayList; 004import java.util.List; 005 006/** 007 * A simple MetricVisitor that can collect the desired metrics into lists. 008 */ 009public class BasicMetricVisitor extends AbstractMetricVisitor { 010 011 private final List<MetaTimedMetric> timed = new ArrayList<>(); 012 private final List<MetaQueryMetric> dtoQuery = new ArrayList<>(); 013 private final List<MetaOrmQueryMetric> ormQuery = new ArrayList<>(); 014 015 /** 016 * Construct to reset and collect everything. 017 */ 018 public BasicMetricVisitor() { 019 super(true, true, true); 020 } 021 022 /** 023 * Construct specifying reset and what to collect. 024 */ 025 public BasicMetricVisitor(boolean reset, boolean collectTransactionMetrics, boolean collectQueryMetrics) { 026 super(reset, collectTransactionMetrics, collectQueryMetrics); 027 } 028 029 /** 030 * Return timed metrics for Transactions, labelled SqlQuery, labelled SqlUpdate. 031 */ 032 public List<MetaTimedMetric> getTimedMetrics() { 033 return timed; 034 } 035 036 /** 037 * Return the DTO query metrics. 038 */ 039 public List<MetaQueryMetric> getDtoQueryMetrics() { 040 return dtoQuery; 041 } 042 043 /** 044 * Return the ORM query metrics. 045 */ 046 public List<MetaOrmQueryMetric> getOrmQueryMetrics() { 047 return ormQuery; 048 } 049 050 @Override 051 public void visitTimed(MetaTimedMetric metric) { 052 timed.add(metric); 053 } 054 055 @Override 056 public void visitQuery(MetaQueryMetric metric) { 057 dtoQuery.add(metric); 058 } 059 060 @Override 061 public void visitOrmQuery(MetaOrmQueryMetric metric) { 062 ormQuery.add(metric); 063 } 064}