diff --git a/src/main/java/alfio/util/ItalianTaxIdValidator.java b/src/main/java/alfio/util/ItalianTaxIdValidator.java index 0ec4b2b639..b7d138d5eb 100644 --- a/src/main/java/alfio/util/ItalianTaxIdValidator.java +++ b/src/main/java/alfio/util/ItalianTaxIdValidator.java @@ -20,10 +20,7 @@ import lombok.experimental.UtilityClass; import org.apache.commons.lang3.StringUtils; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import static java.util.Map.entry; import static org.apache.commons.lang3.StringUtils.*; @@ -112,7 +109,7 @@ public static boolean fiscalCodeMatchesWithName(String firstName, String lastNam consonantsList.addAll(firstNameParts.consonants.subList(2, firstNameParts.consonants.size())); appendLastNameCode(code, new FiscalCodeParts(consonantsList, firstNameParts.vowels)); } - return fiscalCode.toUpperCase().startsWith(code.toString()); + return fiscalCode.toUpperCase(Locale.ITALIAN).startsWith(code.toString()); } return false; } @@ -128,7 +125,7 @@ private static void appendLastNameCode(StringBuilder code, FiscalCodeParts lastN } private static FiscalCodeParts parseFiscalCodePart(String part) { - var chars = part.toUpperCase().toCharArray(); + var chars = StringUtils.stripAccents(part.toUpperCase(Locale.ITALIAN)).toCharArray(); var consonants = new ArrayList(); var vowels = new ArrayList(); for (char c : chars) { diff --git a/src/test/java/alfio/util/ItalianTaxIdValidatorTest.java b/src/test/java/alfio/util/ItalianTaxIdValidatorTest.java index a233f270e0..0c5e7e9418 100644 --- a/src/test/java/alfio/util/ItalianTaxIdValidatorTest.java +++ b/src/test/java/alfio/util/ItalianTaxIdValidatorTest.java @@ -69,6 +69,7 @@ void personalCodeValidationFailure(String number) { void validateNamePart() { assertTrue(fiscalCodeMatchesWithName("Homer", "Simpson", "SMPHMR66A01B602I")); assertTrue(fiscalCodeMatchesWithName("Lisa", "Simpson", "SMPLSI96L50C770S")); + assertTrue(fiscalCodeMatchesWithName("Lisà", "Sìmpsön", "SMPLSI96L50C770S")); assertTrue(fiscalCodeMatchesWithName("Lisa Mary", "Simpson", "SMPLMR96S50F205L")); assertTrue(fiscalCodeMatchesWithName("Gi", "Ma", "MAXGIX80E02F205R")); assertTrue(fiscalCodeMatchesWithName("First", "Last", "63828920585"));