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

pl.allegro.tech.hermes.management.infrastructure.metrics.MonitoringMetricsContainer Maven / Gradle / Ivy

There is a newer version: 2.10.4
Show newest version
package pl.allegro.tech.hermes.management.infrastructure.metrics;

import java.util.HashMap;
import java.util.Map;
import pl.allegro.tech.hermes.api.MetricDecimalValue;

public class MonitoringMetricsContainer {

  private static final MetricDecimalValue DEFAULT_VALUE = MetricDecimalValue.of("0.0");

  private final Map metrics;
  private final boolean isAvailable;

  private MonitoringMetricsContainer(boolean isAvailable, Map metrics) {
    this.metrics = metrics;
    this.isAvailable = isAvailable;
  }

  public static MonitoringMetricsContainer createEmpty() {
    return new MonitoringMetricsContainer(true, new HashMap<>());
  }

  public static MonitoringMetricsContainer initialized(Map metrics) {
    return new MonitoringMetricsContainer(true, metrics);
  }

  public static MonitoringMetricsContainer unavailable() {
    return new MonitoringMetricsContainer(false, new HashMap<>());
  }

  public MonitoringMetricsContainer addMetricValue(String query, MetricDecimalValue value) {
    if (!isAvailable) {
      throw new IllegalStateException("Adding value to unavailable metrics container");
    }
    this.metrics.put(query, value);
    return this;
  }

  public MetricDecimalValue metricValue(String query) {
    if (!isAvailable) {
      return MetricDecimalValue.unavailable();
    }
    return metrics.getOrDefault(query, DEFAULT_VALUE);
  }

  public boolean hasUnavailableMetrics() {
    return !isAvailable || metrics.entrySet().stream().anyMatch(e -> !e.getValue().isAvailable());
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy