
com.gs.api.accelrx.monitor.remote.MetricsPrefixer Maven / Gradle / Ivy
The newest version!
package com.gs.api.accelrx.monitor.remote;
import com.google.common.base.Strings;
import java.io.BufferedReader;
import java.io.StringReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static java.util.Objects.requireNonNull;
public class MetricsPrefixer {
static final Pattern META = Pattern.compile("#\\s*(?[A-Z_]+)\\s+(?.*)");
private final String prefix;
public MetricsPrefixer(String prefix) {
this.prefix = requireNonNull(prefix, "prefix");
}
public String addPrefix(String metrics) {
if (Strings.isNullOrEmpty(metrics)) {
return metrics;
}
try (StringReader metricsReader = new StringReader(metrics)) {
var result = new StringBuilder();
new BufferedReader(metricsReader)
.lines()
.forEach(line -> addPrefixToLine(line, result).append('\n'));
return result.toString();
}
}
private StringBuilder addPrefixToLine(String line, StringBuilder out) {
if (line.startsWith("#")) {
Matcher metaMatcher = META.matcher(line);
if (!metaMatcher.matches()) {
return out.append(line);
}
String meta = metaMatcher.group("meta");
String value = metaMatcher.group("value");
return out.append("# ").append(meta).append(' ').append(prefix).append(value);
}
return out.append(prefix).append(line);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy