package org.wallride.support; import org.springframework.format.Formatter; import org.springframework.util.StringUtils; import java.text.Normalizer; import java.text.ParseException; import java.util.Locale; public class CodeFormatter implements Formatter<String> { public static final String UNSAFE_CHARS = " {}<>[]"; @Override public String print(String object, Locale locale) { return (!object.equals("") ? object : null); } @Override public String parse(String text, Locale locale) throws ParseException { if (text == null) { return null; } String value = StringUtils.trimWhitespace(text); value = Normalizer.normalize(value, Normalizer.Form.NFKC); return replaceUnsafeChars(value); } private String replaceUnsafeChars(String value) { StringBuilder builder = new StringBuilder(value.length()); for (char ch : value.toCharArray()) { if (UNSAFE_CHARS.indexOf(ch) == -1) { builder.append(ch); } else { builder.append('-'); } } return builder.toString(); } }