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

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