package com.constellio.model.entities.schemas.sort; import java.util.regex.Matcher; import java.util.regex.Pattern; import com.constellio.data.utils.AccentApostropheCleaner; public class DefaultStringSortFieldNormalizer implements StringSortFieldNormalizer { static Pattern[] patterns = new Pattern[8]; static { for (int i = 8; i > 0; i--) { String regex = "([^0-9]+|^)([0-9]{" + i + "})([^0-9]+|$)"; patterns[i - 1] = Pattern.compile(regex); } } @Override public String normalize(String rawValue) { String normalizedText = AccentApostropheCleaner.removeAccents(rawValue.toLowerCase()).trim(); for (int i = 8; i > 0; i--) { //String regex = "([^0-9]+|^)([0-9]{" + i + "})([^0-9]+|$)"; Matcher matcher = patterns[i - 1].matcher(normalizedText); if (matcher.find()) { StringBuffer fillers = new StringBuffer(); int zeros = 9 - i; for (int j = 0; j < zeros; j++) { fillers.append("\\0"); } String replacement = "$1" + fillers + "$2$3"; normalizedText = matcher.replaceAll(replacement);//normalizedText.replaceAll(regex, replacement); } } return normalizedText; } @Override public String normalizeNull() { return null; } }