From d42df683501bc91ae6995e131c3d0b6187982a87 Mon Sep 17 00:00:00 2001
From: Jonas Blatt <jonasblatt@uni-koblenz.de>
Date: Wed, 9 Oct 2019 16:28:38 +0200
Subject: [PATCH] Add implementation of verification metrics for execution time

---
 .../dmn/verification/metrics/MetricSet.java   | 40 +++++++++++++++++++
 1 file changed, 40 insertions(+)
 create mode 100644 dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/metrics/MetricSet.java

diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/metrics/MetricSet.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/metrics/MetricSet.java
new file mode 100644
index 00000000..1a8f95ae
--- /dev/null
+++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/core/dmn/verification/metrics/MetricSet.java
@@ -0,0 +1,40 @@
+package de.unikoblenz.fgbks.core.dmn.verification.metrics;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import de.unikoblenz.fgbks.core.dmn.verification.verifier.types.VerificationType;
+import java.io.Serializable;
+import java.util.HashSet;
+import java.util.Set;
+import org.apache.commons.lang3.Validate;
+
+/**
+ * A metric set contains all metrics.
+ */
+public class MetricSet implements Serializable {
+
+  private Set<Metric> metrics = new HashSet<>();
+
+  /**
+   * Get all metrics.
+   *
+   * @return the set of {@link Metric}s
+   */
+  @JsonProperty("verificationMetrics")
+  public Set<Metric> getMetrics() {
+    return new HashSet<>(metrics);
+  }
+
+  /**
+   * Add a new execution time of a verifier to the metric map
+   *
+   * @param type the {@link VerificationType}
+   * @param timeInNs the time in ns
+   */
+  public synchronized void addExecutionTime(VerificationType type, long timeInNs) {
+    Validate.notNull(type);
+    Metric m =
+        metrics.stream().filter(x -> x.type.equals(type)).findFirst().orElse(new Metric(type));
+    m.addExecutionTime(timeInNs);
+    metrics.add(m);
+  }
+}
-- 
GitLab