LogMasker.java
package se.jobtechdev.personaldatagateway.api.logging;
import java.util.regex.Pattern;
public class LogMasker {
private LogMasker() {}
private static final String[] masks = {
"(\\d{12})", "(\\d{10})", "(\\d{8}-\\d{4})", "(\\d{6}-\\d{4})"
};
public static String mask(String original) {
var current = original;
for (var mask : masks) {
final var pattern = Pattern.compile(mask);
final var matcher = pattern.matcher(current);
var offset = 0;
final var sb = new StringBuilder();
while (matcher.find()) {
final var groupCount = matcher.groupCount();
for (int i = 1; i <= groupCount; i++) {
sb.append(current, offset, matcher.start(i)).append("REDACTED");
offset = matcher.end(i);
}
}
sb.append(current, offset, current.length());
current = sb.toString();
}
return current;
}
}