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}