Skip to content

Commit

Permalink
corner case: handle names with accents
Browse files Browse the repository at this point in the history
  • Loading branch information
cbellone committed Mar 26, 2021
1 parent 510f2d5 commit e5248f8
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 6 deletions.
9 changes: 3 additions & 6 deletions src/main/java/alfio/util/ItalianTaxIdValidator.java
Original file line number Diff line number Diff line change
Expand Up @@ -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.*;
Expand Down Expand Up @@ -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;
}
Expand All @@ -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<Character>();
var vowels = new ArrayList<Character>();
for (char c : chars) {
Expand Down
1 change: 1 addition & 0 deletions src/test/java/alfio/util/ItalianTaxIdValidatorTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -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"));
Expand Down

0 comments on commit e5248f8

Please sign in to comment.