All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.ebeaninternal.server.core.DumpMetricsData Maven / Gradle / Ivy

package io.ebeaninternal.server.core;

import io.ebean.Database;
import io.ebean.meta.MetaCountMetric;
import io.ebean.meta.MetaMetric;
import io.ebean.meta.MetaQueryMetric;
import io.ebean.meta.MetaTimedMetric;
import io.ebean.meta.MetricData;
import io.ebean.meta.ServerMetrics;

import java.util.ArrayList;
import java.util.List;

/**
 * Dump the metrics into a list of MetricData.
 */
final class DumpMetricsData {

  private final Database database;
  private final List list = new ArrayList<>();

  DumpMetricsData(Database database) {
    this.database = database;
  }

  List data() {
    collect(database.metaInfo().collectMetrics());
    return list;
  }

  private void collect(ServerMetrics serverMetrics) {
    final List timedMetrics = serverMetrics.timedMetrics();
    final List countMetrics = serverMetrics.countMetrics();
    final List queryMetrics = serverMetrics.queryMetrics();

    for (MetaTimedMetric metric : timedMetrics) {
      add(metric);
    }
    for (MetaCountMetric metric : countMetrics) {
      addCount(metric);
    }
    for (MetaQueryMetric metric : queryMetrics) {
      addQuery(metric);
    }
  }

  private MetricData create(MetaMetric metric) {
    MetricData data = new MetricData(metric.name());
    list.add(data);
    return data;
  }

  private void add(MetaTimedMetric metric) {
    final MetricData data = create(metric);
    appendCounters(data, metric);
    data.setLoc(metric.location());
  }

  private void addCount(MetaCountMetric metric) {
    final MetricData data = create(metric);
    data.setCount(metric.count());
  }

  private void addQuery(MetaQueryMetric metric) {
    final MetricData data = create(metric);
    appendCounters(data, metric);
    appendLocationAndSql(data, metric);
    data.setHash(metric.hash());
  }

  private void appendLocationAndSql(MetricData data, MetaQueryMetric metric) {
    data.setLoc(metric.location());
    data.setSql(metric.sql());
  }

  private void appendCounters(MetricData data, MetaTimedMetric timedMetric) {
    data.setCount(timedMetric.count());
    data.setTotal(timedMetric.total());
    data.setMean(timedMetric.mean());
    data.setMax(timedMetric.max());
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy