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

no.mnemonic.commons.metrics.MetricsGroup Maven / Gradle / Ivy

package no.mnemonic.commons.metrics;

import no.mnemonic.commons.utilities.AppendMembers;
import no.mnemonic.commons.utilities.AppendUtils;
import no.mnemonic.commons.utilities.StringUtils;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * A metric is a hierarchical data object for a set of measurement values.
 * There may be a set of key/value pairs for this metric, or a set of sub metrics
 */
public class MetricsGroup implements Metrics, AppendMembers {

  private static final long serialVersionUID = 6636687481582715425L;

  //properties

  private final Map subMetrics = new ConcurrentHashMap<>();

  //interface methods


  @Override
  public String toString() {
    return AppendUtils.toString(this);
  }

  public void appendMembers(StringBuilder buf) {
    AppendUtils.appendField(buf, "subMetrics", subMetrics.keySet());
  }

  //protected and private methods

  //accessors

  public Map getData() {
    return null;
  }

  public Map getSubMetrics() {
    return subMetrics;
  }

  public boolean hasData() {
    return false;
  }

  public boolean hasSubMetrics() {
    return true;
  }

  /**
   * Add a submetrics group to this metrics group
   * @param name name of the group
   * @param subMetrics the metrics group
   * @throws MetricException if name or metric object is empty
   */
  @SuppressWarnings("WeakerAccess")
  public MetricsGroup addSubMetrics(String name, Metrics subMetrics) throws MetricException {
    if (StringUtils.isBlank(name)) throw new MetricException("Cannot add submetric without a name");
    if (subMetrics == null) throw new MetricException("Submetrics cannot be null");
    this.subMetrics.put(name, subMetrics);
    return this;
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy