package io.pcp.parfait.pcp; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import io.pcp.parfait.dxm.MetricName; public class RegexSequenceNameMapper implements MetricNameMapper { private final List<Replacement> replacements; public RegexSequenceNameMapper(List<Replacement> replacements) { this.replacements = new ArrayList<Replacement>(replacements); } @Override public MetricName map(String name) { for (Replacement replacement : replacements) { Matcher m = replacement.pattern.matcher(name); if (m.matches()) { name = m.replaceAll(replacement.replacement); } } return MetricName.parse(name); } public static class Replacement { private final Pattern pattern; private final String replacement; public Replacement(Pattern pattern, String replacement) { this.pattern = pattern; this.replacement = replacement; } } }