From 7cc992956c4ce351941af83a4220d2dc5deceeb6 Mon Sep 17 00:00:00 2001 From: Andrei Solntsev Date: Wed, 29 May 2024 01:03:29 +0300 Subject: [PATCH 1/5] #1214 [refactoring] load country-specific ID number providers by country code Thus, we can add ID numbers for new countries just by implementing "IdNumbers" without need to add public methods like "validZhCNSsn()", "validEstonianPersonalCode()", "validBulgarianPersonalCode()" to class "IdNumber". Now all country-specific ID number generators are loaded from file "src/main/resources/META-INF/services/net.datafaker.idnumbers.IdNumbers" using a standard Java mechanism "service loader". + rename existing "*IdNumber" classes to human-readable, e.g. "ZhCnIdNumber" to "ChineseIdNumber". --- .gitignore | 1 - .../datafaker/idnumbers/AlbanianIdNumber.java | 11 +- .../datafaker/idnumbers/AmericanIdNumber.java | 43 +++ .../idnumbers/BulgarianIdNumber.java | 9 +- ...ZhCnIdNumber.java => ChineseIdNumber.java} | 27 +- .../net/datafaker/idnumbers/EnIdNumber.java | 30 -- .../datafaker/idnumbers/EstonianIdNumber.java | 9 +- .../datafaker/idnumbers/GeorgianIdNumber.java | 23 ++ .../net/datafaker/idnumbers/IdNumbers.java | 17 ++ .../idnumbers/MacedonianIdNumber.java | 9 +- ...EsMXIdNumber.java => MexicanIdNumber.java} | 49 ++- ...ovaIdNumber.java => MoldovanIdNumber.java} | 11 +- .../{PeselNumber.java => PolishIdNumber.java} | 59 ++-- ...fIdNumber.java => PortugueseIdNumber.java} | 10 +- ...NricNumber.java => SingaporeIdNumber.java} | 27 +- ...dNumber.java => SouthAfricanIdNumber.java} | 29 +- ...IdNumber.java => SouthKoreanIdNumber.java} | 16 +- ...{SvSEIdNumber.java => SwedenIdNumber.java} | 22 +- .../providers/base/AbstractProvider.java | 8 + .../datafaker/providers/base/IdNumber.java | 286 ++++++++---------- .../net/datafaker/providers/base/Options.java | 10 + .../net.datafaker.idnumbers.IdNumbers | 15 + src/main/resources/_CN.yml | 39 +++ src/main/resources/_GE.yml | 5 + src/main/resources/_MD.yml | 4 - src/main/resources/bg.yml | 4 - src/main/resources/en-ZA.yml | 4 - src/main/resources/es-MX.yml | 4 - src/main/resources/et.yml | 4 - src/main/resources/mk.yml | 4 - src/main/resources/sq.yml | 4 - src/main/resources/sv-SE.yml | 7 +- src/main/resources/zh-CN.yml | 39 --- .../idnumbers/AlbanianIdNumberTest.java | 4 +- ...mberTest.java => ChineseIdNumberTest.java} | 9 +- ...mberTest.java => MexicanIdNumberTest.java} | 23 +- ...berTest.java => MoldovanIdNumberTest.java} | 6 +- ...umberTest.java => PolishIdNumberTest.java} | 31 +- .../idnumbers/PortugueseIdNumberTest.java | 23 ++ .../idnumbers/PtNifIdNumberTest.java | 38 --- ...est.java => SouthAfricanIdNumberTest.java} | 20 +- ...Test.java => SouthKoreanIdNumberTest.java} | 11 +- .../idnumbers/SwedishIdNumberTest.java | 22 +- .../providers/base/BaseFakerTest.java | 5 - .../providers/base/IdNumberTest.java | 45 ++- 45 files changed, 611 insertions(+), 465 deletions(-) create mode 100644 src/main/java/net/datafaker/idnumbers/AmericanIdNumber.java rename src/main/java/net/datafaker/idnumbers/{ZhCnIdNumber.java => ChineseIdNumber.java} (98%) delete mode 100644 src/main/java/net/datafaker/idnumbers/EnIdNumber.java create mode 100644 src/main/java/net/datafaker/idnumbers/GeorgianIdNumber.java rename src/main/java/net/datafaker/idnumbers/{EsMXIdNumber.java => MexicanIdNumber.java} (76%) rename src/main/java/net/datafaker/idnumbers/{MoldovaIdNumber.java => MoldovanIdNumber.java} (89%) rename src/main/java/net/datafaker/idnumbers/{PeselNumber.java => PolishIdNumber.java} (56%) rename src/main/java/net/datafaker/idnumbers/{PtNifIdNumber.java => PortugueseIdNumber.java} (89%) rename src/main/java/net/datafaker/idnumbers/{NricNumber.java => SingaporeIdNumber.java} (75%) rename src/main/java/net/datafaker/idnumbers/{EnZAIdNumber.java => SouthAfricanIdNumber.java} (86%) rename src/main/java/net/datafaker/idnumbers/{KoKrIdNumber.java => SouthKoreanIdNumber.java} (87%) rename src/main/java/net/datafaker/idnumbers/{SvSEIdNumber.java => SwedenIdNumber.java} (89%) create mode 100644 src/main/resources/META-INF/services/net.datafaker.idnumbers.IdNumbers create mode 100644 src/main/resources/_CN.yml create mode 100644 src/main/resources/_GE.yml rename src/test/java/net/datafaker/idnumbers/{ZhCNIdNumberTest.java => ChineseIdNumberTest.java} (89%) rename src/test/java/net/datafaker/idnumbers/{EsMXIdNumberTest.java => MexicanIdNumberTest.java} (65%) rename src/test/java/net/datafaker/idnumbers/{MoldovaIdNumberTest.java => MoldovanIdNumberTest.java} (87%) rename src/test/java/net/datafaker/idnumbers/{PeselNumberTest.java => PolishIdNumberTest.java} (85%) create mode 100644 src/test/java/net/datafaker/idnumbers/PortugueseIdNumberTest.java delete mode 100644 src/test/java/net/datafaker/idnumbers/PtNifIdNumberTest.java rename src/test/java/net/datafaker/idnumbers/{EnZAIdNumberTest.java => SouthAfricanIdNumberTest.java} (56%) rename src/test/java/net/datafaker/idnumbers/{KoKrIdNumberTest.java => SouthKoreanIdNumberTest.java} (81%) diff --git a/.gitignore b/.gitignore index 1e2508264..1b18ab275 100644 --- a/.gitignore +++ b/.gitignore @@ -8,7 +8,6 @@ target !.idea/icon.png *.iml /dependency-reduced-pom.xml -META-INF/ bin/ site .mvn/wrapper/maven-wrapper.jar diff --git a/src/main/java/net/datafaker/idnumbers/AlbanianIdNumber.java b/src/main/java/net/datafaker/idnumbers/AlbanianIdNumber.java index 3aace9b66..ad7217ca9 100644 --- a/src/main/java/net/datafaker/idnumbers/AlbanianIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/AlbanianIdNumber.java @@ -11,13 +11,18 @@ public class AlbanianIdNumber implements IdNumbers { private static final String FIRST_CHAR = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; private static final String CHECKSUM_CHAR = "WABCDEFGHIJKLMNOPQRSTUV"; - public String getInvalid(BaseProviders faker) { - String pin = getValid(faker); + @Override + public String country() { + return "AL"; + } + + public String generateInvalid(BaseProviders faker) { + String pin = generateValid(faker); int invalidMonth = faker.number().numberBetween(93, 99); return pin.substring(0, 2) + invalidMonth + pin.substring(4); } - public String getValid(BaseProviders faker) { + public String generateValid(BaseProviders faker) { LocalDate birthDate = faker.timeAndDate().birthday(0, 200); boolean female = faker.bool().bool(); String basePart = yy(birthDate.getYear()) + mm(birthDate.getMonthValue(), female) + dd(birthDate.getDayOfMonth()) + sss(faker); diff --git a/src/main/java/net/datafaker/idnumbers/AmericanIdNumber.java b/src/main/java/net/datafaker/idnumbers/AmericanIdNumber.java new file mode 100644 index 000000000..8ce65dac5 --- /dev/null +++ b/src/main/java/net/datafaker/idnumbers/AmericanIdNumber.java @@ -0,0 +1,43 @@ +package net.datafaker.idnumbers; + +import net.datafaker.providers.base.BaseProviders; + +import java.util.List; +import java.util.regex.Pattern; + +public class AmericanIdNumber implements IdNumbers { + @Override + public String country() { + return "US"; + } + + private static final List INVALID_SSNS = List.of( + "0{3}-\\d{2}-\\d{4}", + "\\d{3}-0{2}-\\d{4}", + "\\d{3}-\\d{2}-0{4}", + "666-\\d{2}-\\d{4}", + "9\\d{2}-\\d{2}-\\d{4}"); + + private static final List INVALID_SSN_PATTERNS = INVALID_SSNS.stream() + .map(Pattern::compile) + .toList(); + + @Deprecated + public String getValidSsn(BaseProviders f) { + return generateValid(f); + } + + @Override + public String generateValid(BaseProviders f) { + final String ssn = f.regexify("[0-8]\\d{2}-\\d{2}-\\d{4}"); + + boolean isValid = INVALID_SSN_PATTERNS.stream() + .noneMatch(invalidSSNPattern -> invalidSSNPattern.matcher(ssn).matches()); + return isValid ? ssn : generateValid(f); + } + + @Override + public String generateInvalid(BaseProviders faker) { + return faker.regexify(faker.options().option(INVALID_SSNS)); + } +} diff --git a/src/main/java/net/datafaker/idnumbers/BulgarianIdNumber.java b/src/main/java/net/datafaker/idnumbers/BulgarianIdNumber.java index d96844327..e0551406e 100644 --- a/src/main/java/net/datafaker/idnumbers/BulgarianIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/BulgarianIdNumber.java @@ -12,12 +12,17 @@ public class BulgarianIdNumber implements IdNumbers { private static final int[] EVEN_DIGITS = {0, 2, 4, 6, 8}; private static final int[] ODD_DIGITS = {1, 3, 5, 7, 9}; - public String getValid(BaseProviders faker) { + @Override + public String country() { + return "BG"; + } + + public String generateValid(BaseProviders faker) { String basePart = basePart(faker); return basePart + checksum(basePart); } - public String getInvalid(BaseProviders faker) { + public String generateInvalid(BaseProviders faker) { String basePart = basePart(faker); return basePart + (checksum(basePart) + 1) % 10; } diff --git a/src/main/java/net/datafaker/idnumbers/ZhCnIdNumber.java b/src/main/java/net/datafaker/idnumbers/ChineseIdNumber.java similarity index 98% rename from src/main/java/net/datafaker/idnumbers/ZhCnIdNumber.java rename to src/main/java/net/datafaker/idnumbers/ChineseIdNumber.java index 916a9379b..dfc406ca3 100644 --- a/src/main/java/net/datafaker/idnumbers/ZhCnIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/ChineseIdNumber.java @@ -5,22 +5,34 @@ /** - * This class is used for generating Zh_CN Id numbers. + * This class is used for generating Chinese ID numbers * * @author irakatz */ -public class ZhCnIdNumber implements IdNumbers { +public class ChineseIdNumber implements IdNumbers { + @Override + public String country() { + return "CN"; + } + /** * list all combination of first 6 bits, they are locations */ private static final String[] LOCATIONS = {"110000", "110101", "110102", "110103", "110104", "110105", "110106", "110107", "110108", "110109", "110111", "110112", "110113", "110114", "110115", "110116", "110117", "110200", "110228", "110229", "120000", "120101", "120102", "120103", "120104", "120105", "120106", "120107", "120108", "120109", "120110", "120111", "120112", "120113", "120114", "120115", "120200", "120221", "120223", "120225", "130000", "130100", "130102", "130103", "130104", "130105", "130107", "130108", "130121", "130123", "130124", "130125", "130126", "130127", "130128", "130129", "130130", "130131", "130132", "130133", "130181", "130182", "130183", "130184", "130185", "130200", "130202", "130203", "130204", "130205", "130207", "130208", "130223", "130224", "130225", "130227", "130229", "130230", "130281", "130283", "130300", "130302", "130303", "130304", "130321", "130322", "130323", "130324", "130400", "130402", "130403", "130404", "130406", "130421", "130423", "130424", "130425", "130426", "130427", "130428", "130429", "130430", "130431", "130432", "130433", "130434", "130435", "130481", "130500", "130502", "130503", "130521", "130522", "130523", "130524", "130525", "130526", "130527", "130528", "130529", "130530", "130531", "130532", "130533", "130534", "130535", "130581", "130582", "130600", "130602", "130603", "130604", "130621", "130622", "130623", "130624", "130625", "130626", "130627", "130628", "130629", "130630", "130631", "130632", "130633", "130634", "130635", "130636", "130637", "130638", "130681", "130682", "130683", "130684", "130700", "130702", "130703", "130705", "130706", "130721", "130722", "130723", "130724", "130725", "130726", "130727", "130728", "130729", "130730", "130731", "130732", "130733", "130800", "130802", "130803", "130804", "130821", "130822", "130823", "130824", "130825", "130826", "130827", "130828", "130900", "130902", "130903", "130921", "130922", "130923", "130924", "130925", "130926", "130927", "130928", "130929", "130930", "130981", "130982", "130983", "130984", "131000", "131002", "131003", "131022", "131023", "131024", "131025", "131026", "131028", "131081", "131082", "131100", "131102", "131121", "131122", "131123", "131124", "131125", "131126", "131127", "131128", "131181", "131182", "140000", "140100", "140105", "140106", "140107", "140108", "140109", "140110", "140121", "140122", "140123", "140181", "140200", "140202", "140203", "140211", "140212", "140221", "140222", "140223", "140224", "140225", "140226", "140227", "140300", "140302", "140303", "140311", "140321", "140322", "140400", "140402", "140411", "140421", "140423", "140424", "140425", "140426", "140427", "140428", "140429", "140430", "140431", "140481", "140500", "140502", "140521", "140522", "140524", "140525", "140581", "140600", "140602", "140603", "140621", "140622", "140623", "140624", "140700", "140702", "140721", "140722", "140723", "140724", "140725", "140726", "140727", "140728", "140729", "140781", "140800", "140802", "140821", "140822", "140823", "140824", "140825", "140826", "140827", "140828", "140829", "140830", "140881", "140882", "140900", "140902", "140921", "140922", "140923", "140924", "140925", "140926", "140927", "140928", "140929", "140930", "140931", "140932", "140981", "141000", "141002", "141021", "141022", "141023", "141024", "141025", "141026", "141027", "141028", "141029", "141030", "141031", "141032", "141033", "141034", "141081", "141082", "141100", "141102", "141121", "141122", "141123", "141124", "141125", "141126", "141127", "141128", "141129", "141130", "141181", "141182", "150000", "150100", "150102", "150103", "150104", "150105", "150121", "150122", "150123", "150124", "150125", "150200", "150202", "150203", "150204", "150205", "150206", "150207", "150221", "150222", "150223", "150300", "150302", "150303", "150304", "150400", "150402", "150403", "150404", "150421", "150422", "150423", "150424", "150425", "150426", "150428", "150429", "150430", "150500", "150502", "150521", "150522", "150523", "150524", "150525", "150526", "150581", "150600", "150602", "150621", "150622", "150623", "150624", "150625", "150626", "150627", "150700", "150702", "150721", "150722", "150723", "150724", "150725", "150726", "150727", "150781", "150782", "150783", "150784", "150785", "150800", "150802", "150821", "150822", "150823", "150824", "150825", "150826", "150900", "150902", "150921", "150922", "150923", "150924", "150925", "150926", "150927", "150928", "150929", "150981", "152200", "152201", "152202", "152221", "152222", "152223", "152224", "152500", "152501", "152502", "152522", "152523", "152524", "152525", "152526", "152527", "152528", "152529", "152530", "152531", "152900", "152921", "152922", "152923", "210000", "210100", "210102", "210103", "210104", "210105", "210106", "210111", "210112", "210113", "210114", "210122", "210123", "210124", "210181", "210200", "210202", "210203", "210204", "210211", "210212", "210213", "210224", "210281", "210282", "210283", "210300", "210302", "210303", "210304", "210311", "210321", "210323", "210381", "210400", "210402", "210403", "210404", "210411", "210421", "210422", "210423", "210500", "210502", "210503", "210504", "210505", "210521", "210522", "210600", "210602", "210603", "210604", "210624", "210681", "210682", "210700", "210702", "210703", "210711", "210726", "210727", "210781", "210782", "210800", "210802", "210803", "210804", "210811", "210881", "210882", "210900", "210902", "210903", "210904", "210905", "210911", "210921", "210922", "211000", "211002", "211003", "211004", "211005", "211011", "211021", "211081", "211100", "211102", "211103", "211121", "211122", "211200", "211202", "211204", "211221", "211223", "211224", "211281", "211282", "211300", "211302", "211303", "211321", "211322", "211324", "211381", "211382", "211400", "211402", "211403", "211404", "211421", "211422", "211481", "220000", "220100", "220102", "220103", "220104", "220105", "220106", "220112", "220122", "220181", "220182", "220183", "220200", "220202", "220203", "220204", "220211", "220221", "220281", "220282", "220283", "220284", "220300", "220302", "220303", "220322", "220323", "220381", "220382", "220400", "220402", "220403", "220421", "220422", "220500", "220502", "220503", "220521", "220523", "220524", "220581", "220582", "220600", "220602", "220604", "220621", "220622", "220623", "220681", "220700", "220702", "220721", "220722", "220723", "220724", "220800", "220802", "220821", "220822", "220881", "220882", "222400", "222401", "222402", "222403", "222404", "222405", "222406", "222424", "222426", "230000", "230100", "230102", "230103", "230104", "230108", "230109", "230110", "230111", "230112", "230123", "230124", "230125", "230126", "230127", "230128", "230129", "230182", "230183", "230184", "230200", "230202", "230203", "230204", "230205", "230206", "230207", "230208", "230221", "230223", "230224", "230225", "230227", "230229", "230230", "230231", "230281", "230300", "230302", "230303", "230304", "230305", "230306", "230307", "230321", "230381", "230382", "230400", "230402", "230403", "230404", "230405", "230406", "230407", "230421", "230422", "230500", "230502", "230503", "230505", "230506", "230521", "230522", "230523", "230524", "230600", "230602", "230603", "230604", "230605", "230606", "230621", "230622", "230623", "230624", "230700", "230702", "230703", "230704", "230705", "230706", "230707", "230708", "230709", "230710", "230711", "230712", "230713", "230714", "230715", "230716", "230722", "230781", "230800", "230803", "230804", "230805", "230811", "230822", "230826", "230828", "230833", "230881", "230882", "230900", "230902", "230903", "230904", "230921", "231000", "231002", "231003", "231004", "231005", "231024", "231025", "231081", "231083", "231084", "231085", "231100", "231102", "231121", "231123", "231124", "231181", "231182", "231200", "231202", "231221", "231222", "231223", "231224", "231225", "231226", "231281", "231282", "231283", "232700", "232701", "232702", "232703", "232704", "232721", "232722", "232723", "310000", "310101", "310103", "310104", "310105", "310106", "310107", "310108", "310109", "310110", "310112", "310113", "310114", "310115", "310116", "310117", "310118", "310119", "310120", "310200", "310230", "320000", "320100", "320102", "320103", "320104", "320105", "320106", "320107", "320111", "320113", "320114", "320115", "320116", "320124", "320125", "320200", "320202", "320203", "320204", "320205", "320206", "320211", "320281", "320282", "320300", "320302", "320303", "320304", "320305", "320311", "320321", "320322", "320323", "320324", "320381", "320382", "320400", "320402", "320404", "320405", "320411", "320412", "320481", "320482", "320500", "320502", "320503", "320504", "320505", "320506", "320507", "320581", "320582", "320583", "320584", "320585", "320600", "320602", "320611", "320621", "320623", "320681", "320682", "320683", "320684", "320700", "320703", "320705", "320706", "320721", "320722", "320723", "320724", "320800", "320802", "320803", "320804", "320811", "320826", "320829", "320830", "320831", "320900", "320902", "320903", "320921", "320922", "320923", "320924", "320925", "320981", "320982", "321000", "321002", "321003", "321011", "321023", "321081", "321084", "321088", "321100", "321102", "321111", "321112", "321181", "321182", "321183", "321200", "321202", "321203", "321281", "321282", "321283", "321284", "321300", "321302", "321311", "321322", "321323", "321324", "330000", "330100", "330102", "330103", "330104", "330105", "330106", "330108", "330109", "330110", "330122", "330127", "330182", "330183", "330185", "330200", "330203", "330204", "330205", "330206", "330211", "330212", "330225", "330226", "330281", "330282", "330283", "330300", "330302", "330303", "330304", "330322", "330324", "330326", "330327", "330328", "330329", "330381", "330382", "330400", "330402", "330411", "330421", "330424", "330481", "330482", "330483", "330500", "330502", "330503", "330521", "330522", "330523", "330600", "330602", "330621", "330624", "330681", "330682", "330683", "330700", "330702", "330703", "330723", "330726", "330727", "330781", "330782", "330783", "330784", "330800", "330802", "330803", "330822", "330824", "330825", "330881", "330900", "330902", "330903", "330921", "330922", "331000", "331002", "331003", "331004", "331021", "331022", "331023", "331024", "331081", "331082", "331100", "331102", "331121", "331122", "331123", "331124", "331125", "331126", "331127", "331181", "340000", "340100", "340102", "340103", "340104", "340111", "340121", "340122", "340123", "340200", "340202", "340203", "340207", "340208", "340221", "340222", "340223", "340300", "340302", "340303", "340304", "340311", "340321", "340322", "340323", "340400", "340402", "340403", "340404", "340405", "340406", "340421", "340500", "340502", "340503", "340504", "340521", "340600", "340602", "340603", "340604", "340621", "340700", "340702", "340703", "340711", "340721", "340800", "340802", "340803", "340811", "340822", "340823", "340824", "340825", "340826", "340827", "340828", "340881", "341000", "341002", "341003", "341004", "341021", "341022", "341023", "341024", "341100", "341102", "341103", "341122", "341124", "341125", "341126", "341181", "341182", "341200", "341202", "341203", "341204", "341221", "341222", "341225", "341226", "341282", "341300", "341302", "341321", "341322", "341323", "341324", "341400", "341402", "341421", "341422", "341423", "341424", "341500", "341502", "341503", "341521", "341522", "341523", "341524", "341525", "341600", "341602", "341621", "341622", "341623", "341700", "341702", "341721", "341722", "341723", "341800", "341802", "341821", "341822", "341823", "341824", "341825", "341881", "350000", "350100", "350102", "350103", "350104", "350105", "350111", "350121", "350122", "350123", "350124", "350125", "350128", "350181", "350182", "350200", "350203", "350205", "350206", "350211", "350212", "350213", "350300", "350302", "350303", "350304", "350305", "350322", "350400", "350402", "350403", "350421", "350423", "350424", "350425", "350426", "350427", "350428", "350429", "350430", "350481", "350500", "350502", "350503", "350504", "350505", "350521", "350524", "350525", "350526", "350527", "350581", "350582", "350583", "350600", "350602", "350603", "350622", "350623", "350624", "350625", "350626", "350627", "350628", "350629", "350681", "350700", "350702", "350721", "350722", "350723", "350724", "350725", "350781", "350782", "350783", "350784", "350800", "350802", "350821", "350822", "350823", "350824", "350825", "350881", "350900", "350902", "350921", "350922", "350923", "350924", "350925", "350926", "350981", "350982", "360000", "360100", "360102", "360103", "360104", "360105", "360111", "360121", "360122", "360123", "360124", "360200", "360202", "360203", "360222", "360281", "360300", "360302", "360313", "360321", "360322", "360323", "360400", "360402", "360403", "360421", "360423", "360424", "360425", "360426", "360427", "360428", "360429", "360430", "360481", "360500", "360502", "360521", "360600", "360602", "360622", "360681", "360700", "360702", "360721", "360722", "360723", "360724", "360725", "360726", "360727", "360728", "360729", "360730", "360731", "360732", "360733", "360734", "360735", "360781", "360782", "360800", "360802", "360803", "360821", "360822", "360823", "360824", "360825", "360826", "360827", "360828", "360829", "360830", "360881", "360900", "360902", "360921", "360922", "360923", "360924", "360925", "360926", "360981", "360982", "360983", "361000", "361002", "361021", "361022", "361023", "361024", "361025", "361026", "361027", "361028", "361029", "361030", "361100", "361102", "361121", "361122", "361123", "361124", "361125", "361126", "361127", "361128", "361129", "361130", "361181", "370000", "370100", "370102", "370103", "370104", "370105", "370112", "370113", "370124", "370125", "370126", "370181", "370200", "370202", "370203", "370205", "370211", "370212", "370213", "370214", "370281", "370282", "370283", "370284", "370285", "370300", "370302", "370303", "370304", "370305", "370306", "370321", "370322", "370323", "370400", "370402", "370403", "370404", "370405", "370406", "370481", "370500", "370502", "370503", "370521", "370522", "370523", "370600", "370602", "370611", "370612", "370613", "370634", "370681", "370682", "370683", "370684", "370685", "370686", "370687", "370700", "370702", "370703", "370704", "370705", "370724", "370725", "370781", "370782", "370783", "370784", "370785", "370786", "370800", "370802", "370811", "370826", "370827", "370828", "370829", "370830", "370831", "370832", "370881", "370882", "370883", "370900", "370902", "370903", "370921", "370923", "370982", "370983", "371000", "371002", "371081", "371082", "371083", "371100", "371102", "371103", "371121", "371122", "371200", "371202", "371203", "371300", "371302", "371311", "371312", "371321", "371322", "371323", "371324", "371325", "371326", "371327", "371328", "371329", "371400", "371402", "371421", "371422", "371423", "371424", "371425", "371426", "371427", "371428", "371481", "371482", "371500", "371502", "371521", "371522", "371523", "371524", "371525", "371526", "371581", "371600", "371602", "371621", "371622", "371623", "371624", "371625", "371626", "371700", "371702", "371721", "371722", "371723", "371724", "371725", "371726", "371727", "371728", "410000", "410100", "410102", "410103", "410104", "410105", "410106", "410108", "410122", "410181", "410182", "410183", "410184", "410185", "410200", "410202", "410203", "410204", "410205", "410211", "410221", "410222", "410223", "410224", "410225", "410300", "410302", "410303", "410304", "410305", "410306", "410307", "410322", "410323", "410324", "410325", "410326", "410327", "410328", "410329", "410381", "410400", "410402", "410403", "410404", "410411", "410421", "410422", "410423", "410425", "410481", "410482", "410500", "410502", "410503", "410505", "410506", "410522", "410523", "410526", "410527", "410581", "410600", "410602", "410603", "410611", "410621", "410622", "410700", "410702", "410703", "410704", "410711", "410721", "410724", "410725", "410726", "410727", "410728", "410781", "410782", "410800", "410802", "410803", "410804", "410811", "410821", "410822", "410823", "410825", "410881", "410882", "410883", "410900", "410902", "410922", "410923", "410926", "410927", "410928", "411000", "411002", "411023", "411024", "411025", "411081", "411082", "411100", "411102", "411103", "411104", "411121", "411122", "411200", "411202", "411221", "411222", "411224", "411281", "411282", "411300", "411302", "411303", "411321", "411322", "411323", "411324", "411325", "411326", "411327", "411328", "411329", "411330", "411381", "411400", "411402", "411403", "411421", "411422", "411423", "411424", "411425", "411426", "411481", "411500", "411502", "411503", "411521", "411522", "411523", "411524", "411525", "411526", "411527", "411528", "411600", "411602", "411621", "411622", "411623", "411624", "411625", "411626", "411627", "411628", "411681", "411700", "411702", "411721", "411722", "411723", "411724", "411725", "411726", "411727", "411728", "411729", "420000", "420100", "420102", "420103", "420104", "420105", "420106", "420107", "420111", "420112", "420113", "420114", "420115", "420116", "420117", "420200", "420202", "420203", "420204", "420205", "420222", "420281", "420300", "420302", "420303", "420321", "420322", "420323", "420324", "420325", "420381", "420500", "420502", "420503", "420504", "420505", "420506", "420525", "420526", "420527", "420528", "420529", "420581", "420582", "420583", "420600", "420602", "420606", "420607", "420624", "420625", "420626", "420682", "420683", "420684", "420700", "420702", "420703", "420704", "420800", "420802", "420804", "420821", "420822", "420881", "420900", "420902", "420921", "420922", "420923", "420981", "420982", "420984", "421000", "421002", "421003", "421022", "421023", "421024", "421081", "421083", "421087", "421100", "421102", "421121", "421122", "421123", "421124", "421125", "421126", "421127", "421181", "421182", "421200", "421202", "421221", "421222", "421223", "421224", "421281", "421300", "421302", "421381", "422800", "422801", "422802", "422822", "422823", "422825", "422826", "422827", "422828", "429000", "429004", "429005", "429006", "429021", "430000", "430100", "430102", "430103", "430104", "430105", "430111", "430121", "430122", "430124", "430181", "430200", "430202", "430203", "430204", "430211", "430221", "430223", "430224", "430225", "430281", "430300", "430302", "430304", "430321", "430381", "430382", "430400", "430405", "430406", "430407", "430408", "430412", "430421", "430422", "430423", "430424", "430426", "430481", "430482", "430500", "430502", "430503", "430511", "430521", "430522", "430523", "430524", "430525", "430527", "430528", "430529", "430581", "430600", "430602", "430603", "430611", "430621", "430623", "430624", "430626", "430681", "430682", "430700", "430702", "430703", "430721", "430722", "430723", "430724", "430725", "430726", "430781", "430800", "430802", "430811", "430821", "430822", "430900", "430902", "430903", "430921", "430922", "430923", "430981", "431000", "431002", "431003", "431021", "431022", "431023", "431024", "431025", "431026", "431027", "431028", "431081", "431100", "431102", "431103", "431121", "431122", "431123", "431124", "431125", "431126", "431127", "431128", "431129", "431200", "431202", "431221", "431222", "431223", "431224", "431225", "431226", "431227", "431228", "431229", "431230", "431281", "431300", "431302", "431321", "431322", "431381", "431382", "433100", "433101", "433122", "433123", "433124", "433125", "433126", "433127", "433130", "440000", "440100", "440103", "440104", "440105", "440106", "440111", "440112", "440113", "440114", "440115", "440116", "440183", "440184", "440200", "440203", "440204", "440205", "440222", "440224", "440229", "440232", "440233", "440281", "440282", "440300", "440303", "440304", "440305", "440306", "440307", "440308", "440400", "440402", "440403", "440404", "440500", "440507", "440511", "440512", "440513", "440514", "440515", "440523", "440600", "440604", "440605", "440606", "440607", "440608", "440700", "440703", "440704", "440705", "440781", "440783", "440784", "440785", "440800", "440802", "440803", "440804", "440811", "440823", "440825", "440881", "440882", "440883", "440900", "440902", "440903", "440923", "440981", "440982", "440983", "441200", "441202", "441203", "441223", "441224", "441225", "441226", "441283", "441284", "441300", "441302", "441303", "441322", "441323", "441324", "441400", "441402", "441421", "441422", "441423", "441424", "441426", "441427", "441481", "441500", "441502", "441521", "441523", "441581", "441600", "441602", "441621", "441622", "441623", "441624", "441625", "441700", "441702", "441721", "441723", "441781", "441800", "441802", "441821", "441823", "441825", "441826", "441827", "441881", "441882", "441900", "442000", "445100", "445102", "445121", "445122", "445200", "445202", "445221", "445222", "445224", "445281", "445300", "445302", "445321", "445322", "445323", "445381", "450000", "450100", "450102", "450103", "450105", "450107", "450108", "450109", "450122", "450123", "450124", "450125", "450126", "450127", "450200", "450202", "450203", "450204", "450205", "450221", "450222", "450223", "450224", "450225", "450226", "450300", "450302", "450303", "450304", "450305", "450311", "450321", "450322", "450323", "450324", "450325", "450326", "450327", "450328", "450329", "450330", "450331", "450332", "450400", "450403", "450404", "450405", "450421", "450422", "450423", "450481", "450500", "450502", "450503", "450512", "450521", "450600", "450602", "450603", "450621", "450681", "450700", "450702", "450703", "450721", "450722", "450800", "450802", "450803", "450804", "450821", "450881", "450900", "450902", "450921", "450922", "450923", "450924", "450981", "451000", "451002", "451021", "451022", "451023", "451024", "451025", "451026", "451027", "451028", "451029", "451030", "451031", "451100", "451102", "451121", "451122", "451123", "451200", "451202", "451221", "451222", "451223", "451224", "451225", "451226", "451227", "451228", "451229", "451281", "451300", "451302", "451321", "451322", "451323", "451324", "451381", "451400", "451402", "451421", "451422", "451423", "451424", "451425", "451481", "460000", "460100", "460105", "460106", "460107", "460108", "460200", "469000", "469001", "469002", "469003", "469005", "469006", "469007", "469025", "469026", "469027", "469028", "469030", "469031", "469033", "469034", "469035", "469036", "469037", "469038", "469039", "500000", "500101", "500102", "500103", "500104", "500105", "500106", "500107", "500108", "500109", "500110", "500111", "500112", "500113", "500114", "500115", "500116", "500117", "500118", "500119", "500200", "500222", "500223", "500224", "500225", "500226", "500227", "500228", "500229", "500230", "500231", "500232", "500233", "500234", "500235", "500236", "500237", "500238", "500240", "500241", "500242", "500243", "510000", "510100", "510104", "510105", "510106", "510107", "510108", "510112", "510113", "510114", "510115", "510121", "510122", "510124", "510129", "510131", "510132", "510181", "510182", "510183", "510184", "510300", "510302", "510303", "510304", "510311", "510321", "510322", "510400", "510402", "510403", "510411", "510421", "510422", "510500", "510502", "510503", "510504", "510521", "510522", "510524", "510525", "510600", "510603", "510623", "510626", "510681", "510682", "510683", "510700", "510703", "510704", "510722", "510723", "510724", "510725", "510726", "510727", "510781", "510800", "510802", "510811", "510812", "510821", "510822", "510823", "510824", "510900", "510903", "510904", "510921", "510922", "510923", "511000", "511002", "511011", "511024", "511025", "511028", "511100", "511102", "511111", "511112", "511113", "511123", "511124", "511126", "511129", "511132", "511133", "511181", "511300", "511302", "511303", "511304", "511321", "511322", "511323", "511324", "511325", "511381", "511400", "511402", "511421", "511422", "511423", "511424", "511425", "511500", "511502", "511521", "511522", "511523", "511524", "511525", "511526", "511527", "511528", "511529", "511600", "511602", "511621", "511622", "511623", "511681", "511700", "511702", "511721", "511722", "511723", "511724", "511725", "511781", "511800", "511802", "511821", "511822", "511823", "511824", "511825", "511826", "511827", "511900", "511902", "511921", "511922", "511923", "512000", "512002", "512021", "512022", "512081", "513200", "513221", "513222", "513223", "513224", "513225", "513226", "513227", "513228", "513229", "513230", "513231", "513232", "513233", "513300", "513321", "513322", "513323", "513324", "513325", "513326", "513327", "513328", "513329", "513330", "513331", "513332", "513333", "513334", "513335", "513336", "513337", "513338", "513400", "513401", "513422", "513423", "513424", "513425", "513426", "513427", "513428", "513429", "513430", "513431", "513432", "513433", "513434", "513435", "513436", "513437", "520000", "520100", "520102", "520103", "520111", "520112", "520113", "520114", "520121", "520122", "520123", "520181", "520200", "520201", "520203", "520221", "520222", "520300", "520302", "520303", "520321", "520322", "520323", "520324", "520325", "520326", "520327", "520328", "520329", "520330", "520381", "520382", "520400", "520402", "520421", "520422", "520423", "520424", "520425", "522200", "522201", "522222", "522223", "522224", "522225", "522226", "522227", "522228", "522229", "522230", "522300", "522301", "522322", "522323", "522324", "522325", "522326", "522327", "522328", "522400", "522401", "522422", "522423", "522424", "522425", "522426", "522427", "522428", "522600", "522601", "522622", "522623", "522624", "522625", "522626", "522627", "522628", "522629", "522630", "522631", "522632", "522633", "522634", "522635", "522636", "522700", "522701", "522702", "522722", "522723", "522725", "522726", "522727", "522728", "522729", "522730", "522731", "522732", "530000", "530100", "530102", "530103", "530111", "530112", "530113", "530121", "530122", "530124", "530125", "530126", "530127", "530128", "530129", "530181", "530300", "530302", "530321", "530322", "530323", "530324", "530325", "530326", "530328", "530381", "530400", "530402", "530421", "530422", "530423", "530424", "530425", "530426", "530427", "530428", "530500", "530502", "530521", "530522", "530523", "530524", "530600", "530602", "530621", "530622", "530623", "530624", "530625", "530626", "530627", "530628", "530629", "530630", "530700", "530702", "530721", "530722", "530723", "530724", "530800", "530802", "530821", "530822", "530823", "530824", "530825", "530826", "530827", "530828", "530829", "530900", "530902", "530921", "530922", "530923", "530924", "530925", "530926", "530927", "532300", "532301", "532322", "532323", "532324", "532325", "532326", "532327", "532328", "532329", "532331", "532500", "532501", "532502", "532522", "532523", "532524", "532525", "532526", "532527", "532528", "532529", "532530", "532531", "532532", "532600", "532621", "532622", "532623", "532624", "532625", "532626", "532627", "532628", "532800", "532801", "532822", "532823", "532900", "532901", "532922", "532923", "532924", "532925", "532926", "532927", "532928", "532929", "532930", "532931", "532932", "533100", "533102", "533103", "533122", "533123", "533124", "533300", "533321", "533323", "533324", "533325", "533400", "533421", "533422", "533423", "540000", "540100", "540102", "540121", "540122", "540123", "540124", "540125", "540126", "540127", "542100", "542121", "542122", "542123", "542124", "542125", "542126", "542127", "542128", "542129", "542132", "542133", "542200", "542221", "542222", "542223", "542224", "542225", "542226", "542227", "542228", "542229", "542231", "542232", "542233", "542300", "542301", "542322", "542323", "542324", "542325", "542326", "542327", "542328", "542329", "542330", "542331", "542332", "542333", "542334", "542335", "542336", "542337", "542338", "542400", "542421", "542422", "542423", "542424", "542425", "542426", "542427", "542428", "542429", "542430", "542500", "542521", "542522", "542523", "542524", "542525", "542526", "542527", "542600", "542621", "542622", "542623", "542624", "542625", "542626", "542627", "610000", "610100", "610102", "610103", "610104", "610111", "610112", "610113", "610114", "610115", "610116", "610122", "610124", "610125", "610126", "610200", "610202", "610203", "610204", "610222", "610300", "610302", "610303", "610304", "610322", "610323", "610324", "610326", "610327", "610328", "610329", "610330", "610331", "610400", "610402", "610403", "610404", "610422", "610423", "610424", "610425", "610426", "610427", "610428", "610429", "610430", "610431", "610481", "610500", "610502", "610521", "610522", "610523", "610524", "610525", "610526", "610527", "610528", "610581", "610582", "610600", "610602", "610621", "610622", "610623", "610624", "610625", "610626", "610627", "610628", "610629", "610630", "610631", "610632", "610700", "610702", "610721", "610722", "610723", "610724", "610725", "610726", "610727", "610728", "610729", "610730", "610800", "610802", "610821", "610822", "610823", "610824", "610825", "610826", "610827", "610828", "610829", "610830", "610831", "610900", "610902", "610921", "610922", "610923", "610924", "610925", "610926", "610927", "610928", "610929", "611000", "611002", "611021", "611022", "611023", "611024", "611025", "611026", "620000", "620100", "620102", "620103", "620104", "620105", "620111", "620121", "620122", "620123", "620200", "620300", "620302", "620321", "620400", "620402", "620403", "620421", "620422", "620423", "620500", "620502", "620503", "620521", "620522", "620523", "620524", "620525", "620600", "620602", "620621", "620622", "620623", "620700", "620702", "620721", "620722", "620723", "620724", "620725", "620800", "620802", "620821", "620822", "620823", "620824", "620825", "620826", "620900", "620902", "620921", "620922", "620923", "620924", "620981", "620982", "621000", "621002", "621021", "621022", "621023", "621024", "621025", "621026", "621027", "621100", "621102", "621121", "621122", "621123", "621124", "621125", "621126", "621200", "621202", "621221", "621222", "621223", "621224", "621225", "621226", "621227", "621228", "622900", "622901", "622921", "622922", "622923", "622924", "622925", "622926", "622927", "623000", "623001", "623021", "623022", "623023", "623024", "623025", "623026", "623027", "630000", "630100", "630102", "630103", "630104", "630105", "630121", "630122", "630123", "632100", "632121", "632122", "632123", "632126", "632127", "632128", "632200", "632221", "632222", "632223", "632224", "632300", "632321", "632322", "632323", "632324", "632500", "632521", "632522", "632523", "632524", "632525", "632600", "632621", "632622", "632623", "632624", "632625", "632626", "632700", "632721", "632722", "632723", "632724", "632725", "632726", "632800", "632801", "632802", "632821", "632822", "632823", "640000", "640100", "640104", "640105", "640106", "640121", "640122", "640181", "640200", "640202", "640205", "640221", "640300", "640302", "640323", "640324", "640381", "640400", "640402", "640422", "640423", "640424", "640425", "640500", "640502", "640521", "640522", "650000", "650100", "650102", "650103", "650104", "650105", "650106", "650107", "650108", "650121", "650200", "650202", "650203", "650204", "650205", "652100", "652101", "652122", "652123", "652200", "652201", "652222", "652223", "652300", "652301", "652302", "652303", "652323", "652324", "652325", "652327", "652328", "652700", "652701", "652722", "652723", "652800", "652801", "652822", "652823", "652824", "652825", "652826", "652827", "652828", "652829", "652900", "652901", "652922", "652923", "652924", "652925", "652926", "652927", "652928", "652929", "653000", "653001", "653022", "653023", "653024", "653100", "653101", "653121", "653122", "653123", "653124", "653125", "653126", "653127", "653128", "653129", "653130", "653131", "653200", "653201", "653221", "653222", "653223", "653224", "653225", "653226", "653227", "654000", "654002", "654003", "654021", "654022", "654023", "654024", "654025", "654026", "654027", "654028", "654200", "654201", "654202", "654221", "654223", "654224", "654225", "654226", "654300", "654301", "654321", "654322", "654323", "654324", "654325", "654326", "659000", "659001", "659002", "659003", "659004", "710000", "810000", "820000"}; + + @Deprecated + public String getValidSsn(BaseProviders faker) { + return generateValid(faker); + } + /** * Generate a valid Zh_CN Id numbers * - * @param faker a Faker instance for generating Zh_CN Id numbers - * @return a Zh_CN Id numbers string. or null if exception. + * @param faker a Faker instance for generating Chinese ID numbers + * @return a Chinese ID number string */ - public String getValidSsn(BaseProviders faker) { + @Override + public String generateValid(BaseProviders faker) { RandomService rand = faker.random(); String loc = faker.options().option(LOCATIONS); final int dayLength = 8; @@ -83,4 +95,9 @@ private void generateDay(RandomService rand, int yearStart, int monthStart, int res[offset + 6] = (char)('0' + day / 10); res[offset + 7] = (char)('0' + day % 10); } + + @Override + public String generateInvalid(BaseProviders faker) { + return generateValid(faker) + "42"; + } } diff --git a/src/main/java/net/datafaker/idnumbers/EnIdNumber.java b/src/main/java/net/datafaker/idnumbers/EnIdNumber.java deleted file mode 100644 index 82e9b4586..000000000 --- a/src/main/java/net/datafaker/idnumbers/EnIdNumber.java +++ /dev/null @@ -1,30 +0,0 @@ -package net.datafaker.idnumbers; - -import net.datafaker.providers.base.BaseProviders; - -import java.util.regex.Pattern; - -public class EnIdNumber implements IdNumbers { - private static final Pattern[] INVALID_SSN_PATTERNS = { - Pattern.compile("0{3}-\\\\d{2}-\\\\d{4}"), - Pattern.compile("\\d{3}-0{2}-\\d{4}"), - Pattern.compile("\\d{3}-\\d{2}-0{4}"), - Pattern.compile("666-\\d{2}-\\d{4}"), - Pattern.compile("9\\d{2}-\\d{2}-\\d{4}")}; - - public String getValidSsn(BaseProviders f) { - String ssn = f.regexify("[0-8]\\d{2}-\\d{2}-\\d{4}"); - - boolean isValid = true; - for (Pattern invalidSSNPattern : INVALID_SSN_PATTERNS) { - if (invalidSSNPattern.matcher(ssn).matches()) { - isValid = false; - break; - } - } - if (!isValid) { - ssn = getValidSsn(f); - } - return ssn; - } -} diff --git a/src/main/java/net/datafaker/idnumbers/EstonianIdNumber.java b/src/main/java/net/datafaker/idnumbers/EstonianIdNumber.java index bd4897a96..eacc8d1aa 100644 --- a/src/main/java/net/datafaker/idnumbers/EstonianIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/EstonianIdNumber.java @@ -18,12 +18,17 @@ public class EstonianIdNumber implements IdNumbers { private static final int[] CHECKSUM_COEFFICIENTS = {1, 2, 3, 4, 5, 6, 7, 8, 9, 1}; private static final int[] CHECKSUM_COEFFICIENTS2 = {3, 4, 5, 6, 7, 8, 9, 1, 2, 3}; - public String getInvalid(final BaseProviders faker) { + @Override + public String country() { + return "EE"; + } + + public String generateInvalid(final BaseProviders faker) { String digits = basePart(faker); return digits + (checksum(digits) + 1) % 10; } - public String getValid(final BaseProviders faker) { + public String generateValid(final BaseProviders faker) { String digits = basePart(faker); return digits + checksum(digits); } diff --git a/src/main/java/net/datafaker/idnumbers/GeorgianIdNumber.java b/src/main/java/net/datafaker/idnumbers/GeorgianIdNumber.java new file mode 100644 index 000000000..4ba5556ac --- /dev/null +++ b/src/main/java/net/datafaker/idnumbers/GeorgianIdNumber.java @@ -0,0 +1,23 @@ +package net.datafaker.idnumbers; + +import net.datafaker.providers.base.BaseProviders; + +/** + * Generates ID numbers for Georgian citizens and Residents + */ +public class GeorgianIdNumber implements IdNumbers { + @Override + public String country() { + return "GE"; + } + + @Override + public String generateValid(BaseProviders faker) { + return faker.numerify("###########"); + } + + @Override + public String generateInvalid(BaseProviders faker) { + return faker.numerify("###########42"); + } +} diff --git a/src/main/java/net/datafaker/idnumbers/IdNumbers.java b/src/main/java/net/datafaker/idnumbers/IdNumbers.java index 58202538b..aeca33c73 100644 --- a/src/main/java/net/datafaker/idnumbers/IdNumbers.java +++ b/src/main/java/net/datafaker/idnumbers/IdNumbers.java @@ -1,7 +1,24 @@ package net.datafaker.idnumbers; +import net.datafaker.providers.base.BaseProviders; + import java.time.format.DateTimeFormatter; public interface IdNumbers { DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyMMdd"); + + /** + * @return ISO-2 code of the country ("US" for America, "EE" for Estonia etc.) + */ + String country(); + + /** + * Generates a valid ID number for given country (a.k.a. "SSN", "Personal code" etc.) + */ + String generateValid(BaseProviders faker); + + /** + * Generates an invalid ID number for given country (a.k.a. "SSN", "Personal code" etc.) + */ + String generateInvalid(BaseProviders faker); } diff --git a/src/main/java/net/datafaker/idnumbers/MacedonianIdNumber.java b/src/main/java/net/datafaker/idnumbers/MacedonianIdNumber.java index 01c49bdf3..160a0a5a2 100644 --- a/src/main/java/net/datafaker/idnumbers/MacedonianIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/MacedonianIdNumber.java @@ -14,12 +14,17 @@ public class MacedonianIdNumber implements IdNumbers { private static final List REGIONS = List.of("41", "42", "43", "44", "45", "46", "47", "48", "49"); - public String getValid(BaseProviders faker) { + @Override + public String country() { + return "MK"; + } + + public String generateValid(BaseProviders faker) { String basePart = basePart(faker); return basePart + checksum(basePart); } - public String getInvalid(BaseProviders faker) { + public String generateInvalid(BaseProviders faker) { String basePart = basePart(faker); return basePart + (checksum(basePart) + 1) % 10; } diff --git a/src/main/java/net/datafaker/idnumbers/EsMXIdNumber.java b/src/main/java/net/datafaker/idnumbers/MexicanIdNumber.java similarity index 76% rename from src/main/java/net/datafaker/idnumbers/EsMXIdNumber.java rename to src/main/java/net/datafaker/idnumbers/MexicanIdNumber.java index c232d4760..8724d7d15 100644 --- a/src/main/java/net/datafaker/idnumbers/EsMXIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/MexicanIdNumber.java @@ -3,13 +3,18 @@ import net.datafaker.providers.base.BaseProviders; import net.datafaker.providers.base.Options; -import java.util.Set; +import java.time.LocalDate; /** * Implementation based on the definition at * https://en.wikipedia.org/wiki/Unique_Population_Registry_Code */ -public class EsMXIdNumber implements IdNumbers { +public class MexicanIdNumber implements IdNumbers { + + @Override + public String country() { + return "MX"; + } private static final String[] CHA = { "HEFA560427MVZRRL04", @@ -39,7 +44,11 @@ public class EsMXIdNumber implements IdNumbers { "TB", "TM", "TL", "VE", "YU", "ZA", "NE", }; private static final char[] SEX = {'H', 'M'}; - private static final Set BIG_MONTHS = Set.of(1, 3, 5, 7, 8, 10, 12); + + @Deprecated + public String get(BaseProviders faker) { + return generateValid(faker); + } /** * Get A valid MEX CURP. @@ -47,7 +56,7 @@ public class EsMXIdNumber implements IdNumbers { * @param faker faker * @return A valid MEX CURP. */ - public String get(BaseProviders faker) { + public String generateValid(BaseProviders faker) { final Options options = faker.options(); char[] birthDay = getBirthday(faker).toCharArray(); final char[] ssn = new char[18]; @@ -67,13 +76,18 @@ public String get(BaseProviders faker) { return String.valueOf(ssn); } + @Deprecated + public String getWrong(BaseProviders faker) { + return generateInvalid(faker); + } + /** * Get A invalid MEX CURP. * * @param faker faker * @return A invalid MEX CURP. */ - public String getWrong(BaseProviders faker) { + public String generateInvalid(BaseProviders faker) { return faker.options().option(CHA); } @@ -84,29 +98,8 @@ public String getWrong(BaseProviders faker) { * @return A valid date. */ private String getBirthday(BaseProviders f) { - int year = f.random().nextInt(1900, 2021); - int month = f.random().nextInt(1, 12); - int day = validDay(year, month, f); - return String.valueOf(year * 10000 + month * 100 + day); - } - - - /** - * Gets a valid day according to year and month. - * - * @param year A specific year. - * @param month A specific month. - * @param f A specific instance of Faker. - * @return A valid day. - */ - private int validDay(int year, int month, BaseProviders f) { - if (month == 2) { - if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) { - return f.random().nextInt(1, 29); - } else return f.random().nextInt(1, 28); - } else if (BIG_MONTHS.contains(month)) { - return f.random().nextInt(1, 31); - } else return f.random().nextInt(1, 30); + LocalDate birthday = f.timeAndDate().birthday(0, 120); + return String.valueOf(birthday.getYear() * 10000 + birthday.getMonthValue() * 100 + birthday.getDayOfMonth()); } /** diff --git a/src/main/java/net/datafaker/idnumbers/MoldovaIdNumber.java b/src/main/java/net/datafaker/idnumbers/MoldovanIdNumber.java similarity index 89% rename from src/main/java/net/datafaker/idnumbers/MoldovaIdNumber.java rename to src/main/java/net/datafaker/idnumbers/MoldovanIdNumber.java index 4c2fe54f6..61a1c3423 100644 --- a/src/main/java/net/datafaker/idnumbers/MoldovaIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/MoldovanIdNumber.java @@ -12,16 +12,21 @@ * Overview * Online generator */ -public class MoldovaIdNumber implements IdNumbers { +public class MoldovanIdNumber implements IdNumbers { private static final int[] CHECKSUM_MASK = new int[]{7, 3, 1, 7, 3, 1, 7, 3, 1, 7, 3, 1}; - public String getValid(BaseProviders faker) { + @Override + public String country() { + return "MD"; + } + + public String generateValid(BaseProviders faker) { String basePart = basePart(faker); return basePart + checksum(basePart); } - public String getInvalid(BaseProviders faker) { + public String generateInvalid(BaseProviders faker) { String basePart = basePart(faker); return basePart + (checksum(basePart) + 1) % 10; } diff --git a/src/main/java/net/datafaker/idnumbers/PeselNumber.java b/src/main/java/net/datafaker/idnumbers/PolishIdNumber.java similarity index 56% rename from src/main/java/net/datafaker/idnumbers/PeselNumber.java rename to src/main/java/net/datafaker/idnumbers/PolishIdNumber.java index 1a616be6f..a3bf5790d 100644 --- a/src/main/java/net/datafaker/idnumbers/PeselNumber.java +++ b/src/main/java/net/datafaker/idnumbers/PolishIdNumber.java @@ -10,44 +10,59 @@ * https://isap.sejm.gov.pl/isap.nsf/DocDetails.xsp?id=WDU20210000510 and the * description at https://en.wikipedia.org/wiki/PESEL */ -public class PeselNumber implements IdNumbers { +public class PolishIdNumber implements IdNumbers { public static final int PESEL_LENGTH = 11; - private final BaseProviders faker; + @Override + public String country() { + return "PL"; + } public enum Gender { MALE, FEMALE, ANY } - public PeselNumber(BaseProviders faker) { - this.faker = faker; + @Override + public String generateValid(BaseProviders faker) { + return get(faker, faker.timeAndDate().birthday(0, 100), Gender.ANY); } - public String get(LocalDate birthDate, Gender gender) { - return getInternal(birthDate, Optional.ofNullable(gender).orElse(Gender.ANY)); + public String get(BaseProviders faker, LocalDate birthDate, Gender gender) { + int[] digits = generateDigits(faker, birthDate, Optional.ofNullable(gender).orElse(Gender.ANY)); + int controlDigit = getControlDigit(digits); + return toString(digits, controlDigit); } - private String getInternal(LocalDate birthDate, Gender gender) { - final int[] digits = new int[PESEL_LENGTH - 1]; - digits[0] = birthDate.getYear() / 10 % 10; - digits[1] = birthDate.getYear() % 10; + @Override + public String generateInvalid(BaseProviders faker) { + int[] digits = generateDigits(faker, faker.timeAndDate().birthday(0, 100), Gender.ANY); + int controlDigit = getControlDigit(digits); + int invalidControlDigit = (controlDigit + 1) % 10; + return toString(digits, invalidControlDigit); + } + private int[] generateDigits(BaseProviders faker, LocalDate birthDate, Gender gender) { int monthEncoded = getMonthEncoded(birthDate.getYear(), birthDate.getMonthValue()); - digits[2] = monthEncoded / 10; - digits[3] = monthEncoded % 10; + return new int[]{ + birthDate.getYear() / 10 % 10, + birthDate.getYear() % 10, - digits[4] = birthDate.getDayOfMonth() / 10; - digits[5] = birthDate.getDayOfMonth() % 10; + monthEncoded / 10, + monthEncoded % 10, - digits[6] = randomDigit(); - digits[7] = randomDigit(); - digits[8] = randomDigit(); + birthDate.getDayOfMonth() / 10, + birthDate.getDayOfMonth() % 10, - digits[9] = getGenderDigit(gender); + randomDigit(faker), + randomDigit(faker), + randomDigit(faker), - final int controlDigit = getControlDigit(digits); + getGenderDigit(faker, gender) + }; + } + private static String toString(int[] digits, int controlDigit) { final StringBuilder peselSb = new StringBuilder(PESEL_LENGTH); for (int digit : digits) { peselSb.append(digit); @@ -56,7 +71,7 @@ private String getInternal(LocalDate birthDate, Gender gender) { return peselSb.toString(); } - private int randomDigit() { + private int randomDigit(BaseProviders faker) { return faker.random().nextInt(10); } @@ -66,11 +81,11 @@ private int getControlDigit(int[] digits) { return (10 - sum % 10) % 10; } - private int getGenderDigit(Gender gender) { + private int getGenderDigit(BaseProviders faker, Gender gender) { return switch (gender) { case FEMALE -> faker.random().nextInt(5) * 2; case MALE -> faker.random().nextInt(5) * 2 + 1; - default -> randomDigit(); + default -> randomDigit(faker); }; } diff --git a/src/main/java/net/datafaker/idnumbers/PtNifIdNumber.java b/src/main/java/net/datafaker/idnumbers/PortugueseIdNumber.java similarity index 89% rename from src/main/java/net/datafaker/idnumbers/PtNifIdNumber.java rename to src/main/java/net/datafaker/idnumbers/PortugueseIdNumber.java index 827751989..102ab9df9 100644 --- a/src/main/java/net/datafaker/idnumbers/PtNifIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/PortugueseIdNumber.java @@ -11,13 +11,17 @@ * See Número de identificação fiscal * and VAT identification number */ -public class PtNifIdNumber implements IdNumbers { +public class PortugueseIdNumber implements IdNumbers { + @Override + public String country() { + return "PT"; + } private static final Character[] VALID_FIRST_DIGITS = {'1', '2', '3', '5', '6', '8'}; private static final String[] VALID_FIRST_DOUBLE_DIGITS = {"45", "70", "71", "72", "74", "75", "77", "79", "90", "91", "98", "99"}; - public String getInvalid(final BaseProviders faker) { + public String generateInvalid(final BaseProviders faker) { String digits = faker.number().digits(8); int digitSum = calculateDigitSum(digits); // by adding 5 to a valid checksum, we should invalidate @@ -25,7 +29,7 @@ public String getInvalid(final BaseProviders faker) { return digits + (digitSum + 5); } - public String getValid(final BaseProviders faker) { + public String generateValid(final BaseProviders faker) { String digits; if (faker.random().nextBoolean()) { final char firstDigit = faker.options().option(VALID_FIRST_DIGITS); diff --git a/src/main/java/net/datafaker/idnumbers/NricNumber.java b/src/main/java/net/datafaker/idnumbers/SingaporeIdNumber.java similarity index 75% rename from src/main/java/net/datafaker/idnumbers/NricNumber.java rename to src/main/java/net/datafaker/idnumbers/SingaporeIdNumber.java index 2e9aa897c..ba2749b13 100644 --- a/src/main/java/net/datafaker/idnumbers/NricNumber.java +++ b/src/main/java/net/datafaker/idnumbers/SingaporeIdNumber.java @@ -10,13 +10,16 @@ * Generate number of UIN/FIN for Singapore. * Algorithm is given from http://www.ngiam.net/NRIC/ */ -public class NricNumber implements IdNumbers { +public class SingaporeIdNumber implements IdNumbers { + @Override + public String country() { + return "SG"; + } - public enum Type {SINGAPOREAN_TWENTIETH_CENTURY, FOREIGNER_TWENTIETH_CENTURY, SINGAPOREAN_TWENTY_FIRST_CENTURY, FOREIGNER_TWENTY_FIRST_CENTURY} + public enum Type {SINGAPOREAN_TWENTIETH_CENTURY, FOREIGNER_TWENTIETH_CENTURY, SINGAPOREAN_TWENTY_FIRST_CENTURY, FOREIGNER_TWENTY_FIRST_CENTURY;} private record NricType(char firstLetter, String matchLetters, int[] code, int initialValue) { - - public String format(int[] digits) { + private String format(int[] digits) { int value = initialValue; StringBuilder id = new StringBuilder(String.valueOf(firstLetter)); for (int i = 0; i < digits.length; i++) { @@ -41,6 +44,21 @@ public String format(int[] digits) { INITIALIZER.put(Type.FOREIGNER_TWENTY_FIRST_CENTURY, new NricType('G', FIN_LETTERS, CODE, 4)); } + @Override + public String generateValid(BaseProviders faker) { + return getValidFIN(faker, faker.options().option( + Type.SINGAPOREAN_TWENTIETH_CENTURY, + Type.FOREIGNER_TWENTIETH_CENTURY, + Type.SINGAPOREAN_TWENTY_FIRST_CENTURY, + Type.FOREIGNER_TWENTY_FIRST_CENTURY + )); + } + + @Override + public String generateInvalid(BaseProviders faker) { + return generateValid(faker) + "42"; + } + public static String getValidFIN(BaseProviders f, Type type) { final RandomService random = f.random(); final int[] number = new int[7]; @@ -49,5 +67,4 @@ public static String getValidFIN(BaseProviders f, Type type) { } return INITIALIZER.get(type).format(number); } - } diff --git a/src/main/java/net/datafaker/idnumbers/EnZAIdNumber.java b/src/main/java/net/datafaker/idnumbers/SouthAfricanIdNumber.java similarity index 86% rename from src/main/java/net/datafaker/idnumbers/EnZAIdNumber.java rename to src/main/java/net/datafaker/idnumbers/SouthAfricanIdNumber.java index 2857a7e77..8a849d154 100644 --- a/src/main/java/net/datafaker/idnumbers/EnZAIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/SouthAfricanIdNumber.java @@ -10,33 +10,48 @@ * Implementation based on the definition at * https://en.wikipedia.org/wiki/South_African_identity_card */ +public class SouthAfricanIdNumber implements IdNumbers { -public class EnZAIdNumber implements IdNumbers { + @Override + public String country() { + return "ZA"; + } private static final String[] VALID_PATTERN = {"##########08#", "##########18#"}; private static final String[] CODE_PATTERN = {"18", "08"}; + @Deprecated + public String getValidSsn(BaseProviders faker) { + return generateValid(faker); + } + /** * Generate a valid social security number on faker * * @param f the java-faker * @return a valid social security number on faker */ - public String getValidSsn(BaseProviders f) { - String candidate = DATE_TIME_FORMATTER.format(f.date().birthdayLocalDate(0, 100)) + @Override + public String generateValid(BaseProviders f) { + String candidate = DATE_TIME_FORMATTER.format(f.timeAndDate().birthday(0, 100)) + f.numerify("####") + f.options().option(CODE_PATTERN); return candidate + calculateChecksum(candidate, 12); } + @Deprecated + public String getInValidSsn(BaseProviders f) { + return generateInvalid(f); + } + /** - * Generate a invalid social security number on faker + * Generate an invalid social security number on faker * * @param f the java-faker - * @return a invalid social security number on faker + * @return an invalid social security number on faker */ - public String getInValidSsn(BaseProviders f) { - + @Override + public String generateInvalid(BaseProviders f) { String ssn = f.numerify(f.options().option(VALID_PATTERN)); while (isValidEnZASsn(ssn)) { String pattern = getPattern(f); diff --git a/src/main/java/net/datafaker/idnumbers/KoKrIdNumber.java b/src/main/java/net/datafaker/idnumbers/SouthKoreanIdNumber.java similarity index 87% rename from src/main/java/net/datafaker/idnumbers/KoKrIdNumber.java rename to src/main/java/net/datafaker/idnumbers/SouthKoreanIdNumber.java index c9b93066f..2f5b1e2b3 100644 --- a/src/main/java/net/datafaker/idnumbers/KoKrIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/SouthKoreanIdNumber.java @@ -11,9 +11,19 @@ * Implementation based on the description at * Wikipedia - Resident registration number */ -public class KoKrIdNumber implements IdNumbers { +public class SouthKoreanIdNumber implements IdNumbers { + @Override + public String country() { + return "KR"; + } + @Deprecated public String getValidRrn(BaseProviders f) { + return generateValid(f); + } + + @Override + public String generateValid(BaseProviders f) { StringBuilder patternBuilder = new StringBuilder(); LocalDate now = LocalDate.now(); String iso = f.nation().isoCountry(); @@ -67,4 +77,8 @@ private String generateDay(RandomService rand, int yearStart, int monthStart, in return String.valueOf(res); } + @Override + public String generateInvalid(BaseProviders faker) { + return generateValid(faker) + "42"; + } } diff --git a/src/main/java/net/datafaker/idnumbers/SvSEIdNumber.java b/src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java similarity index 89% rename from src/main/java/net/datafaker/idnumbers/SvSEIdNumber.java rename to src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java index d27fff460..1d0567af4 100644 --- a/src/main/java/net/datafaker/idnumbers/SvSEIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java @@ -12,19 +12,36 @@ * and the description at * https://en.wikipedia.org/wiki/Personal_identity_number_(Sweden) */ -public class SvSEIdNumber implements IdNumbers { +public class SwedenIdNumber implements IdNumbers { + @Override + public String country() { + return "SE"; + } + private static final String[] VALID_PATTERNS = {"######-####", "######+####"}; private static final String[] PLUS_MINUS = {"+", "-"}; + @Deprecated public String getValidSsn(BaseProviders f) { + return generateValid(f); + } + + @Override + public String generateValid(BaseProviders f) { String end = f.numerify("###"); - String candidate = DATE_TIME_FORMATTER.format(f.date().birthdayLocalDate(0, 100)) + String candidate = DATE_TIME_FORMATTER.format(f.timeAndDate().birthday(0, 100)) + f.options().option(PLUS_MINUS) + end; return candidate + calculateChecksum(candidate); } + @Deprecated public String getInvalidSsn(BaseProviders f) { + return generateInvalid(f); + } + + @Override + public String generateInvalid(BaseProviders f) { String candidate = "121212-1212"; // Seed with a valid number while (isValidSwedishSsn(candidate)) { String pattern = getPattern(f); @@ -109,5 +126,4 @@ private static int calculateDigitSum(String numbers) { } return sum; } - } diff --git a/src/main/java/net/datafaker/providers/base/AbstractProvider.java b/src/main/java/net/datafaker/providers/base/AbstractProvider.java index 08e777619..5663180b8 100644 --- a/src/main/java/net/datafaker/providers/base/AbstractProvider.java +++ b/src/main/java/net/datafaker/providers/base/AbstractProvider.java @@ -1,6 +1,8 @@ package net.datafaker.providers.base; +import java.util.List; import java.util.Objects; +import java.util.ServiceLoader; import java.util.function.Supplier; public class AbstractProvider { @@ -34,4 +36,10 @@ public boolean equals(Object o) { public int hashCode() { return getClass().hashCode(); } + + protected List loadGenerators(Class generatorClass) { + return ServiceLoader.load(generatorClass).stream() + .map(ServiceLoader.Provider::get) + .toList(); + } } diff --git a/src/main/java/net/datafaker/providers/base/IdNumber.java b/src/main/java/net/datafaker/providers/base/IdNumber.java index 20e8f89b2..dd6808238 100644 --- a/src/main/java/net/datafaker/providers/base/IdNumber.java +++ b/src/main/java/net/datafaker/providers/base/IdNumber.java @@ -1,27 +1,23 @@ package net.datafaker.providers.base; -import net.datafaker.idnumbers.AlbanianIdNumber; -import net.datafaker.idnumbers.BulgarianIdNumber; -import net.datafaker.idnumbers.EnIdNumber; -import net.datafaker.idnumbers.EnZAIdNumber; -import net.datafaker.idnumbers.EsMXIdNumber; -import net.datafaker.idnumbers.EstonianIdNumber; +import net.datafaker.idnumbers.AmericanIdNumber; +import net.datafaker.idnumbers.MexicanIdNumber; import net.datafaker.idnumbers.IdNumbers; -import net.datafaker.idnumbers.KoKrIdNumber; -import net.datafaker.idnumbers.MacedonianIdNumber; -import net.datafaker.idnumbers.MoldovaIdNumber; -import net.datafaker.idnumbers.NricNumber; -import net.datafaker.idnumbers.NricNumber.Type; -import net.datafaker.idnumbers.PeselNumber; -import net.datafaker.idnumbers.PeselNumber.Gender; -import net.datafaker.idnumbers.PtNifIdNumber; -import net.datafaker.idnumbers.SvSEIdNumber; -import net.datafaker.idnumbers.ZhCnIdNumber; +import net.datafaker.idnumbers.SouthKoreanIdNumber; +import net.datafaker.idnumbers.SingaporeIdNumber; +import net.datafaker.idnumbers.SingaporeIdNumber.Type; +import net.datafaker.idnumbers.PolishIdNumber; +import net.datafaker.idnumbers.PolishIdNumber.Gender; +import net.datafaker.idnumbers.PortugueseIdNumber; +import net.datafaker.idnumbers.SouthAfricanIdNumber; +import net.datafaker.idnumbers.SwedenIdNumber; +import net.datafaker.idnumbers.ChineseIdNumber; import java.lang.reflect.InvocationTargetException; import java.time.LocalDate; -import java.time.ZoneId; +import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; /** @@ -30,101 +26,158 @@ public class IdNumber extends AbstractProvider { private final Map, IdNumbers> providers = new ConcurrentHashMap<>(); + private final Map countryProviders = new ConcurrentHashMap<>(); protected IdNumber(BaseProviders faker) { super(faker); + List idNumbers = loadGenerators(IdNumbers.class); + for (IdNumbers idNumber : idNumbers) { + countryProviders.put(idNumber.country(), idNumber); + } } public String valid() { - return resolve("id_number.valid"); + return countryProvider() + .map(p -> p.generateValid(faker)) + .orElseGet(() -> faker.numerify(faker.resolve("id_number.valid"))); } public String invalid() { - return faker.numerify(faker.resolve("id_number.invalid")); + return countryProvider() + .map(p -> p.generateInvalid(faker)) + .orElseGet(() -> faker.numerify(faker.resolve("id_number.invalid"))); + } + + private Optional countryProvider() { + String country = faker.getContext().getLocale().getCountry(); + return Optional.ofNullable(countryProviders.get(country)); } public String ssnValid() { - return provider(EnIdNumber.class).getValidSsn(faker); + return provider(AmericanIdNumber.class).generateValid(faker); } /** - * Specified as #{IDNumber.valid_sv_se_ssn} in sv-SE.yml + * @deprecated Instead of calling this method directly, use faker with locale: + *
+     * {@code
+     *   Faker faker = new Faker(new Locale("sv", "SE"));
+     *   String idNumber = faker.idNumber().valid();
+     * }
+     * 
*/ + @Deprecated public String validSvSeSsn() { - return provider(SvSEIdNumber.class).getValidSsn(faker); + return provider(SwedenIdNumber.class).generateValid(faker); } - /** - * Specified as #{IDNumber.valid_en_za_ssn} in en-ZA.yml - */ - public String validEnZaSsn() { - return provider(EnZAIdNumber.class).getValidSsn(faker); + @Deprecated + public String invalidSvSeSsn() { + return provider(SwedenIdNumber.class).generateInvalid(faker); } /** - * Specified as #{IDNumber.invalid_en_za_ssn} in en-ZA.yml + * @deprecated Instead of calling this method directly, use faker with locale: + *
+     * {@code
+     *   Faker faker = new Faker(new Locale("en", "ZA"));
+     *   String idNumber = faker.idNumber().valid();
+     * }
+     * 
*/ - public String inValidEnZaSsn() { - return provider(EnZAIdNumber.class).getInValidSsn(faker); + @Deprecated + public String validEnZaSsn() { + return provider(SouthAfricanIdNumber.class).getValidSsn(faker); } - /** - * Specified as #{IDNumber.invalid_sv_se_ssn} in sv-SE.yml - */ - public String invalidSvSeSsn() { - return provider(SvSEIdNumber.class).getInvalidSsn(faker); + @Deprecated + public String inValidEnZaSsn() { + return provider(SouthAfricanIdNumber.class).getInValidSsn(faker); } public String singaporeanFin() { - return NricNumber.getValidFIN(faker, Type.FOREIGNER_TWENTY_FIRST_CENTURY); + return SingaporeIdNumber.getValidFIN(faker, Type.FOREIGNER_TWENTY_FIRST_CENTURY); } public String singaporeanFinBefore2000() { - return NricNumber.getValidFIN(faker, Type.FOREIGNER_TWENTIETH_CENTURY); + return SingaporeIdNumber.getValidFIN(faker, Type.FOREIGNER_TWENTIETH_CENTURY); } public String singaporeanUin() { - return NricNumber.getValidFIN(faker, Type.SINGAPOREAN_TWENTY_FIRST_CENTURY); + return SingaporeIdNumber.getValidFIN(faker, Type.SINGAPOREAN_TWENTY_FIRST_CENTURY); } public String singaporeanUinBefore2000() { - return NricNumber.getValidFIN(faker, Type.SINGAPOREAN_TWENTIETH_CENTURY); + return SingaporeIdNumber.getValidFIN(faker, Type.SINGAPOREAN_TWENTIETH_CENTURY); } /** - * Generate a valid Zh-CN id number. + * Generate a valid Chinese id number * - * @return A Zh-CN id number - */ + * @deprecated Instead of calling this method directly, use faker with locale: + *
+     * {@code
+     *   Faker faker = new Faker(new Locale("zh", "CN"));
+     *   String idNumber = faker.idNumber().valid();
+     * }
+     * 
+ */ + @Deprecated public String validZhCNSsn() { - return provider(ZhCnIdNumber.class).getValidSsn(faker); + return provider(ChineseIdNumber.class).generateValid(faker); } + /** + * Generate a valid Chinese id number + * + * @deprecated Instead of calling this method directly, use faker with locale: + *
+     * {@code
+     *   Faker faker = new Faker(new Locale("pt", "PT"));
+     *   String idNumber = faker.idNumber().valid();
+     * }
+     * 
+ */ + @Deprecated public String validPtNif() { - return provider(PtNifIdNumber.class).getValid(faker); + return provider(PortugueseIdNumber.class).generateValid(faker); } + @Deprecated public String invalidPtNif() { - return provider(PtNifIdNumber.class).getInvalid(faker); + return provider(PortugueseIdNumber.class).generateInvalid(faker); } - /** - * Specified as #{IDNumber.valid_es_mx_ssn} in es-MX.yml + * @return A valid Mexican CURP * - * @return A valid MEX CURP. - */ + * @deprecated Instead of calling this method directly, use faker with locale: + *
+     * {@code
+     *   Faker faker = new Faker(new Locale("es", "MX"));
+     *   String idNumber = faker.idNumber().valid();
+     * }
+     * 
+ */ + @Deprecated public String validEsMXSsn() { - return provider(EsMXIdNumber.class).get(faker); + return provider(MexicanIdNumber.class).get(faker); } /** - * Specified as #{IDNumber.invalid_es_mx_ssn} in es-MX.yml + * @return An invalid Mexican CURP * - * @return A valid MEX CURP. - */ + * @deprecated Instead of calling this method directly, use faker with locale: + *
+     * {@code
+     *   Faker faker = new Faker(new Locale("es", "MX"));
+     *   String idNumber = faker.idNumber().invalid();
+     * }
+     * 
+ */ + @Deprecated public String invalidEsMXSsn() { - return provider(EsMXIdNumber.class).getWrong(faker); + return provider(MexicanIdNumber.class).generateInvalid(faker); } /** @@ -134,19 +187,18 @@ public String invalidEsMXSsn() { * @return A valid PESEL number */ public String peselNumber() { - return peselNumber(faker.date().birthday(0, 100).toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), - Gender.ANY); + return peselNumber(faker.timeAndDate().birthday(0, 100), Gender.ANY); } /** - * Generates a valid PESEL number for a person with given gender and birth date. + * Generates a valid PESEL number for a person with given gender and birthdate. * - * @param birthDate Given birth date - * @param gender Person's gender. Null value means {@link net.datafaker.idnumbers.PeselNumber.Gender#ANY} + * @param birthDate Given birthdate + * @param gender Person's gender. Null value means {@link PolishIdNumber.Gender#ANY} * @return A valid PESEL number */ public String peselNumber(LocalDate birthDate, Gender gender) { - return new PeselNumber(faker).get(birthDate, gender); + return new PolishIdNumber().get(faker, birthDate, gender); } /** @@ -154,111 +206,35 @@ public String peselNumber(LocalDate birthDate, Gender gender) { * * @return A valid RRN * @since 1.8.0 - */ + * @deprecated Instead of calling this method directly, use faker with locale: + *
+     * {@code
+     *   Faker f = new Faker(new Locale("en", "KR"));
+     *   String rrn = f.idNumber().valid();
+     * }
+     * 
+ */ + @Deprecated public String validKoKrRrn() { - return provider(KoKrIdNumber.class).getValidRrn(faker); + return provider(SouthKoreanIdNumber.class).getValidRrn(faker); } /** * Generates valid ID number for Georgian citizens and Residents * - * @return A valid ID Number - */ + * @deprecated Instead of calling this method directly, use faker with locale: + *
+     * {@code
+     *   Faker f = new Faker(new Locale("en", "GE"));
+     *   String idNumber = f.idNumber().valid();
+     * }
+     * 
+ */ + @Deprecated public String validGeIDNumber() { return faker.numerify("###########"); } - /** - * Generates a valid ID number for Estonian citizens and residents - * Specified as #{IDNumber.valid_estonian_personal_code} in et.yml - * @return A valid ID Number - */ - public String validEstonianPersonalCode() { - return provider(EstonianIdNumber.class).getValid(faker); - } - - /** - * Generates an invalid ID number for Estonian citizens and residents - * Specified as #{IDNumber.invalid_estonian_personal_code} in et.yml - * - * @return An invalid ID Number - */ - public String invalidEstonianPersonalCode() { - return provider(EstonianIdNumber.class).getInvalid(faker); - } - - /** - * Generates a valid ID number for Albania citizens and residents - * Specified as #{IDNumber.valid_albanian_personal_code} in sq.yml - * @return A valid ID Number - */ - public String validAlbanianPersonalCode() { - return provider(AlbanianIdNumber.class).getValid(faker); - } - - /** - * Generates a valid ID number for Albania citizens and residents - * Specified as #{IDNumber.invalid_albanian_personal_code} in sq.yml - * @return An invalid ID Number - */ - public String invalidAlbanianPersonalCode() { - return provider(AlbanianIdNumber.class).getInvalid(faker); - } - - /** - * Generates a valid ID number for Albania citizens and residents - * Specified as #{IDNumber.valid_moldova_personal_code} in ro-MD.yml - * @return A valid ID Number - */ - public String validMoldovaPersonalCode() { - return provider(MoldovaIdNumber.class).getValid(faker); - } - - /** - * Generates a valid ID number for Albania citizens and residents - * Specified as #{IDNumber.invalid_moldova_personal_code} in ro-MD.yml - * @return An invalid ID Number - */ - public String invalidMoldovaPersonalCode() { - return provider(MoldovaIdNumber.class).getInvalid(faker); - } - - /** - * Generates a valid ID number for Bulgaria citizens and residents - * Specified as #{IDNumber.valid_bulgarian_personal_code} in bg.yml - * @return A valid ID Number - */ - public String validBulgarianPersonalCode() { - return provider(BulgarianIdNumber.class).getValid(faker); - } - - /** - * Generates a valid ID number for Bulgaria citizens and residents - * Specified as #{IDNumber.invalid_bulgarian_personal_code} in bg.yml - * @return An invalid ID Number - */ - public String invalidBulgarianPersonalCode() { - return provider(BulgarianIdNumber.class).getInvalid(faker); - } - - /** - * Generates a valid ID number for North Macedonia citizens and residents - * Specified as #{IDNumber.valid_macedonian_personal_code} in mk.yml - * @return A valid ID Number - */ - public String validMacedonianPersonalCode() { - return provider(MacedonianIdNumber.class).getValid(faker); - } - - /** - * Generates a valid ID number for North Macedonia citizens and residents - * Specified as #{IDNumber.invalid_macedonian_personal_code} in mk.yml - * @return An invalid ID Number - */ - public String invalidMacedonianPersonalCode() { - return provider(MacedonianIdNumber.class).getInvalid(faker); - } - @SuppressWarnings("unchecked") private T provider(Class clazz) { return (T) providers.computeIfAbsent(clazz, aClass -> create(clazz)); diff --git a/src/main/java/net/datafaker/providers/base/Options.java b/src/main/java/net/datafaker/providers/base/Options.java index 42073e4fb..128100d3a 100644 --- a/src/main/java/net/datafaker/providers/base/Options.java +++ b/src/main/java/net/datafaker/providers/base/Options.java @@ -104,6 +104,16 @@ public String option(String... options) { return options[faker.random().nextInt(options.length)]; } + /** + * Returns a random String element from an varargs. + * + * @param options The varargs to take a random element from. + * @return A randomly selected element from the varargs. + */ + public T option(List options) { + return options.get(faker.random().nextInt(options.size())); + } + /** * Returns a random unique subset of elements from an varargs. * diff --git a/src/main/resources/META-INF/services/net.datafaker.idnumbers.IdNumbers b/src/main/resources/META-INF/services/net.datafaker.idnumbers.IdNumbers new file mode 100644 index 000000000..d4f082439 --- /dev/null +++ b/src/main/resources/META-INF/services/net.datafaker.idnumbers.IdNumbers @@ -0,0 +1,15 @@ +net.datafaker.idnumbers.AlbanianIdNumber +net.datafaker.idnumbers.AmericanIdNumber +net.datafaker.idnumbers.BulgarianIdNumber +net.datafaker.idnumbers.ChineseIdNumber +net.datafaker.idnumbers.EstonianIdNumber +net.datafaker.idnumbers.GeorgianIdNumber +net.datafaker.idnumbers.MacedonianIdNumber +net.datafaker.idnumbers.MexicanIdNumber +net.datafaker.idnumbers.MoldovanIdNumber +net.datafaker.idnumbers.PolishIdNumber +net.datafaker.idnumbers.PortugueseIdNumber +net.datafaker.idnumbers.SingaporeIdNumber +net.datafaker.idnumbers.SouthAfricanIdNumber +net.datafaker.idnumbers.SouthKoreanIdNumber +net.datafaker.idnumbers.SwedenIdNumber diff --git a/src/main/resources/_CN.yml b/src/main/resources/_CN.yml new file mode 100644 index 000000000..dc40426c0 --- /dev/null +++ b/src/main/resources/_CN.yml @@ -0,0 +1,39 @@ +# coding: utf-8 +_CN: + faker: + phone_number: + mobile_phone_service_provider_prefix_3: ['130', '131', '132', '133', '134', '135', '136', '137', '138', '139', '145', '146', '147', '148', '149', '150', '151', '152', '157', '158', '159', '153', '155', '156', '162', '165', '166', '167', '171', '172', '178', '173', '177', '175', '176', '180', '181', '189', '182', '183', '184', '187', '188', '185', '186', '192', '196'] + formats: + - "#{PhoneNumber.mobile_phone_service_provider_prefix_3} #### ####" + formats_international: + - '+86 #{PhoneNumber.mobile_phone_service_provider_prefix_3} #### ####' + cell_phone: + formats: + - '13#########' + - '145########' + - '147########' + - '150########' + - '151########' + - '152########' + - '153########' + - '155########' + - '156########' + - '157########' + - '158########' + - '159########' + - '170########' + - '171########' + - '172########' + - '173########' + - '175########' + - '176########' + - '177########' + - '178########' + - '18#########' + + id_number: + place: ['110000', '110101', '110102', '110103', '110104', '110105', '110106', '110107', '110108', '110109', '110111', '110112', '110113', '110114', '110115', '110116', '110117', '110200', '110228', '110229', '120000', '120101', '120102', '120103', '120104', '120105', '120106', '120107', '120108', '120109', '120110', '120111', '120112', '120113', '120114', '120115', '120200', '120221', '120223', '120225', '130000', '130100', '130102', '130103', '130104', '130105', '130107', '130108', '130121', '130123', '130124', '130125', '130126', '130127', '130128', '130129', '130130', '130131', '130132', '130133', '130181', '130182', '130183', '130184', '130185', '130200', '130202', '130203', '130204', '130205', '130207', '130208', '130223', '130224', '130225', '130227', '130229', '130230', '130281', '130283', '130300', '130302', '130303', '130304', '130321', '130322', '130323', '130324', '130400', '130402', '130403', '130404', '130406', '130421', '130423', '130424', '130425', '130426', '130427', '130428', '130429', '130430', '130431', '130432', '130433', '130434', '130435', '130481', '130500', '130502', '130503', '130521', '130522', '130523', '130524', '130525', '130526', '130527', '130528', '130529', '130530', '130531', '130532', '130533', '130534', '130535', '130581', '130582', '130600', '130602', '130603', '130604', '130621', '130622', '130623', '130624', '130625', '130626', '130627', '130628', '130629', '130630', '130631', '130632', '130633', '130634', '130635', '130636', '130637', '130638', '130681', '130682', '130683', '130684', '130700', '130702', '130703', '130705', '130706', '130721', '130722', '130723', '130724', '130725', '130726', '130727', '130728', '130729', '130730', '130731', '130732', '130733', '130800', '130802', '130803', '130804', '130821', '130822', '130823', '130824', '130825', '130826', '130827', '130828', '130900', '130902', '130903', '130921', '130922', '130923', '130924', '130925', '130926', '130927', '130928', '130929', '130930', '130981', '130982', '130983', '130984', '131000', '131002', '131003', '131022', '131023', '131024', '131025', '131026', '131028', '131081', '131082', '131100', '131102', '131121', '131122', '131123', '131124', '131125', '131126', '131127', '131128', '131181', '131182', '140000', '140100', '140105', '140106', '140107', '140108', '140109', '140110', '140121', '140122', '140123', '140181', '140200', '140202', '140203', '140211', '140212', '140221', '140222', '140223', '140224', '140225', '140226', '140227', '140300', '140302', '140303', '140311', '140321', '140322', '140400', '140402', '140411', '140421', '140423', '140424', '140425', '140426', '140427', '140428', '140429', '140430', '140431', '140481', '140500', '140502', '140521', '140522', '140524', '140525', '140581', '140600', '140602', '140603', '140621', '140622', '140623', '140624', '140700', '140702', '140721', '140722', '140723', '140724', '140725', '140726', '140727', '140728', '140729', '140781', '140800', '140802', '140821', '140822', '140823', '140824', '140825', '140826', '140827', '140828', '140829', '140830', '140881', '140882', '140900', '140902', '140921', '140922', '140923', '140924', '140925', '140926', '140927', '140928', '140929', '140930', '140931', '140932', '140981', '141000', '141002', '141021', '141022', '141023', '141024', '141025', '141026', '141027', '141028', '141029', '141030', '141031', '141032', '141033', '141034', '141081', '141082', '141100', '141102', '141121', '141122', '141123', '141124', '141125', '141126', '141127', '141128', '141129', '141130', '141181', '141182', '150000', '150100', '150102', '150103', '150104', '150105', '150121', '150122', '150123', '150124', '150125', '150200', '150202', '150203', '150204', '150205', '150206', '150207', '150221', '150222', '150223', '150300', '150302', '150303', '150304', '150400', '150402', '150403', '150404', '150421', '150422', '150423', '150424', '150425', '150426', '150428', '150429', '150430', '150500', '150502', '150521', '150522', '150523', '150524', '150525', '150526', '150581', '150600', '150602', '150621', '150622', '150623', '150624', '150625', '150626', '150627', '150700', '150702', '150721', '150722', '150723', '150724', '150725', '150726', '150727', '150781', '150782', '150783', '150784', '150785', '150800', '150802', '150821', '150822', '150823', '150824', '150825', '150826', '150900', '150902', '150921', '150922', '150923', '150924', '150925', '150926', '150927', '150928', '150929', '150981', '152200', '152201', '152202', '152221', '152222', '152223', '152224', '152500', '152501', '152502', '152522', '152523', '152524', '152525', '152526', '152527', '152528', '152529', '152530', '152531', '152900', '152921', '152922', '152923', '210000', '210100', '210102', '210103', '210104', '210105', '210106', '210111', '210112', '210113', '210114', '210122', '210123', '210124', '210181', '210200', '210202', '210203', '210204', '210211', '210212', '210213', '210224', '210281', '210282', '210283', '210300', '210302', '210303', '210304', '210311', '210321', '210323', '210381', '210400', '210402', '210403', '210404', '210411', '210421', '210422', '210423', '210500', '210502', '210503', '210504', '210505', '210521', '210522', '210600', '210602', '210603', '210604', '210624', '210681', '210682', '210700', '210702', '210703', '210711', '210726', '210727', '210781', '210782', '210800', '210802', '210803', '210804', '210811', '210881', '210882', '210900', '210902', '210903', '210904', '210905', '210911', '210921', '210922', '211000', '211002', '211003', '211004', '211005', '211011', '211021', '211081', '211100', '211102', '211103', '211121', '211122', '211200', '211202', '211204', '211221', '211223', '211224', '211281', '211282', '211300', '211302', '211303', '211321', '211322', '211324', '211381', '211382', '211400', '211402', '211403', '211404', '211421', '211422', '211481', '220000', '220100', '220102', '220103', '220104', '220105', '220106', '220112', '220122', '220181', '220182', '220183', '220200', '220202', '220203', '220204', '220211', '220221', '220281', '220282', '220283', '220284', '220300', '220302', '220303', '220322', '220323', '220381', '220382', '220400', '220402', '220403', '220421', '220422', '220500', '220502', '220503', '220521', '220523', '220524', '220581', '220582', '220600', '220602', '220604', '220621', '220622', '220623', '220681', '220700', '220702', '220721', '220722', '220723', '220724', '220800', '220802', '220821', '220822', '220881', '220882', '222400', '222401', '222402', '222403', '222404', '222405', '222406', '222424', '222426', '230000', '230100', '230102', '230103', '230104', '230108', '230109', '230110', '230111', '230112', '230123', '230124', '230125', '230126', '230127', '230128', '230129', '230182', '230183', '230184', '230200', '230202', '230203', '230204', '230205', '230206', '230207', '230208', '230221', '230223', '230224', '230225', '230227', '230229', '230230', '230231', '230281', '230300', '230302', '230303', '230304', '230305', '230306', '230307', '230321', '230381', '230382', '230400', '230402', '230403', '230404', '230405', '230406', '230407', '230421', '230422', '230500', '230502', '230503', '230505', '230506', '230521', '230522', '230523', '230524', '230600', '230602', '230603', '230604', '230605', '230606', '230621', '230622', '230623', '230624', '230700', '230702', '230703', '230704', '230705', '230706', '230707', '230708', '230709', '230710', '230711', '230712', '230713', '230714', '230715', '230716', '230722', '230781', '230800', '230803', '230804', '230805', '230811', '230822', '230826', '230828', '230833', '230881', '230882', '230900', '230902', '230903', '230904', '230921', '231000', '231002', '231003', '231004', '231005', '231024', '231025', '231081', '231083', '231084', '231085', '231100', '231102', '231121', '231123', '231124', '231181', '231182', '231200', '231202', '231221', '231222', '231223', '231224', '231225', '231226', '231281', '231282', '231283', '232700', '232701', '232702', '232703', '232704', '232721', '232722', '232723', '310000', '310101', '310103', '310104', '310105', '310106', '310107', '310108', '310109', '310110', '310112', '310113', '310114', '310115', '310116', '310117', '310118', '310119', '310120', '310200', '310230', '320000', '320100', '320102', '320103', '320104', '320105', '320106', '320107', '320111', '320113', '320114', '320115', '320116', '320124', '320125', '320200', '320202', '320203', '320204', '320205', '320206', '320211', '320281', '320282', '320300', '320302', '320303', '320304', '320305', '320311', '320321', '320322', '320323', '320324', '320381', '320382', '320400', '320402', '320404', '320405', '320411', '320412', '320481', '320482', '320500', '320502', '320503', '320504', '320505', '320506', '320507', '320581', '320582', '320583', '320584', '320585', '320600', '320602', '320611', '320621', '320623', '320681', '320682', '320683', '320684', '320700', '320703', '320705', '320706', '320721', '320722', '320723', '320724', '320800', '320802', '320803', '320804', '320811', '320826', '320829', '320830', '320831', '320900', '320902', '320903', '320921', '320922', '320923', '320924', '320925', '320981', '320982', '321000', '321002', '321003', '321011', '321023', '321081', '321084', '321088', '321100', '321102', '321111', '321112', '321181', '321182', '321183', '321200', '321202', '321203', '321281', '321282', '321283', '321284', '321300', '321302', '321311', '321322', '321323', '321324', '330000', '330100', '330102', '330103', '330104', '330105', '330106', '330108', '330109', '330110', '330122', '330127', '330182', '330183', '330185', '330200', '330203', '330204', '330205', '330206', '330211', '330212', '330225', '330226', '330281', '330282', '330283', '330300', '330302', '330303', '330304', '330322', '330324', '330326', '330327', '330328', '330329', '330381', '330382', '330400', '330402', '330411', '330421', '330424', '330481', '330482', '330483', '330500', '330502', '330503', '330521', '330522', '330523', '330600', '330602', '330621', '330624', '330681', '330682', '330683', '330700', '330702', '330703', '330723', '330726', '330727', '330781', '330782', '330783', '330784', '330800', '330802', '330803', '330822', '330824', '330825', '330881', '330900', '330902', '330903', '330921', '330922', '331000', '331002', '331003', '331004', '331021', '331022', '331023', '331024', '331081', '331082', '331100', '331102', '331121', '331122', '331123', '331124', '331125', '331126', '331127', '331181', '340000', '340100', '340102', '340103', '340104', '340111', '340121', '340122', '340123', '340200', '340202', '340203', '340207', '340208', '340221', '340222', '340223', '340300', '340302', '340303', '340304', '340311', '340321', '340322', '340323', '340400', '340402', '340403', '340404', '340405', '340406', '340421', '340500', '340502', '340503', '340504', '340521', '340600', '340602', '340603', '340604', '340621', '340700', '340702', '340703', '340711', '340721', '340800', '340802', '340803', '340811', '340822', '340823', '340824', '340825', '340826', '340827', '340828', '340881', '341000', '341002', '341003', '341004', '341021', '341022', '341023', '341024', '341100', '341102', '341103', '341122', '341124', '341125', '341126', '341181', '341182', '341200', '341202', '341203', '341204', '341221', '341222', '341225', '341226', '341282', '341300', '341302', '341321', '341322', '341323', '341324', '341400', '341402', '341421', '341422', '341423', '341424', '341500', '341502', '341503', '341521', '341522', '341523', '341524', '341525', '341600', '341602', '341621', '341622', '341623', '341700', '341702', '341721', '341722', '341723', '341800', '341802', '341821', '341822', '341823', '341824', '341825', '341881', '350000', '350100', '350102', '350103', '350104', '350105', '350111', '350121', '350122', '350123', '350124', '350125', '350128', '350181', '350182', '350200', '350203', '350205', '350206', '350211', '350212', '350213', '350300', '350302', '350303', '350304', '350305', '350322', '350400', '350402', '350403', '350421', '350423', '350424', '350425', '350426', '350427', '350428', '350429', '350430', '350481', '350500', '350502', '350503', '350504', '350505', '350521', '350524', '350525', '350526', '350527', '350581', '350582', '350583', '350600', '350602', '350603', '350622', '350623', '350624', '350625', '350626', '350627', '350628', '350629', '350681', '350700', '350702', '350721', '350722', '350723', '350724', '350725', '350781', '350782', '350783', '350784', '350800', '350802', '350821', '350822', '350823', '350824', '350825', '350881', '350900', '350902', '350921', '350922', '350923', '350924', '350925', '350926', '350981', '350982', '360000', '360100', '360102', '360103', '360104', '360105', '360111', '360121', '360122', '360123', '360124', '360200', '360202', '360203', '360222', '360281', '360300', '360302', '360313', '360321', '360322', '360323', '360400', '360402', '360403', '360421', '360423', '360424', '360425', '360426', '360427', '360428', '360429', '360430', '360481', '360500', '360502', '360521', '360600', '360602', '360622', '360681', '360700', '360702', '360721', '360722', '360723', '360724', '360725', '360726', '360727', '360728', '360729', '360730', '360731', '360732', '360733', '360734', '360735', '360781', '360782', '360800', '360802', '360803', '360821', '360822', '360823', '360824', '360825', '360826', '360827', '360828', '360829', '360830', '360881', '360900', '360902', '360921', '360922', '360923', '360924', '360925', '360926', '360981', '360982', '360983', '361000', '361002', '361021', '361022', '361023', '361024', '361025', '361026', '361027', '361028', '361029', '361030', '361100', '361102', '361121', '361122', '361123', '361124', '361125', '361126', '361127', '361128', '361129', '361130', '361181', '370000', '370100', '370102', '370103', '370104', '370105', '370112', '370113', '370124', '370125', '370126', '370181', '370200', '370202', '370203', '370205', '370211', '370212', '370213', '370214', '370281', '370282', '370283', '370284', '370285', '370300', '370302', '370303', '370304', '370305', '370306', '370321', '370322', '370323', '370400', '370402', '370403', '370404', '370405', '370406', '370481', '370500', '370502', '370503', '370521', '370522', '370523', '370600', '370602', '370611', '370612', '370613', '370634', '370681', '370682', '370683', '370684', '370685', '370686', '370687', '370700', '370702', '370703', '370704', '370705', '370724', '370725', '370781', '370782', '370783', '370784', '370785', '370786', '370800', '370802', '370811', '370826', '370827', '370828', '370829', '370830', '370831', '370832', '370881', '370882', '370883', '370900', '370902', '370903', '370921', '370923', '370982', '370983', '371000', '371002', '371081', '371082', '371083', '371100', '371102', '371103', '371121', '371122', '371200', '371202', '371203', '371300', '371302', '371311', '371312', '371321', '371322', '371323', '371324', '371325', '371326', '371327', '371328', '371329', '371400', '371402', '371421', '371422', '371423', '371424', '371425', '371426', '371427', '371428', '371481', '371482', '371500', '371502', '371521', '371522', '371523', '371524', '371525', '371526', '371581', '371600', '371602', '371621', '371622', '371623', '371624', '371625', '371626', '371700', '371702', '371721', '371722', '371723', '371724', '371725', '371726', '371727', '371728', '410000', '410100', '410102', '410103', '410104', '410105', '410106', '410108', '410122', '410181', '410182', '410183', '410184', '410185', '410200', '410202', '410203', '410204', '410205', '410211', '410221', '410222', '410223', '410224', '410225', '410300', '410302', '410303', '410304', '410305', '410306', '410307', '410322', '410323', '410324', '410325', '410326', '410327', '410328', '410329', '410381', '410400', '410402', '410403', '410404', '410411', '410421', '410422', '410423', '410425', '410481', '410482', '410500', '410502', '410503', '410505', '410506', '410522', '410523', '410526', '410527', '410581', '410600', '410602', '410603', '410611', '410621', '410622', '410700', '410702', '410703', '410704', '410711', '410721', '410724', '410725', '410726', '410727', '410728', '410781', '410782', '410800', '410802', '410803', '410804', '410811', '410821', '410822', '410823', '410825', '410881', '410882', '410883', '410900', '410902', '410922', '410923', '410926', '410927', '410928', '411000', '411002', '411023', '411024', '411025', '411081', '411082', '411100', '411102', '411103', '411104', '411121', '411122', '411200', '411202', '411221', '411222', '411224', '411281', '411282', '411300', '411302', '411303', '411321', '411322', '411323', '411324', '411325', '411326', '411327', '411328', '411329', '411330', '411381', '411400', '411402', '411403', '411421', '411422', '411423', '411424', '411425', '411426', '411481', '411500', '411502', '411503', '411521', '411522', '411523', '411524', '411525', '411526', '411527', '411528', '411600', '411602', '411621', '411622', '411623', '411624', '411625', '411626', '411627', '411628', '411681', '411700', '411702', '411721', '411722', '411723', '411724', '411725', '411726', '411727', '411728', '411729', '420000', '420100', '420102', '420103', '420104', '420105', '420106', '420107', '420111', '420112', '420113', '420114', '420115', '420116', '420117', '420200', '420202', '420203', '420204', '420205', '420222', '420281', '420300', '420302', '420303', '420321', '420322', '420323', '420324', '420325', '420381', '420500', '420502', '420503', '420504', '420505', '420506', '420525', '420526', '420527', '420528', '420529', '420581', '420582', '420583', '420600', '420602', '420606', '420607', '420624', '420625', '420626', '420682', '420683', '420684', '420700', '420702', '420703', '420704', '420800', '420802', '420804', '420821', '420822', '420881', '420900', '420902', '420921', '420922', '420923', '420981', '420982', '420984', '421000', '421002', '421003', '421022', '421023', '421024', '421081', '421083', '421087', '421100', '421102', '421121', '421122', '421123', '421124', '421125', '421126', '421127', '421181', '421182', '421200', '421202', '421221', '421222', '421223', '421224', '421281', '421300', '421302', '421381', '422800', '422801', '422802', '422822', '422823', '422825', '422826', '422827', '422828', '429000', '429004', '429005', '429006', '429021', '430000', '430100', '430102', '430103', '430104', '430105', '430111', '430121', '430122', '430124', '430181', '430200', '430202', '430203', '430204', '430211', '430221', '430223', '430224', '430225', '430281', '430300', '430302', '430304', '430321', '430381', '430382', '430400', '430405', '430406', '430407', '430408', '430412', '430421', '430422', '430423', '430424', '430426', '430481', '430482', '430500', '430502', '430503', '430511', '430521', '430522', '430523', '430524', '430525', '430527', '430528', '430529', '430581', '430600', '430602', '430603', '430611', '430621', '430623', '430624', '430626', '430681', '430682', '430700', '430702', '430703', '430721', '430722', '430723', '430724', '430725', '430726', '430781', '430800', '430802', '430811', '430821', '430822', '430900', '430902', '430903', '430921', '430922', '430923', '430981', '431000', '431002', '431003', '431021', '431022', '431023', '431024', '431025', '431026', '431027', '431028', '431081', '431100', '431102', '431103', '431121', '431122', '431123', '431124', '431125', '431126', '431127', '431128', '431129', '431200', '431202', '431221', '431222', '431223', '431224', '431225', '431226', '431227', '431228', '431229', '431230', '431281', '431300', '431302', '431321', '431322', '431381', '431382', '433100', '433101', '433122', '433123', '433124', '433125', '433126', '433127', '433130', '440000', '440100', '440103', '440104', '440105', '440106', '440111', '440112', '440113', '440114', '440115', '440116', '440183', '440184', '440200', '440203', '440204', '440205', '440222', '440224', '440229', '440232', '440233', '440281', '440282', '440300', '440303', '440304', '440305', '440306', '440307', '440308', '440400', '440402', '440403', '440404', '440500', '440507', '440511', '440512', '440513', '440514', '440515', '440523', '440600', '440604', '440605', '440606', '440607', '440608', '440700', '440703', '440704', '440705', '440781', '440783', '440784', '440785', '440800', '440802', '440803', '440804', '440811', '440823', '440825', '440881', '440882', '440883', '440900', '440902', '440903', '440923', '440981', '440982', '440983', '441200', '441202', '441203', '441223', '441224', '441225', '441226', '441283', '441284', '441300', '441302', '441303', '441322', '441323', '441324', '441400', '441402', '441421', '441422', '441423', '441424', '441426', '441427', '441481', '441500', '441502', '441521', '441523', '441581', '441600', '441602', '441621', '441622', '441623', '441624', '441625', '441700', '441702', '441721', '441723', '441781', '441800', '441802', '441821', '441823', '441825', '441826', '441827', '441881', '441882', '441900', '442000', '445100', '445102', '445121', '445122', '445200', '445202', '445221', '445222', '445224', '445281', '445300', '445302', '445321', '445322', '445323', '445381', '450000', '450100', '450102', '450103', '450105', '450107', '450108', '450109', '450122', '450123', '450124', '450125', '450126', '450127', '450200', '450202', '450203', '450204', '450205', '450221', '450222', '450223', '450224', '450225', '450226', '450300', '450302', '450303', '450304', '450305', '450311', '450321', '450322', '450323', '450324', '450325', '450326', '450327', '450328', '450329', '450330', '450331', '450332', '450400', '450403', '450404', '450405', '450421', '450422', '450423', '450481', '450500', '450502', '450503', '450512', '450521', '450600', '450602', '450603', '450621', '450681', '450700', '450702', '450703', '450721', '450722', '450800', '450802', '450803', '450804', '450821', '450881', '450900', '450902', '450921', '450922', '450923', '450924', '450981', '451000', '451002', '451021', '451022', '451023', '451024', '451025', '451026', '451027', '451028', '451029', '451030', '451031', '451100', '451102', '451121', '451122', '451123', '451200', '451202', '451221', '451222', '451223', '451224', '451225', '451226', '451227', '451228', '451229', '451281', '451300', '451302', '451321', '451322', '451323', '451324', '451381', '451400', '451402', '451421', '451422', '451423', '451424', '451425', '451481', '460000', '460100', '460105', '460106', '460107', '460108', '460200', '469000', '469001', '469002', '469003', '469005', '469006', '469007', '469025', '469026', '469027', '469028', '469030', '469031', '469033', '469034', '469035', '469036', '469037', '469038', '469039', '500000', '500101', '500102', '500103', '500104', '500105', '500106', '500107', '500108', '500109', '500110', '500111', '500112', '500113', '500114', '500115', '500116', '500117', '500118', '500119', '500200', '500222', '500223', '500224', '500225', '500226', '500227', '500228', '500229', '500230', '500231', '500232', '500233', '500234', '500235', '500236', '500237', '500238', '500240', '500241', '500242', '500243', '510000', '510100', '510104', '510105', '510106', '510107', '510108', '510112', '510113', '510114', '510115', '510121', '510122', '510124', '510129', '510131', '510132', '510181', '510182', '510183', '510184', '510300', '510302', '510303', '510304', '510311', '510321', '510322', '510400', '510402', '510403', '510411', '510421', '510422', '510500', '510502', '510503', '510504', '510521', '510522', '510524', '510525', '510600', '510603', '510623', '510626', '510681', '510682', '510683', '510700', '510703', '510704', '510722', '510723', '510724', '510725', '510726', '510727', '510781', '510800', '510802', '510811', '510812', '510821', '510822', '510823', '510824', '510900', '510903', '510904', '510921', '510922', '510923', '511000', '511002', '511011', '511024', '511025', '511028', '511100', '511102', '511111', '511112', '511113', '511123', '511124', '511126', '511129', '511132', '511133', '511181', '511300', '511302', '511303', '511304', '511321', '511322', '511323', '511324', '511325', '511381', '511400', '511402', '511421', '511422', '511423', '511424', '511425', '511500', '511502', '511521', '511522', '511523', '511524', '511525', '511526', '511527', '511528', '511529', '511600', '511602', '511621', '511622', '511623', '511681', '511700', '511702', '511721', '511722', '511723', '511724', '511725', '511781', '511800', '511802', '511821', '511822', '511823', '511824', '511825', '511826', '511827', '511900', '511902', '511921', '511922', '511923', '512000', '512002', '512021', '512022', '512081', '513200', '513221', '513222', '513223', '513224', '513225', '513226', '513227', '513228', '513229', '513230', '513231', '513232', '513233', '513300', '513321', '513322', '513323', '513324', '513325', '513326', '513327', '513328', '513329', '513330', '513331', '513332', '513333', '513334', '513335', '513336', '513337', '513338', '513400', '513401', '513422', '513423', '513424', '513425', '513426', '513427', '513428', '513429', '513430', '513431', '513432', '513433', '513434', '513435', '513436', '513437', '520000', '520100', '520102', '520103', '520111', '520112', '520113', '520114', '520121', '520122', '520123', '520181', '520200', '520201', '520203', '520221', '520222', '520300', '520302', '520303', '520321', '520322', '520323', '520324', '520325', '520326', '520327', '520328', '520329', '520330', '520381', '520382', '520400', '520402', '520421', '520422', '520423', '520424', '520425', '522200', '522201', '522222', '522223', '522224', '522225', '522226', '522227', '522228', '522229', '522230', '522300', '522301', '522322', '522323', '522324', '522325', '522326', '522327', '522328', '522400', '522401', '522422', '522423', '522424', '522425', '522426', '522427', '522428', '522600', '522601', '522622', '522623', '522624', '522625', '522626', '522627', '522628', '522629', '522630', '522631', '522632', '522633', '522634', '522635', '522636', '522700', '522701', '522702', '522722', '522723', '522725', '522726', '522727', '522728', '522729', '522730', '522731', '522732', '530000', '530100', '530102', '530103', '530111', '530112', '530113', '530121', '530122', '530124', '530125', '530126', '530127', '530128', '530129', '530181', '530300', '530302', '530321', '530322', '530323', '530324', '530325', '530326', '530328', '530381', '530400', '530402', '530421', '530422', '530423', '530424', '530425', '530426', '530427', '530428', '530500', '530502', '530521', '530522', '530523', '530524', '530600', '530602', '530621', '530622', '530623', '530624', '530625', '530626', '530627', '530628', '530629', '530630', '530700', '530702', '530721', '530722', '530723', '530724', '530800', '530802', '530821', '530822', '530823', '530824', '530825', '530826', '530827', '530828', '530829', '530900', '530902', '530921', '530922', '530923', '530924', '530925', '530926', '530927', '532300', '532301', '532322', '532323', '532324', '532325', '532326', '532327', '532328', '532329', '532331', '532500', '532501', '532502', '532522', '532523', '532524', '532525', '532526', '532527', '532528', '532529', '532530', '532531', '532532', '532600', '532621', '532622', '532623', '532624', '532625', '532626', '532627', '532628', '532800', '532801', '532822', '532823', '532900', '532901', '532922', '532923', '532924', '532925', '532926', '532927', '532928', '532929', '532930', '532931', '532932', '533100', '533102', '533103', '533122', '533123', '533124', '533300', '533321', '533323', '533324', '533325', '533400', '533421', '533422', '533423', '540000', '540100', '540102', '540121', '540122', '540123', '540124', '540125', '540126', '540127', '542100', '542121', '542122', '542123', '542124', '542125', '542126', '542127', '542128', '542129', '542132', '542133', '542200', '542221', '542222', '542223', '542224', '542225', '542226', '542227', '542228', '542229', '542231', '542232', '542233', '542300', '542301', '542322', '542323', '542324', '542325', '542326', '542327', '542328', '542329', '542330', '542331', '542332', '542333', '542334', '542335', '542336', '542337', '542338', '542400', '542421', '542422', '542423', '542424', '542425', '542426', '542427', '542428', '542429', '542430', '542500', '542521', '542522', '542523', '542524', '542525', '542526', '542527', '542600', '542621', '542622', '542623', '542624', '542625', '542626', '542627', '610000', '610100', '610102', '610103', '610104', '610111', '610112', '610113', '610114', '610115', '610116', '610122', '610124', '610125', '610126', '610200', '610202', '610203', '610204', '610222', '610300', '610302', '610303', '610304', '610322', '610323', '610324', '610326', '610327', '610328', '610329', '610330', '610331', '610400', '610402', '610403', '610404', '610422', '610423', '610424', '610425', '610426', '610427', '610428', '610429', '610430', '610431', '610481', '610500', '610502', '610521', '610522', '610523', '610524', '610525', '610526', '610527', '610528', '610581', '610582', '610600', '610602', '610621', '610622', '610623', '610624', '610625', '610626', '610627', '610628', '610629', '610630', '610631', '610632', '610700', '610702', '610721', '610722', '610723', '610724', '610725', '610726', '610727', '610728', '610729', '610730', '610800', '610802', '610821', '610822', '610823', '610824', '610825', '610826', '610827', '610828', '610829', '610830', '610831', '610900', '610902', '610921', '610922', '610923', '610924', '610925', '610926', '610927', '610928', '610929', '611000', '611002', '611021', '611022', '611023', '611024', '611025', '611026', '620000', '620100', '620102', '620103', '620104', '620105', '620111', '620121', '620122', '620123', '620200', '620300', '620302', '620321', '620400', '620402', '620403', '620421', '620422', '620423', '620500', '620502', '620503', '620521', '620522', '620523', '620524', '620525', '620600', '620602', '620621', '620622', '620623', '620700', '620702', '620721', '620722', '620723', '620724', '620725', '620800', '620802', '620821', '620822', '620823', '620824', '620825', '620826', '620900', '620902', '620921', '620922', '620923', '620924', '620981', '620982', '621000', '621002', '621021', '621022', '621023', '621024', '621025', '621026', '621027', '621100', '621102', '621121', '621122', '621123', '621124', '621125', '621126', '621200', '621202', '621221', '621222', '621223', '621224', '621225', '621226', '621227', '621228', '622900', '622901', '622921', '622922', '622923', '622924', '622925', '622926', '622927', '623000', '623001', '623021', '623022', '623023', '623024', '623025', '623026', '623027', '630000', '630100', '630102', '630103', '630104', '630105', '630121', '630122', '630123', '632100', '632121', '632122', '632123', '632126', '632127', '632128', '632200', '632221', '632222', '632223', '632224', '632300', '632321', '632322', '632323', '632324', '632500', '632521', '632522', '632523', '632524', '632525', '632600', '632621', '632622', '632623', '632624', '632625', '632626', '632700', '632721', '632722', '632723', '632724', '632725', '632726', '632800', '632801', '632802', '632821', '632822', '632823', '640000', '640100', '640104', '640105', '640106', '640121', '640122', '640181', '640200', '640202', '640205', '640221', '640300', '640302', '640323', '640324', '640381', '640400', '640402', '640422', '640423', '640424', '640425', '640500', '640502', '640521', '640522', '650000', '650100', '650102', '650103', '650104', '650105', '650106', '650107', '650108', '650121', '650200', '650202', '650203', '650204', '650205', '652100', '652101', '652122', '652123', '652200', '652201', '652222', '652223', '652300', '652301', '652302', '652303', '652323', '652324', '652325', '652327', '652328', '652700', '652701', '652722', '652723', '652800', '652801', '652822', '652823', '652824', '652825', '652826', '652827', '652828', '652829', '652900', '652901', '652922', '652923', '652924', '652925', '652926', '652927', '652928', '652929', '653000', '653001', '653022', '653023', '653024', '653100', '653101', '653121', '653122', '653123', '653124', '653125', '653126', '653127', '653128', '653129', '653130', '653131', '653200', '653201', '653221', '653222', '653223', '653224', '653225', '653226', '653227', '654000', '654002', '654003', '654021', '654022', '654023', '654024', '654025', '654026', '654027', '654028', '654200', '654201', '654202', '654221', '654223', '654224', '654225', '654226', '654300', '654301', '654321', '654322', '654323', '654324', '654325', '654326', '659000', '659001', '659002', '659003', '659004', '710000', '810000', '820000'] + + passport: + valid: 'E\d\d{7}|G\d{8}' + diff --git a/src/main/resources/_GE.yml b/src/main/resources/_GE.yml new file mode 100644 index 000000000..6005a2e02 --- /dev/null +++ b/src/main/resources/_GE.yml @@ -0,0 +1,5 @@ +# coding: utf-8 +_GE: + faker: + id_number: + place: ['110000', '110101', '110102', '110103', '110104', '110105', '110106', '110107', '110108', '110109', '110111', '110112', '110113', '110114', '110115', '110116', '110117', '110200', '110228', '110229', '120000', '120101', '120102', '120103', '120104', '120105', '120106', '120107', '120108', '120109', '120110', '120111', '120112', '120113', '120114', '120115', '120200', '120221', '120223', '120225', '130000', '130100', '130102', '130103', '130104', '130105', '130107', '130108', '130121', '130123', '130124', '130125', '130126', '130127', '130128', '130129', '130130', '130131', '130132', '130133', '130181', '130182', '130183', '130184', '130185', '130200', '130202', '130203', '130204', '130205', '130207', '130208', '130223', '130224', '130225', '130227', '130229', '130230', '130281', '130283', '130300', '130302', '130303', '130304', '130321', '130322', '130323', '130324', '130400', '130402', '130403', '130404', '130406', '130421', '130423', '130424', '130425', '130426', '130427', '130428', '130429', '130430', '130431', '130432', '130433', '130434', '130435', '130481', '130500', '130502', '130503', '130521', '130522', '130523', '130524', '130525', '130526', '130527', '130528', '130529', '130530', '130531', '130532', '130533', '130534', '130535', '130581', '130582', '130600', '130602', '130603', '130604', '130621', '130622', '130623', '130624', '130625', '130626', '130627', '130628', '130629', '130630', '130631', '130632', '130633', '130634', '130635', '130636', '130637', '130638', '130681', '130682', '130683', '130684', '130700', '130702', '130703', '130705', '130706', '130721', '130722', '130723', '130724', '130725', '130726', '130727', '130728', '130729', '130730', '130731', '130732', '130733', '130800', '130802', '130803', '130804', '130821', '130822', '130823', '130824', '130825', '130826', '130827', '130828', '130900', '130902', '130903', '130921', '130922', '130923', '130924', '130925', '130926', '130927', '130928', '130929', '130930', '130981', '130982', '130983', '130984', '131000', '131002', '131003', '131022', '131023', '131024', '131025', '131026', '131028', '131081', '131082', '131100', '131102', '131121', '131122', '131123', '131124', '131125', '131126', '131127', '131128', '131181', '131182', '140000', '140100', '140105', '140106', '140107', '140108', '140109', '140110', '140121', '140122', '140123', '140181', '140200', '140202', '140203', '140211', '140212', '140221', '140222', '140223', '140224', '140225', '140226', '140227', '140300', '140302', '140303', '140311', '140321', '140322', '140400', '140402', '140411', '140421', '140423', '140424', '140425', '140426', '140427', '140428', '140429', '140430', '140431', '140481', '140500', '140502', '140521', '140522', '140524', '140525', '140581', '140600', '140602', '140603', '140621', '140622', '140623', '140624', '140700', '140702', '140721', '140722', '140723', '140724', '140725', '140726', '140727', '140728', '140729', '140781', '140800', '140802', '140821', '140822', '140823', '140824', '140825', '140826', '140827', '140828', '140829', '140830', '140881', '140882', '140900', '140902', '140921', '140922', '140923', '140924', '140925', '140926', '140927', '140928', '140929', '140930', '140931', '140932', '140981', '141000', '141002', '141021', '141022', '141023', '141024', '141025', '141026', '141027', '141028', '141029', '141030', '141031', '141032', '141033', '141034', '141081', '141082', '141100', '141102', '141121', '141122', '141123', '141124', '141125', '141126', '141127', '141128', '141129', '141130', '141181', '141182', '150000', '150100', '150102', '150103', '150104', '150105', '150121', '150122', '150123', '150124', '150125', '150200', '150202', '150203', '150204', '150205', '150206', '150207', '150221', '150222', '150223', '150300', '150302', '150303', '150304', '150400', '150402', '150403', '150404', '150421', '150422', '150423', '150424', '150425', '150426', '150428', '150429', '150430', '150500', '150502', '150521', '150522', '150523', '150524', '150525', '150526', '150581', '150600', '150602', '150621', '150622', '150623', '150624', '150625', '150626', '150627', '150700', '150702', '150721', '150722', '150723', '150724', '150725', '150726', '150727', '150781', '150782', '150783', '150784', '150785', '150800', '150802', '150821', '150822', '150823', '150824', '150825', '150826', '150900', '150902', '150921', '150922', '150923', '150924', '150925', '150926', '150927', '150928', '150929', '150981', '152200', '152201', '152202', '152221', '152222', '152223', '152224', '152500', '152501', '152502', '152522', '152523', '152524', '152525', '152526', '152527', '152528', '152529', '152530', '152531', '152900', '152921', '152922', '152923', '210000', '210100', '210102', '210103', '210104', '210105', '210106', '210111', '210112', '210113', '210114', '210122', '210123', '210124', '210181', '210200', '210202', '210203', '210204', '210211', '210212', '210213', '210224', '210281', '210282', '210283', '210300', '210302', '210303', '210304', '210311', '210321', '210323', '210381', '210400', '210402', '210403', '210404', '210411', '210421', '210422', '210423', '210500', '210502', '210503', '210504', '210505', '210521', '210522', '210600', '210602', '210603', '210604', '210624', '210681', '210682', '210700', '210702', '210703', '210711', '210726', '210727', '210781', '210782', '210800', '210802', '210803', '210804', '210811', '210881', '210882', '210900', '210902', '210903', '210904', '210905', '210911', '210921', '210922', '211000', '211002', '211003', '211004', '211005', '211011', '211021', '211081', '211100', '211102', '211103', '211121', '211122', '211200', '211202', '211204', '211221', '211223', '211224', '211281', '211282', '211300', '211302', '211303', '211321', '211322', '211324', '211381', '211382', '211400', '211402', '211403', '211404', '211421', '211422', '211481', '220000', '220100', '220102', '220103', '220104', '220105', '220106', '220112', '220122', '220181', '220182', '220183', '220200', '220202', '220203', '220204', '220211', '220221', '220281', '220282', '220283', '220284', '220300', '220302', '220303', '220322', '220323', '220381', '220382', '220400', '220402', '220403', '220421', '220422', '220500', '220502', '220503', '220521', '220523', '220524', '220581', '220582', '220600', '220602', '220604', '220621', '220622', '220623', '220681', '220700', '220702', '220721', '220722', '220723', '220724', '220800', '220802', '220821', '220822', '220881', '220882', '222400', '222401', '222402', '222403', '222404', '222405', '222406', '222424', '222426', '230000', '230100', '230102', '230103', '230104', '230108', '230109', '230110', '230111', '230112', '230123', '230124', '230125', '230126', '230127', '230128', '230129', '230182', '230183', '230184', '230200', '230202', '230203', '230204', '230205', '230206', '230207', '230208', '230221', '230223', '230224', '230225', '230227', '230229', '230230', '230231', '230281', '230300', '230302', '230303', '230304', '230305', '230306', '230307', '230321', '230381', '230382', '230400', '230402', '230403', '230404', '230405', '230406', '230407', '230421', '230422', '230500', '230502', '230503', '230505', '230506', '230521', '230522', '230523', '230524', '230600', '230602', '230603', '230604', '230605', '230606', '230621', '230622', '230623', '230624', '230700', '230702', '230703', '230704', '230705', '230706', '230707', '230708', '230709', '230710', '230711', '230712', '230713', '230714', '230715', '230716', '230722', '230781', '230800', '230803', '230804', '230805', '230811', '230822', '230826', '230828', '230833', '230881', '230882', '230900', '230902', '230903', '230904', '230921', '231000', '231002', '231003', '231004', '231005', '231024', '231025', '231081', '231083', '231084', '231085', '231100', '231102', '231121', '231123', '231124', '231181', '231182', '231200', '231202', '231221', '231222', '231223', '231224', '231225', '231226', '231281', '231282', '231283', '232700', '232701', '232702', '232703', '232704', '232721', '232722', '232723', '310000', '310101', '310103', '310104', '310105', '310106', '310107', '310108', '310109', '310110', '310112', '310113', '310114', '310115', '310116', '310117', '310118', '310119', '310120', '310200', '310230', '320000', '320100', '320102', '320103', '320104', '320105', '320106', '320107', '320111', '320113', '320114', '320115', '320116', '320124', '320125', '320200', '320202', '320203', '320204', '320205', '320206', '320211', '320281', '320282', '320300', '320302', '320303', '320304', '320305', '320311', '320321', '320322', '320323', '320324', '320381', '320382', '320400', '320402', '320404', '320405', '320411', '320412', '320481', '320482', '320500', '320502', '320503', '320504', '320505', '320506', '320507', '320581', '320582', '320583', '320584', '320585', '320600', '320602', '320611', '320621', '320623', '320681', '320682', '320683', '320684', '320700', '320703', '320705', '320706', '320721', '320722', '320723', '320724', '320800', '320802', '320803', '320804', '320811', '320826', '320829', '320830', '320831', '320900', '320902', '320903', '320921', '320922', '320923', '320924', '320925', '320981', '320982', '321000', '321002', '321003', '321011', '321023', '321081', '321084', '321088', '321100', '321102', '321111', '321112', '321181', '321182', '321183', '321200', '321202', '321203', '321281', '321282', '321283', '321284', '321300', '321302', '321311', '321322', '321323', '321324', '330000', '330100', '330102', '330103', '330104', '330105', '330106', '330108', '330109', '330110', '330122', '330127', '330182', '330183', '330185', '330200', '330203', '330204', '330205', '330206', '330211', '330212', '330225', '330226', '330281', '330282', '330283', '330300', '330302', '330303', '330304', '330322', '330324', '330326', '330327', '330328', '330329', '330381', '330382', '330400', '330402', '330411', '330421', '330424', '330481', '330482', '330483', '330500', '330502', '330503', '330521', '330522', '330523', '330600', '330602', '330621', '330624', '330681', '330682', '330683', '330700', '330702', '330703', '330723', '330726', '330727', '330781', '330782', '330783', '330784', '330800', '330802', '330803', '330822', '330824', '330825', '330881', '330900', '330902', '330903', '330921', '330922', '331000', '331002', '331003', '331004', '331021', '331022', '331023', '331024', '331081', '331082', '331100', '331102', '331121', '331122', '331123', '331124', '331125', '331126', '331127', '331181', '340000', '340100', '340102', '340103', '340104', '340111', '340121', '340122', '340123', '340200', '340202', '340203', '340207', '340208', '340221', '340222', '340223', '340300', '340302', '340303', '340304', '340311', '340321', '340322', '340323', '340400', '340402', '340403', '340404', '340405', '340406', '340421', '340500', '340502', '340503', '340504', '340521', '340600', '340602', '340603', '340604', '340621', '340700', '340702', '340703', '340711', '340721', '340800', '340802', '340803', '340811', '340822', '340823', '340824', '340825', '340826', '340827', '340828', '340881', '341000', '341002', '341003', '341004', '341021', '341022', '341023', '341024', '341100', '341102', '341103', '341122', '341124', '341125', '341126', '341181', '341182', '341200', '341202', '341203', '341204', '341221', '341222', '341225', '341226', '341282', '341300', '341302', '341321', '341322', '341323', '341324', '341400', '341402', '341421', '341422', '341423', '341424', '341500', '341502', '341503', '341521', '341522', '341523', '341524', '341525', '341600', '341602', '341621', '341622', '341623', '341700', '341702', '341721', '341722', '341723', '341800', '341802', '341821', '341822', '341823', '341824', '341825', '341881', '350000', '350100', '350102', '350103', '350104', '350105', '350111', '350121', '350122', '350123', '350124', '350125', '350128', '350181', '350182', '350200', '350203', '350205', '350206', '350211', '350212', '350213', '350300', '350302', '350303', '350304', '350305', '350322', '350400', '350402', '350403', '350421', '350423', '350424', '350425', '350426', '350427', '350428', '350429', '350430', '350481', '350500', '350502', '350503', '350504', '350505', '350521', '350524', '350525', '350526', '350527', '350581', '350582', '350583', '350600', '350602', '350603', '350622', '350623', '350624', '350625', '350626', '350627', '350628', '350629', '350681', '350700', '350702', '350721', '350722', '350723', '350724', '350725', '350781', '350782', '350783', '350784', '350800', '350802', '350821', '350822', '350823', '350824', '350825', '350881', '350900', '350902', '350921', '350922', '350923', '350924', '350925', '350926', '350981', '350982', '360000', '360100', '360102', '360103', '360104', '360105', '360111', '360121', '360122', '360123', '360124', '360200', '360202', '360203', '360222', '360281', '360300', '360302', '360313', '360321', '360322', '360323', '360400', '360402', '360403', '360421', '360423', '360424', '360425', '360426', '360427', '360428', '360429', '360430', '360481', '360500', '360502', '360521', '360600', '360602', '360622', '360681', '360700', '360702', '360721', '360722', '360723', '360724', '360725', '360726', '360727', '360728', '360729', '360730', '360731', '360732', '360733', '360734', '360735', '360781', '360782', '360800', '360802', '360803', '360821', '360822', '360823', '360824', '360825', '360826', '360827', '360828', '360829', '360830', '360881', '360900', '360902', '360921', '360922', '360923', '360924', '360925', '360926', '360981', '360982', '360983', '361000', '361002', '361021', '361022', '361023', '361024', '361025', '361026', '361027', '361028', '361029', '361030', '361100', '361102', '361121', '361122', '361123', '361124', '361125', '361126', '361127', '361128', '361129', '361130', '361181', '370000', '370100', '370102', '370103', '370104', '370105', '370112', '370113', '370124', '370125', '370126', '370181', '370200', '370202', '370203', '370205', '370211', '370212', '370213', '370214', '370281', '370282', '370283', '370284', '370285', '370300', '370302', '370303', '370304', '370305', '370306', '370321', '370322', '370323', '370400', '370402', '370403', '370404', '370405', '370406', '370481', '370500', '370502', '370503', '370521', '370522', '370523', '370600', '370602', '370611', '370612', '370613', '370634', '370681', '370682', '370683', '370684', '370685', '370686', '370687', '370700', '370702', '370703', '370704', '370705', '370724', '370725', '370781', '370782', '370783', '370784', '370785', '370786', '370800', '370802', '370811', '370826', '370827', '370828', '370829', '370830', '370831', '370832', '370881', '370882', '370883', '370900', '370902', '370903', '370921', '370923', '370982', '370983', '371000', '371002', '371081', '371082', '371083', '371100', '371102', '371103', '371121', '371122', '371200', '371202', '371203', '371300', '371302', '371311', '371312', '371321', '371322', '371323', '371324', '371325', '371326', '371327', '371328', '371329', '371400', '371402', '371421', '371422', '371423', '371424', '371425', '371426', '371427', '371428', '371481', '371482', '371500', '371502', '371521', '371522', '371523', '371524', '371525', '371526', '371581', '371600', '371602', '371621', '371622', '371623', '371624', '371625', '371626', '371700', '371702', '371721', '371722', '371723', '371724', '371725', '371726', '371727', '371728', '410000', '410100', '410102', '410103', '410104', '410105', '410106', '410108', '410122', '410181', '410182', '410183', '410184', '410185', '410200', '410202', '410203', '410204', '410205', '410211', '410221', '410222', '410223', '410224', '410225', '410300', '410302', '410303', '410304', '410305', '410306', '410307', '410322', '410323', '410324', '410325', '410326', '410327', '410328', '410329', '410381', '410400', '410402', '410403', '410404', '410411', '410421', '410422', '410423', '410425', '410481', '410482', '410500', '410502', '410503', '410505', '410506', '410522', '410523', '410526', '410527', '410581', '410600', '410602', '410603', '410611', '410621', '410622', '410700', '410702', '410703', '410704', '410711', '410721', '410724', '410725', '410726', '410727', '410728', '410781', '410782', '410800', '410802', '410803', '410804', '410811', '410821', '410822', '410823', '410825', '410881', '410882', '410883', '410900', '410902', '410922', '410923', '410926', '410927', '410928', '411000', '411002', '411023', '411024', '411025', '411081', '411082', '411100', '411102', '411103', '411104', '411121', '411122', '411200', '411202', '411221', '411222', '411224', '411281', '411282', '411300', '411302', '411303', '411321', '411322', '411323', '411324', '411325', '411326', '411327', '411328', '411329', '411330', '411381', '411400', '411402', '411403', '411421', '411422', '411423', '411424', '411425', '411426', '411481', '411500', '411502', '411503', '411521', '411522', '411523', '411524', '411525', '411526', '411527', '411528', '411600', '411602', '411621', '411622', '411623', '411624', '411625', '411626', '411627', '411628', '411681', '411700', '411702', '411721', '411722', '411723', '411724', '411725', '411726', '411727', '411728', '411729', '420000', '420100', '420102', '420103', '420104', '420105', '420106', '420107', '420111', '420112', '420113', '420114', '420115', '420116', '420117', '420200', '420202', '420203', '420204', '420205', '420222', '420281', '420300', '420302', '420303', '420321', '420322', '420323', '420324', '420325', '420381', '420500', '420502', '420503', '420504', '420505', '420506', '420525', '420526', '420527', '420528', '420529', '420581', '420582', '420583', '420600', '420602', '420606', '420607', '420624', '420625', '420626', '420682', '420683', '420684', '420700', '420702', '420703', '420704', '420800', '420802', '420804', '420821', '420822', '420881', '420900', '420902', '420921', '420922', '420923', '420981', '420982', '420984', '421000', '421002', '421003', '421022', '421023', '421024', '421081', '421083', '421087', '421100', '421102', '421121', '421122', '421123', '421124', '421125', '421126', '421127', '421181', '421182', '421200', '421202', '421221', '421222', '421223', '421224', '421281', '421300', '421302', '421381', '422800', '422801', '422802', '422822', '422823', '422825', '422826', '422827', '422828', '429000', '429004', '429005', '429006', '429021', '430000', '430100', '430102', '430103', '430104', '430105', '430111', '430121', '430122', '430124', '430181', '430200', '430202', '430203', '430204', '430211', '430221', '430223', '430224', '430225', '430281', '430300', '430302', '430304', '430321', '430381', '430382', '430400', '430405', '430406', '430407', '430408', '430412', '430421', '430422', '430423', '430424', '430426', '430481', '430482', '430500', '430502', '430503', '430511', '430521', '430522', '430523', '430524', '430525', '430527', '430528', '430529', '430581', '430600', '430602', '430603', '430611', '430621', '430623', '430624', '430626', '430681', '430682', '430700', '430702', '430703', '430721', '430722', '430723', '430724', '430725', '430726', '430781', '430800', '430802', '430811', '430821', '430822', '430900', '430902', '430903', '430921', '430922', '430923', '430981', '431000', '431002', '431003', '431021', '431022', '431023', '431024', '431025', '431026', '431027', '431028', '431081', '431100', '431102', '431103', '431121', '431122', '431123', '431124', '431125', '431126', '431127', '431128', '431129', '431200', '431202', '431221', '431222', '431223', '431224', '431225', '431226', '431227', '431228', '431229', '431230', '431281', '431300', '431302', '431321', '431322', '431381', '431382', '433100', '433101', '433122', '433123', '433124', '433125', '433126', '433127', '433130', '440000', '440100', '440103', '440104', '440105', '440106', '440111', '440112', '440113', '440114', '440115', '440116', '440183', '440184', '440200', '440203', '440204', '440205', '440222', '440224', '440229', '440232', '440233', '440281', '440282', '440300', '440303', '440304', '440305', '440306', '440307', '440308', '440400', '440402', '440403', '440404', '440500', '440507', '440511', '440512', '440513', '440514', '440515', '440523', '440600', '440604', '440605', '440606', '440607', '440608', '440700', '440703', '440704', '440705', '440781', '440783', '440784', '440785', '440800', '440802', '440803', '440804', '440811', '440823', '440825', '440881', '440882', '440883', '440900', '440902', '440903', '440923', '440981', '440982', '440983', '441200', '441202', '441203', '441223', '441224', '441225', '441226', '441283', '441284', '441300', '441302', '441303', '441322', '441323', '441324', '441400', '441402', '441421', '441422', '441423', '441424', '441426', '441427', '441481', '441500', '441502', '441521', '441523', '441581', '441600', '441602', '441621', '441622', '441623', '441624', '441625', '441700', '441702', '441721', '441723', '441781', '441800', '441802', '441821', '441823', '441825', '441826', '441827', '441881', '441882', '441900', '442000', '445100', '445102', '445121', '445122', '445200', '445202', '445221', '445222', '445224', '445281', '445300', '445302', '445321', '445322', '445323', '445381', '450000', '450100', '450102', '450103', '450105', '450107', '450108', '450109', '450122', '450123', '450124', '450125', '450126', '450127', '450200', '450202', '450203', '450204', '450205', '450221', '450222', '450223', '450224', '450225', '450226', '450300', '450302', '450303', '450304', '450305', '450311', '450321', '450322', '450323', '450324', '450325', '450326', '450327', '450328', '450329', '450330', '450331', '450332', '450400', '450403', '450404', '450405', '450421', '450422', '450423', '450481', '450500', '450502', '450503', '450512', '450521', '450600', '450602', '450603', '450621', '450681', '450700', '450702', '450703', '450721', '450722', '450800', '450802', '450803', '450804', '450821', '450881', '450900', '450902', '450921', '450922', '450923', '450924', '450981', '451000', '451002', '451021', '451022', '451023', '451024', '451025', '451026', '451027', '451028', '451029', '451030', '451031', '451100', '451102', '451121', '451122', '451123', '451200', '451202', '451221', '451222', '451223', '451224', '451225', '451226', '451227', '451228', '451229', '451281', '451300', '451302', '451321', '451322', '451323', '451324', '451381', '451400', '451402', '451421', '451422', '451423', '451424', '451425', '451481', '460000', '460100', '460105', '460106', '460107', '460108', '460200', '469000', '469001', '469002', '469003', '469005', '469006', '469007', '469025', '469026', '469027', '469028', '469030', '469031', '469033', '469034', '469035', '469036', '469037', '469038', '469039', '500000', '500101', '500102', '500103', '500104', '500105', '500106', '500107', '500108', '500109', '500110', '500111', '500112', '500113', '500114', '500115', '500116', '500117', '500118', '500119', '500200', '500222', '500223', '500224', '500225', '500226', '500227', '500228', '500229', '500230', '500231', '500232', '500233', '500234', '500235', '500236', '500237', '500238', '500240', '500241', '500242', '500243', '510000', '510100', '510104', '510105', '510106', '510107', '510108', '510112', '510113', '510114', '510115', '510121', '510122', '510124', '510129', '510131', '510132', '510181', '510182', '510183', '510184', '510300', '510302', '510303', '510304', '510311', '510321', '510322', '510400', '510402', '510403', '510411', '510421', '510422', '510500', '510502', '510503', '510504', '510521', '510522', '510524', '510525', '510600', '510603', '510623', '510626', '510681', '510682', '510683', '510700', '510703', '510704', '510722', '510723', '510724', '510725', '510726', '510727', '510781', '510800', '510802', '510811', '510812', '510821', '510822', '510823', '510824', '510900', '510903', '510904', '510921', '510922', '510923', '511000', '511002', '511011', '511024', '511025', '511028', '511100', '511102', '511111', '511112', '511113', '511123', '511124', '511126', '511129', '511132', '511133', '511181', '511300', '511302', '511303', '511304', '511321', '511322', '511323', '511324', '511325', '511381', '511400', '511402', '511421', '511422', '511423', '511424', '511425', '511500', '511502', '511521', '511522', '511523', '511524', '511525', '511526', '511527', '511528', '511529', '511600', '511602', '511621', '511622', '511623', '511681', '511700', '511702', '511721', '511722', '511723', '511724', '511725', '511781', '511800', '511802', '511821', '511822', '511823', '511824', '511825', '511826', '511827', '511900', '511902', '511921', '511922', '511923', '512000', '512002', '512021', '512022', '512081', '513200', '513221', '513222', '513223', '513224', '513225', '513226', '513227', '513228', '513229', '513230', '513231', '513232', '513233', '513300', '513321', '513322', '513323', '513324', '513325', '513326', '513327', '513328', '513329', '513330', '513331', '513332', '513333', '513334', '513335', '513336', '513337', '513338', '513400', '513401', '513422', '513423', '513424', '513425', '513426', '513427', '513428', '513429', '513430', '513431', '513432', '513433', '513434', '513435', '513436', '513437', '520000', '520100', '520102', '520103', '520111', '520112', '520113', '520114', '520121', '520122', '520123', '520181', '520200', '520201', '520203', '520221', '520222', '520300', '520302', '520303', '520321', '520322', '520323', '520324', '520325', '520326', '520327', '520328', '520329', '520330', '520381', '520382', '520400', '520402', '520421', '520422', '520423', '520424', '520425', '522200', '522201', '522222', '522223', '522224', '522225', '522226', '522227', '522228', '522229', '522230', '522300', '522301', '522322', '522323', '522324', '522325', '522326', '522327', '522328', '522400', '522401', '522422', '522423', '522424', '522425', '522426', '522427', '522428', '522600', '522601', '522622', '522623', '522624', '522625', '522626', '522627', '522628', '522629', '522630', '522631', '522632', '522633', '522634', '522635', '522636', '522700', '522701', '522702', '522722', '522723', '522725', '522726', '522727', '522728', '522729', '522730', '522731', '522732', '530000', '530100', '530102', '530103', '530111', '530112', '530113', '530121', '530122', '530124', '530125', '530126', '530127', '530128', '530129', '530181', '530300', '530302', '530321', '530322', '530323', '530324', '530325', '530326', '530328', '530381', '530400', '530402', '530421', '530422', '530423', '530424', '530425', '530426', '530427', '530428', '530500', '530502', '530521', '530522', '530523', '530524', '530600', '530602', '530621', '530622', '530623', '530624', '530625', '530626', '530627', '530628', '530629', '530630', '530700', '530702', '530721', '530722', '530723', '530724', '530800', '530802', '530821', '530822', '530823', '530824', '530825', '530826', '530827', '530828', '530829', '530900', '530902', '530921', '530922', '530923', '530924', '530925', '530926', '530927', '532300', '532301', '532322', '532323', '532324', '532325', '532326', '532327', '532328', '532329', '532331', '532500', '532501', '532502', '532522', '532523', '532524', '532525', '532526', '532527', '532528', '532529', '532530', '532531', '532532', '532600', '532621', '532622', '532623', '532624', '532625', '532626', '532627', '532628', '532800', '532801', '532822', '532823', '532900', '532901', '532922', '532923', '532924', '532925', '532926', '532927', '532928', '532929', '532930', '532931', '532932', '533100', '533102', '533103', '533122', '533123', '533124', '533300', '533321', '533323', '533324', '533325', '533400', '533421', '533422', '533423', '540000', '540100', '540102', '540121', '540122', '540123', '540124', '540125', '540126', '540127', '542100', '542121', '542122', '542123', '542124', '542125', '542126', '542127', '542128', '542129', '542132', '542133', '542200', '542221', '542222', '542223', '542224', '542225', '542226', '542227', '542228', '542229', '542231', '542232', '542233', '542300', '542301', '542322', '542323', '542324', '542325', '542326', '542327', '542328', '542329', '542330', '542331', '542332', '542333', '542334', '542335', '542336', '542337', '542338', '542400', '542421', '542422', '542423', '542424', '542425', '542426', '542427', '542428', '542429', '542430', '542500', '542521', '542522', '542523', '542524', '542525', '542526', '542527', '542600', '542621', '542622', '542623', '542624', '542625', '542626', '542627', '610000', '610100', '610102', '610103', '610104', '610111', '610112', '610113', '610114', '610115', '610116', '610122', '610124', '610125', '610126', '610200', '610202', '610203', '610204', '610222', '610300', '610302', '610303', '610304', '610322', '610323', '610324', '610326', '610327', '610328', '610329', '610330', '610331', '610400', '610402', '610403', '610404', '610422', '610423', '610424', '610425', '610426', '610427', '610428', '610429', '610430', '610431', '610481', '610500', '610502', '610521', '610522', '610523', '610524', '610525', '610526', '610527', '610528', '610581', '610582', '610600', '610602', '610621', '610622', '610623', '610624', '610625', '610626', '610627', '610628', '610629', '610630', '610631', '610632', '610700', '610702', '610721', '610722', '610723', '610724', '610725', '610726', '610727', '610728', '610729', '610730', '610800', '610802', '610821', '610822', '610823', '610824', '610825', '610826', '610827', '610828', '610829', '610830', '610831', '610900', '610902', '610921', '610922', '610923', '610924', '610925', '610926', '610927', '610928', '610929', '611000', '611002', '611021', '611022', '611023', '611024', '611025', '611026', '620000', '620100', '620102', '620103', '620104', '620105', '620111', '620121', '620122', '620123', '620200', '620300', '620302', '620321', '620400', '620402', '620403', '620421', '620422', '620423', '620500', '620502', '620503', '620521', '620522', '620523', '620524', '620525', '620600', '620602', '620621', '620622', '620623', '620700', '620702', '620721', '620722', '620723', '620724', '620725', '620800', '620802', '620821', '620822', '620823', '620824', '620825', '620826', '620900', '620902', '620921', '620922', '620923', '620924', '620981', '620982', '621000', '621002', '621021', '621022', '621023', '621024', '621025', '621026', '621027', '621100', '621102', '621121', '621122', '621123', '621124', '621125', '621126', '621200', '621202', '621221', '621222', '621223', '621224', '621225', '621226', '621227', '621228', '622900', '622901', '622921', '622922', '622923', '622924', '622925', '622926', '622927', '623000', '623001', '623021', '623022', '623023', '623024', '623025', '623026', '623027', '630000', '630100', '630102', '630103', '630104', '630105', '630121', '630122', '630123', '632100', '632121', '632122', '632123', '632126', '632127', '632128', '632200', '632221', '632222', '632223', '632224', '632300', '632321', '632322', '632323', '632324', '632500', '632521', '632522', '632523', '632524', '632525', '632600', '632621', '632622', '632623', '632624', '632625', '632626', '632700', '632721', '632722', '632723', '632724', '632725', '632726', '632800', '632801', '632802', '632821', '632822', '632823', '640000', '640100', '640104', '640105', '640106', '640121', '640122', '640181', '640200', '640202', '640205', '640221', '640300', '640302', '640323', '640324', '640381', '640400', '640402', '640422', '640423', '640424', '640425', '640500', '640502', '640521', '640522', '650000', '650100', '650102', '650103', '650104', '650105', '650106', '650107', '650108', '650121', '650200', '650202', '650203', '650204', '650205', '652100', '652101', '652122', '652123', '652200', '652201', '652222', '652223', '652300', '652301', '652302', '652303', '652323', '652324', '652325', '652327', '652328', '652700', '652701', '652722', '652723', '652800', '652801', '652822', '652823', '652824', '652825', '652826', '652827', '652828', '652829', '652900', '652901', '652922', '652923', '652924', '652925', '652926', '652927', '652928', '652929', '653000', '653001', '653022', '653023', '653024', '653100', '653101', '653121', '653122', '653123', '653124', '653125', '653126', '653127', '653128', '653129', '653130', '653131', '653200', '653201', '653221', '653222', '653223', '653224', '653225', '653226', '653227', '654000', '654002', '654003', '654021', '654022', '654023', '654024', '654025', '654026', '654027', '654028', '654200', '654201', '654202', '654221', '654223', '654224', '654225', '654226', '654300', '654301', '654321', '654322', '654323', '654324', '654325', '654326', '659000', '659001', '659002', '659003', '659004', '710000', '810000', '820000'] diff --git a/src/main/resources/_MD.yml b/src/main/resources/_MD.yml index 01e3f787a..86fed586a 100644 --- a/src/main/resources/_MD.yml +++ b/src/main/resources/_MD.yml @@ -36,7 +36,3 @@ _MD: - '077######' - '078######' - '079######' - - id_number: - valid: "#{IDNumber.valid_moldova_personal_code}" - invalid: "#{IDNumber.invalid_moldova_personal_code}" diff --git a/src/main/resources/bg.yml b/src/main/resources/bg.yml index f4f397b6d..6b8e8ef37 100644 --- a/src/main/resources/bg.yml +++ b/src/main/resources/bg.yml @@ -53,7 +53,3 @@ bg: passport: valid: "[0-9]{9}" - - id_number: - valid: "#{IDNumber.valid_bulgarian_personal_code}" - invalid: "#{IDNumber.invalid_bulgarian_personal_code}" diff --git a/src/main/resources/en-ZA.yml b/src/main/resources/en-ZA.yml index 257ebe777..ad6c86517 100644 --- a/src/main/resources/en-ZA.yml +++ b/src/main/resources/en-ZA.yml @@ -135,10 +135,6 @@ en-ZA: name_with_middle: - "#{first_name} #{last_name} #{last_name}" - id_number: - valid: "#{IDNumber.valid_en_za_ssn}" - invalid: "#{IDNumber.invalid_en_za_ssn}" - team: provinces: [Limpopo, Gauteng, Free State, North West, Northern Cape, Western Cape, diff --git a/src/main/resources/es-MX.yml b/src/main/resources/es-MX.yml index b1e057493..1f4da5256 100644 --- a/src/main/resources/es-MX.yml +++ b/src/main/resources/es-MX.yml @@ -99,7 +99,3 @@ es-MX: payment_methods: ["Tarjeta de credito", "Tarjeta de débito", "Paypal", "Efectivo", "Transferencia de dinero", "Bitcoins", "Cheque", "Apple Pay", "Google Pay", "WeChat Pay", "Alipay", "Visa Checkout"] subscription_terms: ["Diaria", "Semanal", "Mensual", "Anual", "Bienal", "Trienal", "Quinquenal", "De por vida"] payment_terms: ["Pago por adelantado", "Mensual", "Anual", "Suscripción completa"] - - id_number: - valid: "#{IDNumber.valid_es_mx_ssn}" - invalid: "#{IDNumber.invalid_es_mx_ssn}" diff --git a/src/main/resources/et.yml b/src/main/resources/et.yml index 137afdd6d..f98ce5cc0 100644 --- a/src/main/resources/et.yml +++ b/src/main/resources/et.yml @@ -52,10 +52,6 @@ et: cell_phone: formats: ["5### ####", "83## ####", "84## ####"] - id_number: - valid: "#{IDNumber.valid_estonian_personal_code}" - invalid: "#{IDNumber.invalid_estonian_personal_code}" - invoice: reference: # '#' means the place where check digit is placed diff --git a/src/main/resources/mk.yml b/src/main/resources/mk.yml index 1d6daf2c0..7cfbe5db8 100644 --- a/src/main/resources/mk.yml +++ b/src/main/resources/mk.yml @@ -39,7 +39,3 @@ mk: # - '079 2#####' - '079 4#####' # - '079 8#####' - - id_number: - valid: "#{IDNumber.valid_macedonian_personal_code}" - invalid: "#{IDNumber.invalid_macedonian_personal_code}" diff --git a/src/main/resources/sq.yml b/src/main/resources/sq.yml index b3d373407..2418d3354 100644 --- a/src/main/resources/sq.yml +++ b/src/main/resources/sq.yml @@ -23,7 +23,3 @@ sq: area_code: ['22', '23', '24', '25', '26', '27', '28', '29', '32', '33', '34', '35', '36', '37', '38', '39'] formats: - '+#{country_code} 4 #{area_code}## ###' - - id_number: - valid: "#{IDNumber.valid_albanian_personal_code}" - invalid: "#{IDNumber.invalid_albanian_personal_code}" diff --git a/src/main/resources/sv-SE.yml b/src/main/resources/sv-SE.yml index fc3e6e5ba..ba6872d02 100644 --- a/src/main/resources/sv-SE.yml +++ b/src/main/resources/sv-SE.yml @@ -1,7 +1,8 @@ sv-SE: faker: - id_number: - valid: "#{IDNumber.valid_sv_se_ssn}" - invalid: "#{IDNumber.invalid_sv_se_ssn}" + address: + city_name: [Alingsås, Arboga, Arvika, Askersund, Boden, Bollnäs, Borgholm, Borlänge, Borås, Djursholm, Eksjö, Enköping, Eslöv, Falköping, Gothenburg, Gränna, Gävle, Helsingborg, Härnösand, Hässleholm, Höganäs, Jönköping, Karlstad, Katrineholm, Kungälv, Köping, Lidingö, Lidköping, Lindesberg, Linköping, Luleå, Malmö, Mjölby, Norrköping, Norrtälje, Nynäshamn, Stockholm, Strängnäs, Strömstad, Torshälla, Umeå, Uppsala, Växjö, Åmål, Ängelholm, Örnsköldsvik] + country_code: ['SE'] + diff --git a/src/main/resources/zh-CN.yml b/src/main/resources/zh-CN.yml index e7bf66e46..be53d8062 100644 --- a/src/main/resources/zh-CN.yml +++ b/src/main/resources/zh-CN.yml @@ -15,7 +15,6 @@ zh-CN: - "#{street_name}#{building_number}号" default_country: [中国] - name: last_name: [赵, 钱, 孙, 李, 周, 吴, 郑, 王, 冯, 陈, 褚, 卫, 蒋, 沈, 韩, 杨, 朱, 秦, 尤, 许, 何, 吕, 施, 张, 孔, 曹, 严, 华, 金, 魏, 陶, 姜, 戚, 谢, 邹, 喻, 柏, 水, 窦, 章, 云, 苏, 潘, 葛, 奚, 范, 彭, 郎, 鲁, 韦, 昌, 马, 苗, 凤, 花, 方, 俞, 任, 袁, 柳, 酆, 鲍, 史, 唐, 费, 廉, 岑, 薛, 雷, 贺, 倪, 汤, 滕, 殷, 罗, 毕, 郝, 邬, 安, 常, 乐, 于, 时, 傅, 皮, 卞, 齐, 康, 伍, 余, 元, 卜, 顾, 孟, 平, 黄, 和, 穆, 萧, 尹, 姚, 邵, 湛, 汪, 祁, 毛, 禹, 狄, 米, 贝, 明, 臧, 计, 伏, 成, 戴, 谈, 宋, 茅, 庞, 熊, 纪, 舒, 屈, 项, 祝, 董, 梁, 杜, 阮, 蓝, 闵, 席, 季, 麻, 强, 贾, 路, 娄, 危, 江, 童, 颜, 郭, 梅, 盛, 林, 刁, 钟, 徐, 邱, 骆, 高, 夏, 蔡, 田, 樊, 胡, 凌, 霍, 虞, 万, 支, 柯, 昝, 管, 卢, 莫, 经, 房, 裘, 缪, 干, 解, 应, 宗, 丁, 宣, 贲, 邓, 郁, 单, 杭, 洪, 包, 诸, 左, 石, 崔, 吉, 钮, 龚, 程, 嵇, 邢, 滑, 裴, 陆, 荣, 翁, 荀, 羊, 於, 惠, 甄, 麴, 家, 封, 芮, 羿, 储, 靳, 汲, 邴, 糜, 松, 井, 段, 富, 巫, 乌, 焦, 巴, 弓, 牧, 隗, 山, 谷, 车, 侯, 宓, 蓬, 全, 郗, 班, 仰, 秋, 仲, 伊, 宫, 宁, 仇, 栾, 暴, 甘, 钭, 厉, 戎, 祖, 武, 符, 刘, 景, 詹, 束, 龙, 叶, 幸, 司, 韶, 郜, 黎, 蓟, 薄, 印, 宿, 白, 怀, 蒲, 邰, 从, 鄂, 索, 咸, 籍, 赖, 卓, 蔺, 屠, 蒙, 池, 乔, 阴, 欎, 胥, 能, 苍, 双, 闻, 莘, 党, 翟, 谭, 贡, 劳, 逄, 姬, 申, 扶, 堵, 冉, 宰, 郦, 雍, 舄, 璩, 桑, 桂, 濮, 牛, 寿, 通, 边, 扈, 燕, 冀, 郏, 浦, 尚, 农, 温, 别, 庄, 晏, 柴, 瞿, 阎, 充, 慕, 连, 茹, 习, 宦, 艾, 鱼, 容, 向, 古, 易, 慎, 戈, 廖, 庾, 终, 暨, 居, 衡, 步, 都, 耿, 满, 弘, 匡, 国, 文, 寇, 广, 禄, 阙, 东, 殴, 殳, 沃, 利, 蔚, 越, 夔, 隆, 师, 巩, 厍, 聂, 晁, 勾, 敖, 融, 冷, 訾, 辛, 阚, 那, 简, 饶, 空, 曾, 毋, 沙, 乜, 养, 鞠, 须, 丰, 巢, 关, 蒯, 相, 查, 後, 荆, 红, 游, 竺, 权, 逯, 盖, 益, 桓, 公, 万俟, 司马, 上官, 欧阳, 夏侯, 诸葛, 闻人, 东方, 赫连, 皇甫, 尉迟, 公羊, 澹台, 公冶, 宗政, 濮阳, 淳于, 单于, 太叔, 申屠, 公孙, 仲孙, 轩辕, 令狐, 钟离, 宇文, 长孙, 慕容, 鲜于, 闾丘, 司徒, 司空, 亓官, 司寇, 仉, 督, 子车, 颛孙, 端木, 巫马, 公西, 漆雕, 乐正, 壤驷, 公良, 拓跋, 夹谷, 宰父, 谷梁, 晋, 楚, 闫, 法, 汝, 鄢, 涂, 钦, 段干, 百里, 东郭, 南门, 呼延, 归, 海, 羊舌, 微生, 岳, 帅, 缑, 亢, 况, 后, 有, 琴, 梁丘, 左丘, 东门, 西门, 商, 牟, 佘, 佴, 伯, 赏, 南宫, 墨, 哈, 谯, 笪, 年, 爱, 阳, 佟, 第五, 言, 福, 百, 家, 姓, 终] first_name: [绍齐, 博文, 梓晨, 胤祥, 瑞霖, 明哲, 天翊, 凯瑞, 健雄, 耀杰, 潇然, 子涵, 越彬, 钰轩, 智辉, 致远, 俊驰, 雨泽, 烨磊, 晟睿, 文昊, 修洁, 黎昕, 远航, 旭尧, 鸿涛, 伟祺, 荣轩, 越泽, 浩宇, 瑾瑜, 皓轩, 擎苍, 擎宇, 志泽, 子轩, 睿渊, 弘文, 哲瀚, 雨泽, 楷瑞, 建辉, 晋鹏, 天磊, 绍辉, 泽洋, 鑫磊, 鹏煊, 昊强, 伟宸, 博超, 君浩, 子骞, 鹏涛, 炎彬, 鹤轩, 越彬, 风华, 靖琪, 明辉, 伟诚, 明轩, 健柏, 修杰, 志泽, 弘文, 峻熙, 嘉懿, 煜城, 懿轩, 烨伟, 苑博, 伟泽, 熠彤, 鸿煊, 博涛, 烨霖, 烨华, 煜祺, 智宸, 正豪, 昊然, 明杰, 立诚, 立轩, 立辉, 峻熙, 弘文, 熠彤, 鸿煊, 烨霖, 哲瀚, 鑫鹏, 昊天, 思聪, 展鹏, 笑愚, 志强, 炫明, 雪松, 思源, 智渊, 思淼, 晓啸, 天宇, 浩然, 文轩, 鹭洋, 振家, 乐驹, 晓博, 文博, 昊焱, 立果, 金鑫, 锦程, 嘉熙, 鹏飞, 子默, 思远, 浩轩, 语堂, 聪健, 明, 文, 果, 思, 鹏, 驰, 涛, 琪, 浩, 航, 彬, 伟, 丽, 静, 豪, 姣姣] @@ -24,46 +23,8 @@ zh-CN: name_with_middle: # Chinese names don't have middle names - "#{name}" - phone_number: - mobile_phone_service_provider_prefix_3: ['130', '131', '132', '133', '134', '135', '136', '137', '138', '139', '145', '146', '147', '148', '149', '150', '151', '152', '157', '158', '159', '153', '155', '156', '162', '165', '166', '167', '171', '172', '178', '173', '177', '175', '176', '180', '181', '189', '182', '183', '184', '187', '188', '185', '186', '192', '196'] - formats: - - "#{PhoneNumber.mobile_phone_service_provider_prefix_3} #### ####" - formats_international: - - '+86 #{PhoneNumber.mobile_phone_service_provider_prefix_3} #### ####' - cell_phone: - formats: - - '13#########' - - '145########' - - '147########' - - '150########' - - '151########' - - '152########' - - '153########' - - '155########' - - '156########' - - '157########' - - '158########' - - '159########' - - '170########' - - '171########' - - '172########' - - '173########' - - '175########' - - '176########' - - '177########' - - '178########' - - '18#########' - university: prefix: ["东", "南", "西", "北", "东南", "东北", "西南", "西北", "中国", "华中", "广州", "北京", "武汉"] suffix: ["理工大学", "技术大学", "艺术大学", "体育大学", "经贸大学", "农业大学", "科技大学", "师范大学", "大学"] name: - "#{University.prefix}#{University.suffix}" - - id_number: - place: ['110000', '110101', '110102', '110103', '110104', '110105', '110106', '110107', '110108', '110109', '110111', '110112', '110113', '110114', '110115', '110116', '110117', '110200', '110228', '110229', '120000', '120101', '120102', '120103', '120104', '120105', '120106', '120107', '120108', '120109', '120110', '120111', '120112', '120113', '120114', '120115', '120200', '120221', '120223', '120225', '130000', '130100', '130102', '130103', '130104', '130105', '130107', '130108', '130121', '130123', '130124', '130125', '130126', '130127', '130128', '130129', '130130', '130131', '130132', '130133', '130181', '130182', '130183', '130184', '130185', '130200', '130202', '130203', '130204', '130205', '130207', '130208', '130223', '130224', '130225', '130227', '130229', '130230', '130281', '130283', '130300', '130302', '130303', '130304', '130321', '130322', '130323', '130324', '130400', '130402', '130403', '130404', '130406', '130421', '130423', '130424', '130425', '130426', '130427', '130428', '130429', '130430', '130431', '130432', '130433', '130434', '130435', '130481', '130500', '130502', '130503', '130521', '130522', '130523', '130524', '130525', '130526', '130527', '130528', '130529', '130530', '130531', '130532', '130533', '130534', '130535', '130581', '130582', '130600', '130602', '130603', '130604', '130621', '130622', '130623', '130624', '130625', '130626', '130627', '130628', '130629', '130630', '130631', '130632', '130633', '130634', '130635', '130636', '130637', '130638', '130681', '130682', '130683', '130684', '130700', '130702', '130703', '130705', '130706', '130721', '130722', '130723', '130724', '130725', '130726', '130727', '130728', '130729', '130730', '130731', '130732', '130733', '130800', '130802', '130803', '130804', '130821', '130822', '130823', '130824', '130825', '130826', '130827', '130828', '130900', '130902', '130903', '130921', '130922', '130923', '130924', '130925', '130926', '130927', '130928', '130929', '130930', '130981', '130982', '130983', '130984', '131000', '131002', '131003', '131022', '131023', '131024', '131025', '131026', '131028', '131081', '131082', '131100', '131102', '131121', '131122', '131123', '131124', '131125', '131126', '131127', '131128', '131181', '131182', '140000', '140100', '140105', '140106', '140107', '140108', '140109', '140110', '140121', '140122', '140123', '140181', '140200', '140202', '140203', '140211', '140212', '140221', '140222', '140223', '140224', '140225', '140226', '140227', '140300', '140302', '140303', '140311', '140321', '140322', '140400', '140402', '140411', '140421', '140423', '140424', '140425', '140426', '140427', '140428', '140429', '140430', '140431', '140481', '140500', '140502', '140521', '140522', '140524', '140525', '140581', '140600', '140602', '140603', '140621', '140622', '140623', '140624', '140700', '140702', '140721', '140722', '140723', '140724', '140725', '140726', '140727', '140728', '140729', '140781', '140800', '140802', '140821', '140822', '140823', '140824', '140825', '140826', '140827', '140828', '140829', '140830', '140881', '140882', '140900', '140902', '140921', '140922', '140923', '140924', '140925', '140926', '140927', '140928', '140929', '140930', '140931', '140932', '140981', '141000', '141002', '141021', '141022', '141023', '141024', '141025', '141026', '141027', '141028', '141029', '141030', '141031', '141032', '141033', '141034', '141081', '141082', '141100', '141102', '141121', '141122', '141123', '141124', '141125', '141126', '141127', '141128', '141129', '141130', '141181', '141182', '150000', '150100', '150102', '150103', '150104', '150105', '150121', '150122', '150123', '150124', '150125', '150200', '150202', '150203', '150204', '150205', '150206', '150207', '150221', '150222', '150223', '150300', '150302', '150303', '150304', '150400', '150402', '150403', '150404', '150421', '150422', '150423', '150424', '150425', '150426', '150428', '150429', '150430', '150500', '150502', '150521', '150522', '150523', '150524', '150525', '150526', '150581', '150600', '150602', '150621', '150622', '150623', '150624', '150625', '150626', '150627', '150700', '150702', '150721', '150722', '150723', '150724', '150725', '150726', '150727', '150781', '150782', '150783', '150784', '150785', '150800', '150802', '150821', '150822', '150823', '150824', '150825', '150826', '150900', '150902', '150921', '150922', '150923', '150924', '150925', '150926', '150927', '150928', '150929', '150981', '152200', '152201', '152202', '152221', '152222', '152223', '152224', '152500', '152501', '152502', '152522', '152523', '152524', '152525', '152526', '152527', '152528', '152529', '152530', '152531', '152900', '152921', '152922', '152923', '210000', '210100', '210102', '210103', '210104', '210105', '210106', '210111', '210112', '210113', '210114', '210122', '210123', '210124', '210181', '210200', '210202', '210203', '210204', '210211', '210212', '210213', '210224', '210281', '210282', '210283', '210300', '210302', '210303', '210304', '210311', '210321', '210323', '210381', '210400', '210402', '210403', '210404', '210411', '210421', '210422', '210423', '210500', '210502', '210503', '210504', '210505', '210521', '210522', '210600', '210602', '210603', '210604', '210624', '210681', '210682', '210700', '210702', '210703', '210711', '210726', '210727', '210781', '210782', '210800', '210802', '210803', '210804', '210811', '210881', '210882', '210900', '210902', '210903', '210904', '210905', '210911', '210921', '210922', '211000', '211002', '211003', '211004', '211005', '211011', '211021', '211081', '211100', '211102', '211103', '211121', '211122', '211200', '211202', '211204', '211221', '211223', '211224', '211281', '211282', '211300', '211302', '211303', '211321', '211322', '211324', '211381', '211382', '211400', '211402', '211403', '211404', '211421', '211422', '211481', '220000', '220100', '220102', '220103', '220104', '220105', '220106', '220112', '220122', '220181', '220182', '220183', '220200', '220202', '220203', '220204', '220211', '220221', '220281', '220282', '220283', '220284', '220300', '220302', '220303', '220322', '220323', '220381', '220382', '220400', '220402', '220403', '220421', '220422', '220500', '220502', '220503', '220521', '220523', '220524', '220581', '220582', '220600', '220602', '220604', '220621', '220622', '220623', '220681', '220700', '220702', '220721', '220722', '220723', '220724', '220800', '220802', '220821', '220822', '220881', '220882', '222400', '222401', '222402', '222403', '222404', '222405', '222406', '222424', '222426', '230000', '230100', '230102', '230103', '230104', '230108', '230109', '230110', '230111', '230112', '230123', '230124', '230125', '230126', '230127', '230128', '230129', '230182', '230183', '230184', '230200', '230202', '230203', '230204', '230205', '230206', '230207', '230208', '230221', '230223', '230224', '230225', '230227', '230229', '230230', '230231', '230281', '230300', '230302', '230303', '230304', '230305', '230306', '230307', '230321', '230381', '230382', '230400', '230402', '230403', '230404', '230405', '230406', '230407', '230421', '230422', '230500', '230502', '230503', '230505', '230506', '230521', '230522', '230523', '230524', '230600', '230602', '230603', '230604', '230605', '230606', '230621', '230622', '230623', '230624', '230700', '230702', '230703', '230704', '230705', '230706', '230707', '230708', '230709', '230710', '230711', '230712', '230713', '230714', '230715', '230716', '230722', '230781', '230800', '230803', '230804', '230805', '230811', '230822', '230826', '230828', '230833', '230881', '230882', '230900', '230902', '230903', '230904', '230921', '231000', '231002', '231003', '231004', '231005', '231024', '231025', '231081', '231083', '231084', '231085', '231100', '231102', '231121', '231123', '231124', '231181', '231182', '231200', '231202', '231221', '231222', '231223', '231224', '231225', '231226', '231281', '231282', '231283', '232700', '232701', '232702', '232703', '232704', '232721', '232722', '232723', '310000', '310101', '310103', '310104', '310105', '310106', '310107', '310108', '310109', '310110', '310112', '310113', '310114', '310115', '310116', '310117', '310118', '310119', '310120', '310200', '310230', '320000', '320100', '320102', '320103', '320104', '320105', '320106', '320107', '320111', '320113', '320114', '320115', '320116', '320124', '320125', '320200', '320202', '320203', '320204', '320205', '320206', '320211', '320281', '320282', '320300', '320302', '320303', '320304', '320305', '320311', '320321', '320322', '320323', '320324', '320381', '320382', '320400', '320402', '320404', '320405', '320411', '320412', '320481', '320482', '320500', '320502', '320503', '320504', '320505', '320506', '320507', '320581', '320582', '320583', '320584', '320585', '320600', '320602', '320611', '320621', '320623', '320681', '320682', '320683', '320684', '320700', '320703', '320705', '320706', '320721', '320722', '320723', '320724', '320800', '320802', '320803', '320804', '320811', '320826', '320829', '320830', '320831', '320900', '320902', '320903', '320921', '320922', '320923', '320924', '320925', '320981', '320982', '321000', '321002', '321003', '321011', '321023', '321081', '321084', '321088', '321100', '321102', '321111', '321112', '321181', '321182', '321183', '321200', '321202', '321203', '321281', '321282', '321283', '321284', '321300', '321302', '321311', '321322', '321323', '321324', '330000', '330100', '330102', '330103', '330104', '330105', '330106', '330108', '330109', '330110', '330122', '330127', '330182', '330183', '330185', '330200', '330203', '330204', '330205', '330206', '330211', '330212', '330225', '330226', '330281', '330282', '330283', '330300', '330302', '330303', '330304', '330322', '330324', '330326', '330327', '330328', '330329', '330381', '330382', '330400', '330402', '330411', '330421', '330424', '330481', '330482', '330483', '330500', '330502', '330503', '330521', '330522', '330523', '330600', '330602', '330621', '330624', '330681', '330682', '330683', '330700', '330702', '330703', '330723', '330726', '330727', '330781', '330782', '330783', '330784', '330800', '330802', '330803', '330822', '330824', '330825', '330881', '330900', '330902', '330903', '330921', '330922', '331000', '331002', '331003', '331004', '331021', '331022', '331023', '331024', '331081', '331082', '331100', '331102', '331121', '331122', '331123', '331124', '331125', '331126', '331127', '331181', '340000', '340100', '340102', '340103', '340104', '340111', '340121', '340122', '340123', '340200', '340202', '340203', '340207', '340208', '340221', '340222', '340223', '340300', '340302', '340303', '340304', '340311', '340321', '340322', '340323', '340400', '340402', '340403', '340404', '340405', '340406', '340421', '340500', '340502', '340503', '340504', '340521', '340600', '340602', '340603', '340604', '340621', '340700', '340702', '340703', '340711', '340721', '340800', '340802', '340803', '340811', '340822', '340823', '340824', '340825', '340826', '340827', '340828', '340881', '341000', '341002', '341003', '341004', '341021', '341022', '341023', '341024', '341100', '341102', '341103', '341122', '341124', '341125', '341126', '341181', '341182', '341200', '341202', '341203', '341204', '341221', '341222', '341225', '341226', '341282', '341300', '341302', '341321', '341322', '341323', '341324', '341400', '341402', '341421', '341422', '341423', '341424', '341500', '341502', '341503', '341521', '341522', '341523', '341524', '341525', '341600', '341602', '341621', '341622', '341623', '341700', '341702', '341721', '341722', '341723', '341800', '341802', '341821', '341822', '341823', '341824', '341825', '341881', '350000', '350100', '350102', '350103', '350104', '350105', '350111', '350121', '350122', '350123', '350124', '350125', '350128', '350181', '350182', '350200', '350203', '350205', '350206', '350211', '350212', '350213', '350300', '350302', '350303', '350304', '350305', '350322', '350400', '350402', '350403', '350421', '350423', '350424', '350425', '350426', '350427', '350428', '350429', '350430', '350481', '350500', '350502', '350503', '350504', '350505', '350521', '350524', '350525', '350526', '350527', '350581', '350582', '350583', '350600', '350602', '350603', '350622', '350623', '350624', '350625', '350626', '350627', '350628', '350629', '350681', '350700', '350702', '350721', '350722', '350723', '350724', '350725', '350781', '350782', '350783', '350784', '350800', '350802', '350821', '350822', '350823', '350824', '350825', '350881', '350900', '350902', '350921', '350922', '350923', '350924', '350925', '350926', '350981', '350982', '360000', '360100', '360102', '360103', '360104', '360105', '360111', '360121', '360122', '360123', '360124', '360200', '360202', '360203', '360222', '360281', '360300', '360302', '360313', '360321', '360322', '360323', '360400', '360402', '360403', '360421', '360423', '360424', '360425', '360426', '360427', '360428', '360429', '360430', '360481', '360500', '360502', '360521', '360600', '360602', '360622', '360681', '360700', '360702', '360721', '360722', '360723', '360724', '360725', '360726', '360727', '360728', '360729', '360730', '360731', '360732', '360733', '360734', '360735', '360781', '360782', '360800', '360802', '360803', '360821', '360822', '360823', '360824', '360825', '360826', '360827', '360828', '360829', '360830', '360881', '360900', '360902', '360921', '360922', '360923', '360924', '360925', '360926', '360981', '360982', '360983', '361000', '361002', '361021', '361022', '361023', '361024', '361025', '361026', '361027', '361028', '361029', '361030', '361100', '361102', '361121', '361122', '361123', '361124', '361125', '361126', '361127', '361128', '361129', '361130', '361181', '370000', '370100', '370102', '370103', '370104', '370105', '370112', '370113', '370124', '370125', '370126', '370181', '370200', '370202', '370203', '370205', '370211', '370212', '370213', '370214', '370281', '370282', '370283', '370284', '370285', '370300', '370302', '370303', '370304', '370305', '370306', '370321', '370322', '370323', '370400', '370402', '370403', '370404', '370405', '370406', '370481', '370500', '370502', '370503', '370521', '370522', '370523', '370600', '370602', '370611', '370612', '370613', '370634', '370681', '370682', '370683', '370684', '370685', '370686', '370687', '370700', '370702', '370703', '370704', '370705', '370724', '370725', '370781', '370782', '370783', '370784', '370785', '370786', '370800', '370802', '370811', '370826', '370827', '370828', '370829', '370830', '370831', '370832', '370881', '370882', '370883', '370900', '370902', '370903', '370921', '370923', '370982', '370983', '371000', '371002', '371081', '371082', '371083', '371100', '371102', '371103', '371121', '371122', '371200', '371202', '371203', '371300', '371302', '371311', '371312', '371321', '371322', '371323', '371324', '371325', '371326', '371327', '371328', '371329', '371400', '371402', '371421', '371422', '371423', '371424', '371425', '371426', '371427', '371428', '371481', '371482', '371500', '371502', '371521', '371522', '371523', '371524', '371525', '371526', '371581', '371600', '371602', '371621', '371622', '371623', '371624', '371625', '371626', '371700', '371702', '371721', '371722', '371723', '371724', '371725', '371726', '371727', '371728', '410000', '410100', '410102', '410103', '410104', '410105', '410106', '410108', '410122', '410181', '410182', '410183', '410184', '410185', '410200', '410202', '410203', '410204', '410205', '410211', '410221', '410222', '410223', '410224', '410225', '410300', '410302', '410303', '410304', '410305', '410306', '410307', '410322', '410323', '410324', '410325', '410326', '410327', '410328', '410329', '410381', '410400', '410402', '410403', '410404', '410411', '410421', '410422', '410423', '410425', '410481', '410482', '410500', '410502', '410503', '410505', '410506', '410522', '410523', '410526', '410527', '410581', '410600', '410602', '410603', '410611', '410621', '410622', '410700', '410702', '410703', '410704', '410711', '410721', '410724', '410725', '410726', '410727', '410728', '410781', '410782', '410800', '410802', '410803', '410804', '410811', '410821', '410822', '410823', '410825', '410881', '410882', '410883', '410900', '410902', '410922', '410923', '410926', '410927', '410928', '411000', '411002', '411023', '411024', '411025', '411081', '411082', '411100', '411102', '411103', '411104', '411121', '411122', '411200', '411202', '411221', '411222', '411224', '411281', '411282', '411300', '411302', '411303', '411321', '411322', '411323', '411324', '411325', '411326', '411327', '411328', '411329', '411330', '411381', '411400', '411402', '411403', '411421', '411422', '411423', '411424', '411425', '411426', '411481', '411500', '411502', '411503', '411521', '411522', '411523', '411524', '411525', '411526', '411527', '411528', '411600', '411602', '411621', '411622', '411623', '411624', '411625', '411626', '411627', '411628', '411681', '411700', '411702', '411721', '411722', '411723', '411724', '411725', '411726', '411727', '411728', '411729', '420000', '420100', '420102', '420103', '420104', '420105', '420106', '420107', '420111', '420112', '420113', '420114', '420115', '420116', '420117', '420200', '420202', '420203', '420204', '420205', '420222', '420281', '420300', '420302', '420303', '420321', '420322', '420323', '420324', '420325', '420381', '420500', '420502', '420503', '420504', '420505', '420506', '420525', '420526', '420527', '420528', '420529', '420581', '420582', '420583', '420600', '420602', '420606', '420607', '420624', '420625', '420626', '420682', '420683', '420684', '420700', '420702', '420703', '420704', '420800', '420802', '420804', '420821', '420822', '420881', '420900', '420902', '420921', '420922', '420923', '420981', '420982', '420984', '421000', '421002', '421003', '421022', '421023', '421024', '421081', '421083', '421087', '421100', '421102', '421121', '421122', '421123', '421124', '421125', '421126', '421127', '421181', '421182', '421200', '421202', '421221', '421222', '421223', '421224', '421281', '421300', '421302', '421381', '422800', '422801', '422802', '422822', '422823', '422825', '422826', '422827', '422828', '429000', '429004', '429005', '429006', '429021', '430000', '430100', '430102', '430103', '430104', '430105', '430111', '430121', '430122', '430124', '430181', '430200', '430202', '430203', '430204', '430211', '430221', '430223', '430224', '430225', '430281', '430300', '430302', '430304', '430321', '430381', '430382', '430400', '430405', '430406', '430407', '430408', '430412', '430421', '430422', '430423', '430424', '430426', '430481', '430482', '430500', '430502', '430503', '430511', '430521', '430522', '430523', '430524', '430525', '430527', '430528', '430529', '430581', '430600', '430602', '430603', '430611', '430621', '430623', '430624', '430626', '430681', '430682', '430700', '430702', '430703', '430721', '430722', '430723', '430724', '430725', '430726', '430781', '430800', '430802', '430811', '430821', '430822', '430900', '430902', '430903', '430921', '430922', '430923', '430981', '431000', '431002', '431003', '431021', '431022', '431023', '431024', '431025', '431026', '431027', '431028', '431081', '431100', '431102', '431103', '431121', '431122', '431123', '431124', '431125', '431126', '431127', '431128', '431129', '431200', '431202', '431221', '431222', '431223', '431224', '431225', '431226', '431227', '431228', '431229', '431230', '431281', '431300', '431302', '431321', '431322', '431381', '431382', '433100', '433101', '433122', '433123', '433124', '433125', '433126', '433127', '433130', '440000', '440100', '440103', '440104', '440105', '440106', '440111', '440112', '440113', '440114', '440115', '440116', '440183', '440184', '440200', '440203', '440204', '440205', '440222', '440224', '440229', '440232', '440233', '440281', '440282', '440300', '440303', '440304', '440305', '440306', '440307', '440308', '440400', '440402', '440403', '440404', '440500', '440507', '440511', '440512', '440513', '440514', '440515', '440523', '440600', '440604', '440605', '440606', '440607', '440608', '440700', '440703', '440704', '440705', '440781', '440783', '440784', '440785', '440800', '440802', '440803', '440804', '440811', '440823', '440825', '440881', '440882', '440883', '440900', '440902', '440903', '440923', '440981', '440982', '440983', '441200', '441202', '441203', '441223', '441224', '441225', '441226', '441283', '441284', '441300', '441302', '441303', '441322', '441323', '441324', '441400', '441402', '441421', '441422', '441423', '441424', '441426', '441427', '441481', '441500', '441502', '441521', '441523', '441581', '441600', '441602', '441621', '441622', '441623', '441624', '441625', '441700', '441702', '441721', '441723', '441781', '441800', '441802', '441821', '441823', '441825', '441826', '441827', '441881', '441882', '441900', '442000', '445100', '445102', '445121', '445122', '445200', '445202', '445221', '445222', '445224', '445281', '445300', '445302', '445321', '445322', '445323', '445381', '450000', '450100', '450102', '450103', '450105', '450107', '450108', '450109', '450122', '450123', '450124', '450125', '450126', '450127', '450200', '450202', '450203', '450204', '450205', '450221', '450222', '450223', '450224', '450225', '450226', '450300', '450302', '450303', '450304', '450305', '450311', '450321', '450322', '450323', '450324', '450325', '450326', '450327', '450328', '450329', '450330', '450331', '450332', '450400', '450403', '450404', '450405', '450421', '450422', '450423', '450481', '450500', '450502', '450503', '450512', '450521', '450600', '450602', '450603', '450621', '450681', '450700', '450702', '450703', '450721', '450722', '450800', '450802', '450803', '450804', '450821', '450881', '450900', '450902', '450921', '450922', '450923', '450924', '450981', '451000', '451002', '451021', '451022', '451023', '451024', '451025', '451026', '451027', '451028', '451029', '451030', '451031', '451100', '451102', '451121', '451122', '451123', '451200', '451202', '451221', '451222', '451223', '451224', '451225', '451226', '451227', '451228', '451229', '451281', '451300', '451302', '451321', '451322', '451323', '451324', '451381', '451400', '451402', '451421', '451422', '451423', '451424', '451425', '451481', '460000', '460100', '460105', '460106', '460107', '460108', '460200', '469000', '469001', '469002', '469003', '469005', '469006', '469007', '469025', '469026', '469027', '469028', '469030', '469031', '469033', '469034', '469035', '469036', '469037', '469038', '469039', '500000', '500101', '500102', '500103', '500104', '500105', '500106', '500107', '500108', '500109', '500110', '500111', '500112', '500113', '500114', '500115', '500116', '500117', '500118', '500119', '500200', '500222', '500223', '500224', '500225', '500226', '500227', '500228', '500229', '500230', '500231', '500232', '500233', '500234', '500235', '500236', '500237', '500238', '500240', '500241', '500242', '500243', '510000', '510100', '510104', '510105', '510106', '510107', '510108', '510112', '510113', '510114', '510115', '510121', '510122', '510124', '510129', '510131', '510132', '510181', '510182', '510183', '510184', '510300', '510302', '510303', '510304', '510311', '510321', '510322', '510400', '510402', '510403', '510411', '510421', '510422', '510500', '510502', '510503', '510504', '510521', '510522', '510524', '510525', '510600', '510603', '510623', '510626', '510681', '510682', '510683', '510700', '510703', '510704', '510722', '510723', '510724', '510725', '510726', '510727', '510781', '510800', '510802', '510811', '510812', '510821', '510822', '510823', '510824', '510900', '510903', '510904', '510921', '510922', '510923', '511000', '511002', '511011', '511024', '511025', '511028', '511100', '511102', '511111', '511112', '511113', '511123', '511124', '511126', '511129', '511132', '511133', '511181', '511300', '511302', '511303', '511304', '511321', '511322', '511323', '511324', '511325', '511381', '511400', '511402', '511421', '511422', '511423', '511424', '511425', '511500', '511502', '511521', '511522', '511523', '511524', '511525', '511526', '511527', '511528', '511529', '511600', '511602', '511621', '511622', '511623', '511681', '511700', '511702', '511721', '511722', '511723', '511724', '511725', '511781', '511800', '511802', '511821', '511822', '511823', '511824', '511825', '511826', '511827', '511900', '511902', '511921', '511922', '511923', '512000', '512002', '512021', '512022', '512081', '513200', '513221', '513222', '513223', '513224', '513225', '513226', '513227', '513228', '513229', '513230', '513231', '513232', '513233', '513300', '513321', '513322', '513323', '513324', '513325', '513326', '513327', '513328', '513329', '513330', '513331', '513332', '513333', '513334', '513335', '513336', '513337', '513338', '513400', '513401', '513422', '513423', '513424', '513425', '513426', '513427', '513428', '513429', '513430', '513431', '513432', '513433', '513434', '513435', '513436', '513437', '520000', '520100', '520102', '520103', '520111', '520112', '520113', '520114', '520121', '520122', '520123', '520181', '520200', '520201', '520203', '520221', '520222', '520300', '520302', '520303', '520321', '520322', '520323', '520324', '520325', '520326', '520327', '520328', '520329', '520330', '520381', '520382', '520400', '520402', '520421', '520422', '520423', '520424', '520425', '522200', '522201', '522222', '522223', '522224', '522225', '522226', '522227', '522228', '522229', '522230', '522300', '522301', '522322', '522323', '522324', '522325', '522326', '522327', '522328', '522400', '522401', '522422', '522423', '522424', '522425', '522426', '522427', '522428', '522600', '522601', '522622', '522623', '522624', '522625', '522626', '522627', '522628', '522629', '522630', '522631', '522632', '522633', '522634', '522635', '522636', '522700', '522701', '522702', '522722', '522723', '522725', '522726', '522727', '522728', '522729', '522730', '522731', '522732', '530000', '530100', '530102', '530103', '530111', '530112', '530113', '530121', '530122', '530124', '530125', '530126', '530127', '530128', '530129', '530181', '530300', '530302', '530321', '530322', '530323', '530324', '530325', '530326', '530328', '530381', '530400', '530402', '530421', '530422', '530423', '530424', '530425', '530426', '530427', '530428', '530500', '530502', '530521', '530522', '530523', '530524', '530600', '530602', '530621', '530622', '530623', '530624', '530625', '530626', '530627', '530628', '530629', '530630', '530700', '530702', '530721', '530722', '530723', '530724', '530800', '530802', '530821', '530822', '530823', '530824', '530825', '530826', '530827', '530828', '530829', '530900', '530902', '530921', '530922', '530923', '530924', '530925', '530926', '530927', '532300', '532301', '532322', '532323', '532324', '532325', '532326', '532327', '532328', '532329', '532331', '532500', '532501', '532502', '532522', '532523', '532524', '532525', '532526', '532527', '532528', '532529', '532530', '532531', '532532', '532600', '532621', '532622', '532623', '532624', '532625', '532626', '532627', '532628', '532800', '532801', '532822', '532823', '532900', '532901', '532922', '532923', '532924', '532925', '532926', '532927', '532928', '532929', '532930', '532931', '532932', '533100', '533102', '533103', '533122', '533123', '533124', '533300', '533321', '533323', '533324', '533325', '533400', '533421', '533422', '533423', '540000', '540100', '540102', '540121', '540122', '540123', '540124', '540125', '540126', '540127', '542100', '542121', '542122', '542123', '542124', '542125', '542126', '542127', '542128', '542129', '542132', '542133', '542200', '542221', '542222', '542223', '542224', '542225', '542226', '542227', '542228', '542229', '542231', '542232', '542233', '542300', '542301', '542322', '542323', '542324', '542325', '542326', '542327', '542328', '542329', '542330', '542331', '542332', '542333', '542334', '542335', '542336', '542337', '542338', '542400', '542421', '542422', '542423', '542424', '542425', '542426', '542427', '542428', '542429', '542430', '542500', '542521', '542522', '542523', '542524', '542525', '542526', '542527', '542600', '542621', '542622', '542623', '542624', '542625', '542626', '542627', '610000', '610100', '610102', '610103', '610104', '610111', '610112', '610113', '610114', '610115', '610116', '610122', '610124', '610125', '610126', '610200', '610202', '610203', '610204', '610222', '610300', '610302', '610303', '610304', '610322', '610323', '610324', '610326', '610327', '610328', '610329', '610330', '610331', '610400', '610402', '610403', '610404', '610422', '610423', '610424', '610425', '610426', '610427', '610428', '610429', '610430', '610431', '610481', '610500', '610502', '610521', '610522', '610523', '610524', '610525', '610526', '610527', '610528', '610581', '610582', '610600', '610602', '610621', '610622', '610623', '610624', '610625', '610626', '610627', '610628', '610629', '610630', '610631', '610632', '610700', '610702', '610721', '610722', '610723', '610724', '610725', '610726', '610727', '610728', '610729', '610730', '610800', '610802', '610821', '610822', '610823', '610824', '610825', '610826', '610827', '610828', '610829', '610830', '610831', '610900', '610902', '610921', '610922', '610923', '610924', '610925', '610926', '610927', '610928', '610929', '611000', '611002', '611021', '611022', '611023', '611024', '611025', '611026', '620000', '620100', '620102', '620103', '620104', '620105', '620111', '620121', '620122', '620123', '620200', '620300', '620302', '620321', '620400', '620402', '620403', '620421', '620422', '620423', '620500', '620502', '620503', '620521', '620522', '620523', '620524', '620525', '620600', '620602', '620621', '620622', '620623', '620700', '620702', '620721', '620722', '620723', '620724', '620725', '620800', '620802', '620821', '620822', '620823', '620824', '620825', '620826', '620900', '620902', '620921', '620922', '620923', '620924', '620981', '620982', '621000', '621002', '621021', '621022', '621023', '621024', '621025', '621026', '621027', '621100', '621102', '621121', '621122', '621123', '621124', '621125', '621126', '621200', '621202', '621221', '621222', '621223', '621224', '621225', '621226', '621227', '621228', '622900', '622901', '622921', '622922', '622923', '622924', '622925', '622926', '622927', '623000', '623001', '623021', '623022', '623023', '623024', '623025', '623026', '623027', '630000', '630100', '630102', '630103', '630104', '630105', '630121', '630122', '630123', '632100', '632121', '632122', '632123', '632126', '632127', '632128', '632200', '632221', '632222', '632223', '632224', '632300', '632321', '632322', '632323', '632324', '632500', '632521', '632522', '632523', '632524', '632525', '632600', '632621', '632622', '632623', '632624', '632625', '632626', '632700', '632721', '632722', '632723', '632724', '632725', '632726', '632800', '632801', '632802', '632821', '632822', '632823', '640000', '640100', '640104', '640105', '640106', '640121', '640122', '640181', '640200', '640202', '640205', '640221', '640300', '640302', '640323', '640324', '640381', '640400', '640402', '640422', '640423', '640424', '640425', '640500', '640502', '640521', '640522', '650000', '650100', '650102', '650103', '650104', '650105', '650106', '650107', '650108', '650121', '650200', '650202', '650203', '650204', '650205', '652100', '652101', '652122', '652123', '652200', '652201', '652222', '652223', '652300', '652301', '652302', '652303', '652323', '652324', '652325', '652327', '652328', '652700', '652701', '652722', '652723', '652800', '652801', '652822', '652823', '652824', '652825', '652826', '652827', '652828', '652829', '652900', '652901', '652922', '652923', '652924', '652925', '652926', '652927', '652928', '652929', '653000', '653001', '653022', '653023', '653024', '653100', '653101', '653121', '653122', '653123', '653124', '653125', '653126', '653127', '653128', '653129', '653130', '653131', '653200', '653201', '653221', '653222', '653223', '653224', '653225', '653226', '653227', '654000', '654002', '654003', '654021', '654022', '654023', '654024', '654025', '654026', '654027', '654028', '654200', '654201', '654202', '654221', '654223', '654224', '654225', '654226', '654300', '654301', '654321', '654322', '654323', '654324', '654325', '654326', '659000', '659001', '659002', '659003', '659004', '710000', '810000', '820000'] - valid: "#{IDNumber.valid_zh_cn_ssn}" - - passport: - valid: 'E\d\d{7}|G\d{8}' - diff --git a/src/test/java/net/datafaker/idnumbers/AlbanianIdNumberTest.java b/src/test/java/net/datafaker/idnumbers/AlbanianIdNumberTest.java index 3513c72e3..020b1513f 100644 --- a/src/test/java/net/datafaker/idnumbers/AlbanianIdNumberTest.java +++ b/src/test/java/net/datafaker/idnumbers/AlbanianIdNumberTest.java @@ -13,13 +13,13 @@ class AlbanianIdNumberTest { @RepeatedTest(100) void valid() { - String pin = generator.getValid(faker); + String pin = generator.generateValid(faker); assertThat(pin.length()).isEqualTo(10); } @RepeatedTest(100) void invalid() { - String pin = generator.getInvalid(faker); + String pin = generator.generateInvalid(faker); assertThat(pin.length()).isEqualTo(10); assertThat(parseInt(pin.substring(2, 4))) .as(() -> "Presumably invalid PIN: '%s'".formatted(pin)) diff --git a/src/test/java/net/datafaker/idnumbers/ZhCNIdNumberTest.java b/src/test/java/net/datafaker/idnumbers/ChineseIdNumberTest.java similarity index 89% rename from src/test/java/net/datafaker/idnumbers/ZhCNIdNumberTest.java rename to src/test/java/net/datafaker/idnumbers/ChineseIdNumberTest.java index fb438cbca..9e0134bb5 100644 --- a/src/test/java/net/datafaker/idnumbers/ZhCNIdNumberTest.java +++ b/src/test/java/net/datafaker/idnumbers/ChineseIdNumberTest.java @@ -8,11 +8,11 @@ import static org.assertj.core.api.Assertions.assertThat; -class ZhCNIdNumberTest extends AbstractFakerTest { +class ChineseIdNumberTest extends AbstractFakerTest { + private final BaseFaker faker = new BaseFaker(new Locale("zh", "CN")); @RepeatedTest(10) void testValidChineseIdNumber() { - BaseFaker faker = new BaseFaker(new Locale("zh_CN")); String idNumber = faker.idNumber().valid(); final int length = idNumber.length(); assertThatSsnNumberValid(length, idNumber); @@ -20,7 +20,6 @@ void testValidChineseIdNumber() { @RepeatedTest(10) void testChecksumOfChineseIdNumber() { - BaseFaker faker = new BaseFaker(new Locale("zh_CN")); String s = faker.idNumber().valid(); boolean isSatisfied = true; int count = 0; @@ -50,8 +49,8 @@ void testChecksumOfChineseIdNumber() { @RepeatedTest(100) void testValidZhCnIdNumber() { - ZhCnIdNumber id = new ZhCnIdNumber(); - String idNumber = id.getValidSsn(faker); + ChineseIdNumber id = new ChineseIdNumber(); + String idNumber = id.generateValid(faker); assertThatSsnNumberValid(idNumber.length(), idNumber); } diff --git a/src/test/java/net/datafaker/idnumbers/EsMXIdNumberTest.java b/src/test/java/net/datafaker/idnumbers/MexicanIdNumberTest.java similarity index 65% rename from src/test/java/net/datafaker/idnumbers/EsMXIdNumberTest.java rename to src/test/java/net/datafaker/idnumbers/MexicanIdNumberTest.java index cc5c2fa4a..a2b45b3da 100644 --- a/src/test/java/net/datafaker/idnumbers/EsMXIdNumberTest.java +++ b/src/test/java/net/datafaker/idnumbers/MexicanIdNumberTest.java @@ -1,6 +1,6 @@ package net.datafaker.idnumbers; -import net.datafaker.providers.base.BaseFaker; +import net.datafaker.Faker; import net.datafaker.providers.base.IdNumber; import org.junit.jupiter.api.RepeatedTest; @@ -9,23 +9,30 @@ import static org.assertj.core.api.Assertions.assertThat; -class EsMXIdNumberTest { +class MexicanIdNumberTest { private static final Pattern REGEX = Pattern.compile( "[A-Z]{4}\\d{6}[HM][A-Z]{5}[A-Z,0-9]\\d"); - private static final BaseFaker ES_MX_FAKER = new BaseFaker(new Locale("es-MX")); + private static final Faker faker = new Faker(new Locale("es", "MX")); + private final IdNumber idNumber = faker.idNumber(); @RepeatedTest(100) - void testValidMXSsn() { - IdNumber idNumber = ES_MX_FAKER.idNumber(); + void valid() { assertThat(idNumber.valid()).matches(REGEX); - assertThat(idNumber.invalid()).matches(REGEX); } @RepeatedTest(100) - void testInvalidMXSsn() { - final IdNumber idNumber = ES_MX_FAKER.idNumber(); + void validEsMXSsn() { assertThat(idNumber.validEsMXSsn()).matches(REGEX); + } + + @RepeatedTest(100) + void invalid() { + assertThat(idNumber.invalid()).matches(REGEX); + } + + @RepeatedTest(100) + void invalidEsMXSsn() { assertThat(idNumber.invalidEsMXSsn()).matches(REGEX); } } diff --git a/src/test/java/net/datafaker/idnumbers/MoldovaIdNumberTest.java b/src/test/java/net/datafaker/idnumbers/MoldovanIdNumberTest.java similarity index 87% rename from src/test/java/net/datafaker/idnumbers/MoldovaIdNumberTest.java rename to src/test/java/net/datafaker/idnumbers/MoldovanIdNumberTest.java index 7adaa915c..f64b88a58 100644 --- a/src/test/java/net/datafaker/idnumbers/MoldovaIdNumberTest.java +++ b/src/test/java/net/datafaker/idnumbers/MoldovanIdNumberTest.java @@ -6,13 +6,13 @@ import static org.assertj.core.api.Assertions.assertThat; -class MoldovaIdNumberTest { - private final MoldovaIdNumber generator = new MoldovaIdNumber(); +class MoldovanIdNumberTest { + private final MoldovanIdNumber generator = new MoldovanIdNumber(); private final Faker faker = new Faker(); @RepeatedTest(100) void valid() { - String pin = generator.getValid(faker); + String pin = generator.generateValid(faker); assertThat(pin.length()) .as(() -> "Presumably valid PIN: '%s'".formatted(pin)) .isEqualTo(13); diff --git a/src/test/java/net/datafaker/idnumbers/PeselNumberTest.java b/src/test/java/net/datafaker/idnumbers/PolishIdNumberTest.java similarity index 85% rename from src/test/java/net/datafaker/idnumbers/PeselNumberTest.java rename to src/test/java/net/datafaker/idnumbers/PolishIdNumberTest.java index d1893aa43..40f90a7d0 100644 --- a/src/test/java/net/datafaker/idnumbers/PeselNumberTest.java +++ b/src/test/java/net/datafaker/idnumbers/PolishIdNumberTest.java @@ -1,30 +1,26 @@ package net.datafaker.idnumbers; -import java.time.LocalDate; -import java.time.ZoneId; - +import net.datafaker.Faker; +import net.datafaker.idnumbers.PolishIdNumber.Gender; import net.datafaker.providers.base.BaseFaker; -import net.datafaker.idnumbers.PeselNumber.Gender; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.EnumSource; import org.junit.jupiter.params.provider.ValueSource; +import java.time.LocalDate; +import java.util.Locale; + import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.assertj.core.api.Assertions.fail; -class PeselNumberTest { +class PolishIdNumberTest { public static final int PESEL_EXPECTED_LENGTH = 11; - private static PeselNumber peselNumber; - - @BeforeAll - static void setUpBeforeClass() { - peselNumber = new PeselNumber(new BaseFaker()); - } + private static final Faker faker = new Faker(new Locale("pl", "PL")); + private static final PolishIdNumber peselNumber = new PolishIdNumber(); @ParameterizedTest @EnumSource(value = Gender.class, names = {"MALE", "FEMALE"}) @@ -32,12 +28,11 @@ void testGenderedPesel(Gender givenGender) { /* * Given */ - final LocalDate givenBirthDate = new BaseFaker().date().birthday(0, 100).toInstant() - .atZone(ZoneId.systemDefault()).toLocalDate(); + final LocalDate givenBirthDate = new BaseFaker().timeAndDate().birthday(0, 100); /* * When */ - final String gotPesel = peselNumber.get(givenBirthDate, givenGender); + final String gotPesel = peselNumber.get(faker, givenBirthDate, givenGender); /* * Then @@ -59,7 +54,7 @@ void testCenturiesPesel(int givenBirthYear) { /* * When */ - final String gotPesel = peselNumber.get(givenBirthDate, Gender.ANY); + final String gotPesel = peselNumber.get(faker, givenBirthDate, Gender.ANY); /* * Then @@ -80,7 +75,7 @@ void testInvalidCenturiesPesel(int givenBirthYear) { /* * When */ - assertThatThrownBy(() -> peselNumber.get(givenBirthDate, Gender.ANY)) + assertThatThrownBy(() -> peselNumber.get(faker, givenBirthDate, Gender.ANY)) .isInstanceOf(IllegalArgumentException.class); } @@ -94,7 +89,7 @@ void testNullGender() { /* * When */ - final String gotPesel = peselNumber.get(givenBirthDate, null); + final String gotPesel = peselNumber.get(faker, givenBirthDate, null); /* * Then diff --git a/src/test/java/net/datafaker/idnumbers/PortugueseIdNumberTest.java b/src/test/java/net/datafaker/idnumbers/PortugueseIdNumberTest.java new file mode 100644 index 000000000..d883af0b7 --- /dev/null +++ b/src/test/java/net/datafaker/idnumbers/PortugueseIdNumberTest.java @@ -0,0 +1,23 @@ +package net.datafaker.idnumbers; + +import net.datafaker.AbstractFakerTest; +import net.datafaker.Faker; +import org.junit.jupiter.api.RepeatedTest; + +import java.util.Locale; + +import static org.assertj.core.api.Assertions.assertThat; + +class PortugueseIdNumberTest extends AbstractFakerTest { + private final Faker ptFaker = new Faker(new Locale("pt", "PT")); + + @RepeatedTest(100) + void testInvalid() { + assertThat(ptFaker.idNumber().invalid()).matches("[0-9]{9,10}"); + } + + @RepeatedTest(100) + void testValid() { + assertThat(ptFaker.idNumber().valid()).matches("[0-9]{9,10}"); + } +} diff --git a/src/test/java/net/datafaker/idnumbers/PtNifIdNumberTest.java b/src/test/java/net/datafaker/idnumbers/PtNifIdNumberTest.java deleted file mode 100644 index 66e9dec77..000000000 --- a/src/test/java/net/datafaker/idnumbers/PtNifIdNumberTest.java +++ /dev/null @@ -1,38 +0,0 @@ -package net.datafaker.idnumbers; - -import net.datafaker.AbstractFakerTest; -import net.datafaker.providers.base.BaseFaker; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.RepeatedTest; - -import java.util.Locale; - -import static org.assertj.core.api.Assertions.assertThat; - -class PtNifIdNumberTest extends AbstractFakerTest { - - private BaseFaker ptFaker; - - @BeforeEach - protected void before() { - ptFaker = new BaseFaker(new Locale("pt")); - } - - @RepeatedTest(100) - void testInValid() { - PtNifIdNumber idNumber = new PtNifIdNumber(); - assertThat(idNumber.getInvalid(ptFaker)).matches("[0-9]{9,10}"); - } - - @RepeatedTest(100) - void testValid() { - PtNifIdNumber idNumber = new PtNifIdNumber(); - assertThat(idNumber.getValid(ptFaker)).matches("[0-9]{9,10}"); - } - - @RepeatedTest(100) - void testValidWithFaker() { - assertThat(ptFaker.idNumber().valid()).matches("[0-9]{9,10}"); - } - -} diff --git a/src/test/java/net/datafaker/idnumbers/EnZAIdNumberTest.java b/src/test/java/net/datafaker/idnumbers/SouthAfricanIdNumberTest.java similarity index 56% rename from src/test/java/net/datafaker/idnumbers/EnZAIdNumberTest.java rename to src/test/java/net/datafaker/idnumbers/SouthAfricanIdNumberTest.java index 68658c1d1..6ddcbad8f 100644 --- a/src/test/java/net/datafaker/idnumbers/EnZAIdNumberTest.java +++ b/src/test/java/net/datafaker/idnumbers/SouthAfricanIdNumberTest.java @@ -7,32 +7,30 @@ import java.util.Locale; +import static net.datafaker.idnumbers.SouthAfricanIdNumber.isValidEnZASsn; import static org.assertj.core.api.Assertions.assertThat; /* * This file was used to test the issue #566 by SE_CHWJ */ -class EnZAIdNumberTest { +class SouthAfricanIdNumberTest { @Test void testExistSsn() { - EnZAIdNumber idNumber = new EnZAIdNumber(); + assertThat(isValidEnZASsn("9202204720085")).isFalse(); + assertThat(isValidEnZASsn("foo2204720082")).isFalse(); + assertThat(isValidEnZASsn("9232454720082")).isFalse(); - assertThat(idNumber.isValidEnZASsn("9202204720085")).isFalse(); - assertThat(idNumber.isValidEnZASsn("foo2204720082")).isFalse(); - assertThat(idNumber.isValidEnZASsn("9232454720082")).isFalse(); - - assertThat(idNumber.isValidEnZASsn("9202204720083")).isTrue(); - assertThat(idNumber.isValidEnZASsn("8801235111088")).isTrue(); + assertThat(isValidEnZASsn("9202204720083")).isTrue(); + assertThat(isValidEnZASsn("8801235111088")).isTrue(); } @RepeatedTest(100) void testFakerSsn() { - EnZAIdNumber enZAIdNumber = new EnZAIdNumber(); final BaseFaker f = new BaseFaker(new Locale("en", "ZA")); final IdNumber idNumber = f.idNumber(); - assertThat(enZAIdNumber.isValidEnZASsn(idNumber.valid())).isTrue(); - assertThat(enZAIdNumber.isValidEnZASsn(idNumber.invalid())).isFalse(); + assertThat(isValidEnZASsn(idNumber.valid())).isTrue(); + assertThat(isValidEnZASsn(idNumber.invalid())).isFalse(); } @RepeatedTest(100) diff --git a/src/test/java/net/datafaker/idnumbers/KoKrIdNumberTest.java b/src/test/java/net/datafaker/idnumbers/SouthKoreanIdNumberTest.java similarity index 81% rename from src/test/java/net/datafaker/idnumbers/KoKrIdNumberTest.java rename to src/test/java/net/datafaker/idnumbers/SouthKoreanIdNumberTest.java index 941970799..23ba771ed 100644 --- a/src/test/java/net/datafaker/idnumbers/KoKrIdNumberTest.java +++ b/src/test/java/net/datafaker/idnumbers/SouthKoreanIdNumberTest.java @@ -1,24 +1,25 @@ package net.datafaker.idnumbers; -import net.datafaker.providers.base.BaseFaker; +import net.datafaker.Faker; import org.junit.jupiter.api.RepeatedTest; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; +import java.util.Locale; import java.util.regex.Pattern; import static org.assertj.core.api.Assertions.assertThat; -class KoKrIdNumberTest { +class SouthKoreanIdNumberTest { private static final DateTimeFormatter YYMMDD = DateTimeFormatter.ofPattern("yyMMdd"); private static final Pattern D_6_D_7 = Pattern.compile("\\d{6}-\\d{7}"); @RepeatedTest(100) void testValidKoKrRrn() { - final BaseFaker f = new BaseFaker(); - String rrn = f.idNumber().validKoKrRrn(); + Faker f = new Faker(new Locale("en", "KR")); + String rrn = f.idNumber().valid(); // Check if contains other character than digit assertThat(rrn).matches(D_6_D_7); @@ -29,5 +30,5 @@ void testValidKoKrRrn() { assertThat(e).isNull(); } } - + } diff --git a/src/test/java/net/datafaker/idnumbers/SwedishIdNumberTest.java b/src/test/java/net/datafaker/idnumbers/SwedishIdNumberTest.java index fb2f063e6..4224652e4 100644 --- a/src/test/java/net/datafaker/idnumbers/SwedishIdNumberTest.java +++ b/src/test/java/net/datafaker/idnumbers/SwedishIdNumberTest.java @@ -7,20 +7,18 @@ class SwedishIdNumberTest { @Test - void valid() { - SvSEIdNumber idNumber = new SvSEIdNumber(); - assertThat(idNumber.isValidSwedishSsn("670919-9530")).isTrue(); - assertThat(idNumber.isValidSwedishSsn("811228-9874")).isTrue(); + void validSwedishSsn() { + assertThat(SwedenIdNumber.isValidSwedishSsn("670919-9530")).isTrue(); + assertThat(SwedenIdNumber.isValidSwedishSsn("811228-9874")).isTrue(); } @Test - void invalid() { - SvSEIdNumber idNumber = new SvSEIdNumber(); - assertThat(idNumber.isValidSwedishSsn("8112289873")).isFalse(); - assertThat(idNumber.isValidSwedishSsn("foo228-9873")).isFalse(); - assertThat(idNumber.isValidSwedishSsn("811228-9873")).isFalse(); - assertThat(idNumber.isValidSwedishSsn("811228-9875")).isFalse(); - assertThat(idNumber.isValidSwedishSsn("811200-9874")).isFalse(); - assertThat(idNumber.isValidSwedishSsn("810028-9874")).isFalse(); + void invalidSwedishSsn() { + assertThat(SwedenIdNumber.isValidSwedishSsn("8112289873")).isFalse(); + assertThat(SwedenIdNumber.isValidSwedishSsn("foo228-9873")).isFalse(); + assertThat(SwedenIdNumber.isValidSwedishSsn("811228-9873")).isFalse(); + assertThat(SwedenIdNumber.isValidSwedishSsn("811228-9875")).isFalse(); + assertThat(SwedenIdNumber.isValidSwedishSsn("811200-9874")).isFalse(); + assertThat(SwedenIdNumber.isValidSwedishSsn("810028-9874")).isFalse(); } } diff --git a/src/test/java/net/datafaker/providers/base/BaseFakerTest.java b/src/test/java/net/datafaker/providers/base/BaseFakerTest.java index f347a56f6..f00f33238 100644 --- a/src/test/java/net/datafaker/providers/base/BaseFakerTest.java +++ b/src/test/java/net/datafaker/providers/base/BaseFakerTest.java @@ -38,7 +38,6 @@ public class BaseFakerTest { protected final T faker = getFaker(); @BeforeEach - @SuppressWarnings("unchecked") protected void before() { try (AutoCloseable ignored = MockitoAnnotations.openMocks(this)) { @@ -58,10 +57,6 @@ protected T getFaker() { return (T) new BaseFaker(); } - protected AbstractProvider getProvider() { - return null; - } - @SuppressWarnings("unchecked") protected List getBaseList(String key) { return (List) faker.fakeValuesService().fetchObject(key, faker.getContext()); diff --git a/src/test/java/net/datafaker/providers/base/IdNumberTest.java b/src/test/java/net/datafaker/providers/base/IdNumberTest.java index a05e2ff12..3ac26902a 100644 --- a/src/test/java/net/datafaker/providers/base/IdNumberTest.java +++ b/src/test/java/net/datafaker/providers/base/IdNumberTest.java @@ -1,8 +1,8 @@ package net.datafaker.providers.base; import net.datafaker.Faker; -import net.datafaker.idnumbers.EnZAIdNumber; -import net.datafaker.idnumbers.SvSEIdNumber; +import net.datafaker.idnumbers.SouthAfricanIdNumber; +import net.datafaker.idnumbers.SwedenIdNumber; import org.assertj.core.api.AbstractStringAssert; import org.junit.jupiter.api.RepeatedTest; import org.junit.jupiter.api.Test; @@ -17,15 +17,17 @@ class IdNumberTest extends BaseFakerTest { - private static final IdNumber SV_SE_ID_NUMBER = new BaseFaker(new Locale("sv_SE")).idNumber(); - private static final Pattern SV_SE_ID_NUMBER_PATTERN = Pattern.compile("\\d{6}[-+]\\d{4}"); - private static final IdNumber EN_ZA_OD_NUMBER= new BaseFaker(new Locale("en_ZA")).idNumber(); - private static final Pattern EN_ZA_ID_NUMBER_PATTERN = Pattern.compile("[0-9]{10}([01])8[0-9]"); + private static final Faker SWEDISH = new Faker(new Locale("sv", "SE")); + private static final Faker SOUTH_AFRICA = new Faker(new Locale("en", "ZA")); + private static final Faker US = new Faker(new Locale("en", "US")); private static final Faker ESTONIAN = new Faker(new Locale("et", "EE")); private static final Faker ALBANIAN = new Faker(new Locale("sq", "AL")); private static final Faker BULGARIAN = new Faker(new Locale("bg", "BG")); private static final Faker MACEDONIAN = new Faker(new Locale("mk", "MK")); + private static final Pattern SWEDISH_ID_NUMBER_PATTERN = Pattern.compile("\\d{6}[-+]\\d{4}"); + private static final Pattern SOUTH_AFRICA_ID_NUMBER_PATTERN = Pattern.compile("[0-9]{10}([01])8[0-9]"); + @Test void testValid() { assertThat(faker.idNumber().valid()).matches("[0-8]\\d{2}-\\d{2}-\\d{4}"); @@ -39,30 +41,41 @@ void testInvalid() { @RepeatedTest(100) void testSsnValid() { assertThat(faker.idNumber().ssnValid()).matches("[0-8]\\d{2}-\\d{2}-\\d{4}"); + assertThat(US.idNumber().valid()).matches("[0-8]\\d{2}-\\d{2}-\\d{4}"); + } + + @RepeatedTest(100) + void testSsnInvalid() { + String invalidSsn = US.idNumber().invalid(); + if (!invalidSsn.startsWith("9")) { + assertThat(invalidSsn).matches("[0-8]\\d{2}-\\d{2}-\\d{4}"); + } } @RepeatedTest(100) void testValidSwedishSsn() { - final String actual = SV_SE_ID_NUMBER.validSvSeSsn(); - assertThat(actual).matches(SV_SE_ID_NUMBER_PATTERN); - assertThat(SvSEIdNumber.isValidSwedishSsn(actual)).isTrue(); + String actual = SWEDISH.idNumber().valid(); + assertThat(actual).matches(SWEDISH_ID_NUMBER_PATTERN); + assertThat(SwedenIdNumber.isValidSwedishSsn(actual)).isTrue(); } @RepeatedTest(100) void testInvalidSwedishSsn() { - assertThat(SV_SE_ID_NUMBER.invalidSvSeSsn()).matches(SV_SE_ID_NUMBER_PATTERN); + String actual = SWEDISH.idNumber().invalid(); + assertThat(actual).matches(SWEDISH_ID_NUMBER_PATTERN); + assertThat(SwedenIdNumber.isValidSwedishSsn(actual)).isFalse(); } @RepeatedTest(100) - void testValidEnZaSsn() { - String actual = EN_ZA_OD_NUMBER.validEnZaSsn(); - assertThat(actual).matches(EN_ZA_ID_NUMBER_PATTERN); - assertThat(EnZAIdNumber.isValidEnZASsn(actual)).isTrue(); + void southAfrica_valid() { + String actual = SOUTH_AFRICA.idNumber().valid(); + assertThat(actual).matches(SOUTH_AFRICA_ID_NUMBER_PATTERN); + assertThat(SouthAfricanIdNumber.isValidEnZASsn(actual)).isTrue(); } @RepeatedTest(100) - void testInvalidEnZaSsn() { - assertThat(EN_ZA_OD_NUMBER.inValidEnZaSsn()).matches(EN_ZA_ID_NUMBER_PATTERN); + void southAfrica_invalid() { + assertThat(SOUTH_AFRICA.idNumber().invalid()).matches(SOUTH_AFRICA_ID_NUMBER_PATTERN); } @RepeatedTest(100) From c712b4f9235dd8798351ca7e6e2ea59759545ea0 Mon Sep 17 00:00:00 2001 From: Andrei Solntsev Date: Wed, 29 May 2024 09:15:37 +0300 Subject: [PATCH 2/5] #1214 [refactoring] use existing method "nextElement" ... instead of introducing a new method. --- .../java/net/datafaker/idnumbers/AmericanIdNumber.java | 2 +- .../java/net/datafaker/providers/base/Options.java | 10 ---------- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/src/main/java/net/datafaker/idnumbers/AmericanIdNumber.java b/src/main/java/net/datafaker/idnumbers/AmericanIdNumber.java index 8ce65dac5..e09a26ea0 100644 --- a/src/main/java/net/datafaker/idnumbers/AmericanIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/AmericanIdNumber.java @@ -38,6 +38,6 @@ public String generateValid(BaseProviders f) { @Override public String generateInvalid(BaseProviders faker) { - return faker.regexify(faker.options().option(INVALID_SSNS)); + return faker.regexify(faker.options().nextElement(INVALID_SSNS)); } } diff --git a/src/main/java/net/datafaker/providers/base/Options.java b/src/main/java/net/datafaker/providers/base/Options.java index 128100d3a..42073e4fb 100644 --- a/src/main/java/net/datafaker/providers/base/Options.java +++ b/src/main/java/net/datafaker/providers/base/Options.java @@ -104,16 +104,6 @@ public String option(String... options) { return options[faker.random().nextInt(options.length)]; } - /** - * Returns a random String element from an varargs. - * - * @param options The varargs to take a random element from. - * @return A randomly selected element from the varargs. - */ - public T option(List options) { - return options.get(faker.random().nextInt(options.size())); - } - /** * Returns a random unique subset of elements from an varargs. * From c0f7839650a4536a4bcc999f500781fa23af6255 Mon Sep 17 00:00:00 2001 From: Andrei Solntsev Date: Wed, 29 May 2024 09:25:03 +0300 Subject: [PATCH 3/5] #1214 [refactoring] add missing @Override annotation to IdNumbers children --- src/main/java/net/datafaker/idnumbers/AlbanianIdNumber.java | 2 ++ src/main/java/net/datafaker/idnumbers/BulgarianIdNumber.java | 2 ++ src/main/java/net/datafaker/idnumbers/EstonianIdNumber.java | 2 ++ src/main/java/net/datafaker/idnumbers/MacedonianIdNumber.java | 2 ++ src/main/java/net/datafaker/idnumbers/MexicanIdNumber.java | 2 ++ src/main/java/net/datafaker/idnumbers/MoldovanIdNumber.java | 2 ++ src/main/java/net/datafaker/idnumbers/PortugueseIdNumber.java | 2 ++ 7 files changed, 14 insertions(+) diff --git a/src/main/java/net/datafaker/idnumbers/AlbanianIdNumber.java b/src/main/java/net/datafaker/idnumbers/AlbanianIdNumber.java index ad7217ca9..f2b03e37b 100644 --- a/src/main/java/net/datafaker/idnumbers/AlbanianIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/AlbanianIdNumber.java @@ -16,12 +16,14 @@ public String country() { return "AL"; } + @Override public String generateInvalid(BaseProviders faker) { String pin = generateValid(faker); int invalidMonth = faker.number().numberBetween(93, 99); return pin.substring(0, 2) + invalidMonth + pin.substring(4); } + @Override public String generateValid(BaseProviders faker) { LocalDate birthDate = faker.timeAndDate().birthday(0, 200); boolean female = faker.bool().bool(); diff --git a/src/main/java/net/datafaker/idnumbers/BulgarianIdNumber.java b/src/main/java/net/datafaker/idnumbers/BulgarianIdNumber.java index e0551406e..2280c6426 100644 --- a/src/main/java/net/datafaker/idnumbers/BulgarianIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/BulgarianIdNumber.java @@ -17,11 +17,13 @@ public String country() { return "BG"; } + @Override public String generateValid(BaseProviders faker) { String basePart = basePart(faker); return basePart + checksum(basePart); } + @Override public String generateInvalid(BaseProviders faker) { String basePart = basePart(faker); return basePart + (checksum(basePart) + 1) % 10; diff --git a/src/main/java/net/datafaker/idnumbers/EstonianIdNumber.java b/src/main/java/net/datafaker/idnumbers/EstonianIdNumber.java index eacc8d1aa..10c8fc540 100644 --- a/src/main/java/net/datafaker/idnumbers/EstonianIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/EstonianIdNumber.java @@ -23,11 +23,13 @@ public String country() { return "EE"; } + @Override public String generateInvalid(final BaseProviders faker) { String digits = basePart(faker); return digits + (checksum(digits) + 1) % 10; } + @Override public String generateValid(final BaseProviders faker) { String digits = basePart(faker); return digits + checksum(digits); diff --git a/src/main/java/net/datafaker/idnumbers/MacedonianIdNumber.java b/src/main/java/net/datafaker/idnumbers/MacedonianIdNumber.java index 160a0a5a2..2626bcdcd 100644 --- a/src/main/java/net/datafaker/idnumbers/MacedonianIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/MacedonianIdNumber.java @@ -19,11 +19,13 @@ public String country() { return "MK"; } + @Override public String generateValid(BaseProviders faker) { String basePart = basePart(faker); return basePart + checksum(basePart); } + @Override public String generateInvalid(BaseProviders faker) { String basePart = basePart(faker); return basePart + (checksum(basePart) + 1) % 10; diff --git a/src/main/java/net/datafaker/idnumbers/MexicanIdNumber.java b/src/main/java/net/datafaker/idnumbers/MexicanIdNumber.java index 8724d7d15..a8ec57ced 100644 --- a/src/main/java/net/datafaker/idnumbers/MexicanIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/MexicanIdNumber.java @@ -56,6 +56,7 @@ public String get(BaseProviders faker) { * @param faker faker * @return A valid MEX CURP. */ + @Override public String generateValid(BaseProviders faker) { final Options options = faker.options(); char[] birthDay = getBirthday(faker).toCharArray(); @@ -87,6 +88,7 @@ public String getWrong(BaseProviders faker) { * @param faker faker * @return A invalid MEX CURP. */ + @Override public String generateInvalid(BaseProviders faker) { return faker.options().option(CHA); } diff --git a/src/main/java/net/datafaker/idnumbers/MoldovanIdNumber.java b/src/main/java/net/datafaker/idnumbers/MoldovanIdNumber.java index 61a1c3423..ff6364c32 100644 --- a/src/main/java/net/datafaker/idnumbers/MoldovanIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/MoldovanIdNumber.java @@ -21,11 +21,13 @@ public String country() { return "MD"; } + @Override public String generateValid(BaseProviders faker) { String basePart = basePart(faker); return basePart + checksum(basePart); } + @Override public String generateInvalid(BaseProviders faker) { String basePart = basePart(faker); return basePart + (checksum(basePart) + 1) % 10; diff --git a/src/main/java/net/datafaker/idnumbers/PortugueseIdNumber.java b/src/main/java/net/datafaker/idnumbers/PortugueseIdNumber.java index 102ab9df9..dab7335c3 100644 --- a/src/main/java/net/datafaker/idnumbers/PortugueseIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/PortugueseIdNumber.java @@ -21,6 +21,7 @@ public String country() { private static final String[] VALID_FIRST_DOUBLE_DIGITS = {"45", "70", "71", "72", "74", "75", "77", "79", "90", "91", "98", "99"}; + @Override public String generateInvalid(final BaseProviders faker) { String digits = faker.number().digits(8); int digitSum = calculateDigitSum(digits); @@ -29,6 +30,7 @@ public String generateInvalid(final BaseProviders faker) { return digits + (digitSum + 5); } + @Override public String generateValid(final BaseProviders faker) { String digits; if (faker.random().nextBoolean()) { From 8ea938f51f909ba0c0afb40e519f9a3f4278673f Mon Sep 17 00:00:00 2001 From: Andrei Solntsev Date: Wed, 29 May 2024 09:28:04 +0300 Subject: [PATCH 4/5] #1214 [refactoring] rename method "country" to "countryCode" --- src/main/java/net/datafaker/idnumbers/AlbanianIdNumber.java | 2 +- src/main/java/net/datafaker/idnumbers/AmericanIdNumber.java | 2 +- .../java/net/datafaker/idnumbers/BulgarianIdNumber.java | 2 +- src/main/java/net/datafaker/idnumbers/ChineseIdNumber.java | 2 +- src/main/java/net/datafaker/idnumbers/EstonianIdNumber.java | 2 +- src/main/java/net/datafaker/idnumbers/GeorgianIdNumber.java | 2 +- src/main/java/net/datafaker/idnumbers/IdNumbers.java | 6 ++++-- .../java/net/datafaker/idnumbers/MacedonianIdNumber.java | 2 +- src/main/java/net/datafaker/idnumbers/MexicanIdNumber.java | 2 +- src/main/java/net/datafaker/idnumbers/MoldovanIdNumber.java | 2 +- src/main/java/net/datafaker/idnumbers/PolishIdNumber.java | 2 +- .../java/net/datafaker/idnumbers/PortugueseIdNumber.java | 2 +- .../java/net/datafaker/idnumbers/SingaporeIdNumber.java | 2 +- .../java/net/datafaker/idnumbers/SouthAfricanIdNumber.java | 2 +- .../java/net/datafaker/idnumbers/SouthKoreanIdNumber.java | 2 +- src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java | 2 +- src/main/java/net/datafaker/providers/base/IdNumber.java | 2 +- 17 files changed, 20 insertions(+), 18 deletions(-) diff --git a/src/main/java/net/datafaker/idnumbers/AlbanianIdNumber.java b/src/main/java/net/datafaker/idnumbers/AlbanianIdNumber.java index f2b03e37b..6273ccaaa 100644 --- a/src/main/java/net/datafaker/idnumbers/AlbanianIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/AlbanianIdNumber.java @@ -12,7 +12,7 @@ public class AlbanianIdNumber implements IdNumbers { private static final String CHECKSUM_CHAR = "WABCDEFGHIJKLMNOPQRSTUV"; @Override - public String country() { + public String countryCode() { return "AL"; } diff --git a/src/main/java/net/datafaker/idnumbers/AmericanIdNumber.java b/src/main/java/net/datafaker/idnumbers/AmericanIdNumber.java index e09a26ea0..f39b65ca8 100644 --- a/src/main/java/net/datafaker/idnumbers/AmericanIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/AmericanIdNumber.java @@ -7,7 +7,7 @@ public class AmericanIdNumber implements IdNumbers { @Override - public String country() { + public String countryCode() { return "US"; } diff --git a/src/main/java/net/datafaker/idnumbers/BulgarianIdNumber.java b/src/main/java/net/datafaker/idnumbers/BulgarianIdNumber.java index 2280c6426..1f48c23ce 100644 --- a/src/main/java/net/datafaker/idnumbers/BulgarianIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/BulgarianIdNumber.java @@ -13,7 +13,7 @@ public class BulgarianIdNumber implements IdNumbers { private static final int[] ODD_DIGITS = {1, 3, 5, 7, 9}; @Override - public String country() { + public String countryCode() { return "BG"; } diff --git a/src/main/java/net/datafaker/idnumbers/ChineseIdNumber.java b/src/main/java/net/datafaker/idnumbers/ChineseIdNumber.java index dfc406ca3..825402741 100644 --- a/src/main/java/net/datafaker/idnumbers/ChineseIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/ChineseIdNumber.java @@ -11,7 +11,7 @@ */ public class ChineseIdNumber implements IdNumbers { @Override - public String country() { + public String countryCode() { return "CN"; } diff --git a/src/main/java/net/datafaker/idnumbers/EstonianIdNumber.java b/src/main/java/net/datafaker/idnumbers/EstonianIdNumber.java index 10c8fc540..e99b5d279 100644 --- a/src/main/java/net/datafaker/idnumbers/EstonianIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/EstonianIdNumber.java @@ -19,7 +19,7 @@ public class EstonianIdNumber implements IdNumbers { private static final int[] CHECKSUM_COEFFICIENTS2 = {3, 4, 5, 6, 7, 8, 9, 1, 2, 3}; @Override - public String country() { + public String countryCode() { return "EE"; } diff --git a/src/main/java/net/datafaker/idnumbers/GeorgianIdNumber.java b/src/main/java/net/datafaker/idnumbers/GeorgianIdNumber.java index 4ba5556ac..b64c83257 100644 --- a/src/main/java/net/datafaker/idnumbers/GeorgianIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/GeorgianIdNumber.java @@ -7,7 +7,7 @@ */ public class GeorgianIdNumber implements IdNumbers { @Override - public String country() { + public String countryCode() { return "GE"; } diff --git a/src/main/java/net/datafaker/idnumbers/IdNumbers.java b/src/main/java/net/datafaker/idnumbers/IdNumbers.java index aeca33c73..09afdaa61 100644 --- a/src/main/java/net/datafaker/idnumbers/IdNumbers.java +++ b/src/main/java/net/datafaker/idnumbers/IdNumbers.java @@ -8,9 +8,11 @@ public interface IdNumbers { DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyMMdd"); /** - * @return ISO-2 code of the country ("US" for America, "EE" for Estonia etc.) + * ISO-2 code of the country this generator provides ID numbers for + * + * @return e.g. "US" for America, "EE" for Estonia, "MD" for Moldova etc. */ - String country(); + String countryCode(); /** * Generates a valid ID number for given country (a.k.a. "SSN", "Personal code" etc.) diff --git a/src/main/java/net/datafaker/idnumbers/MacedonianIdNumber.java b/src/main/java/net/datafaker/idnumbers/MacedonianIdNumber.java index 2626bcdcd..f1446f029 100644 --- a/src/main/java/net/datafaker/idnumbers/MacedonianIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/MacedonianIdNumber.java @@ -15,7 +15,7 @@ public class MacedonianIdNumber implements IdNumbers { private static final List REGIONS = List.of("41", "42", "43", "44", "45", "46", "47", "48", "49"); @Override - public String country() { + public String countryCode() { return "MK"; } diff --git a/src/main/java/net/datafaker/idnumbers/MexicanIdNumber.java b/src/main/java/net/datafaker/idnumbers/MexicanIdNumber.java index a8ec57ced..0d7d1c0b4 100644 --- a/src/main/java/net/datafaker/idnumbers/MexicanIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/MexicanIdNumber.java @@ -12,7 +12,7 @@ public class MexicanIdNumber implements IdNumbers { @Override - public String country() { + public String countryCode() { return "MX"; } diff --git a/src/main/java/net/datafaker/idnumbers/MoldovanIdNumber.java b/src/main/java/net/datafaker/idnumbers/MoldovanIdNumber.java index ff6364c32..4cf496ad2 100644 --- a/src/main/java/net/datafaker/idnumbers/MoldovanIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/MoldovanIdNumber.java @@ -17,7 +17,7 @@ public class MoldovanIdNumber implements IdNumbers { private static final int[] CHECKSUM_MASK = new int[]{7, 3, 1, 7, 3, 1, 7, 3, 1, 7, 3, 1}; @Override - public String country() { + public String countryCode() { return "MD"; } diff --git a/src/main/java/net/datafaker/idnumbers/PolishIdNumber.java b/src/main/java/net/datafaker/idnumbers/PolishIdNumber.java index a3bf5790d..65a6cbe3e 100644 --- a/src/main/java/net/datafaker/idnumbers/PolishIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/PolishIdNumber.java @@ -15,7 +15,7 @@ public class PolishIdNumber implements IdNumbers { public static final int PESEL_LENGTH = 11; @Override - public String country() { + public String countryCode() { return "PL"; } diff --git a/src/main/java/net/datafaker/idnumbers/PortugueseIdNumber.java b/src/main/java/net/datafaker/idnumbers/PortugueseIdNumber.java index dab7335c3..360e49218 100644 --- a/src/main/java/net/datafaker/idnumbers/PortugueseIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/PortugueseIdNumber.java @@ -13,7 +13,7 @@ */ public class PortugueseIdNumber implements IdNumbers { @Override - public String country() { + public String countryCode() { return "PT"; } diff --git a/src/main/java/net/datafaker/idnumbers/SingaporeIdNumber.java b/src/main/java/net/datafaker/idnumbers/SingaporeIdNumber.java index ba2749b13..eeeeea9c0 100644 --- a/src/main/java/net/datafaker/idnumbers/SingaporeIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/SingaporeIdNumber.java @@ -12,7 +12,7 @@ */ public class SingaporeIdNumber implements IdNumbers { @Override - public String country() { + public String countryCode() { return "SG"; } diff --git a/src/main/java/net/datafaker/idnumbers/SouthAfricanIdNumber.java b/src/main/java/net/datafaker/idnumbers/SouthAfricanIdNumber.java index 8a849d154..7d4196d8a 100644 --- a/src/main/java/net/datafaker/idnumbers/SouthAfricanIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/SouthAfricanIdNumber.java @@ -13,7 +13,7 @@ public class SouthAfricanIdNumber implements IdNumbers { @Override - public String country() { + public String countryCode() { return "ZA"; } diff --git a/src/main/java/net/datafaker/idnumbers/SouthKoreanIdNumber.java b/src/main/java/net/datafaker/idnumbers/SouthKoreanIdNumber.java index 2f5b1e2b3..668807e3b 100644 --- a/src/main/java/net/datafaker/idnumbers/SouthKoreanIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/SouthKoreanIdNumber.java @@ -13,7 +13,7 @@ */ public class SouthKoreanIdNumber implements IdNumbers { @Override - public String country() { + public String countryCode() { return "KR"; } diff --git a/src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java b/src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java index 1d0567af4..62388f0f2 100644 --- a/src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java @@ -14,7 +14,7 @@ */ public class SwedenIdNumber implements IdNumbers { @Override - public String country() { + public String countryCode() { return "SE"; } diff --git a/src/main/java/net/datafaker/providers/base/IdNumber.java b/src/main/java/net/datafaker/providers/base/IdNumber.java index dd6808238..78f3524a9 100644 --- a/src/main/java/net/datafaker/providers/base/IdNumber.java +++ b/src/main/java/net/datafaker/providers/base/IdNumber.java @@ -32,7 +32,7 @@ protected IdNumber(BaseProviders faker) { super(faker); List idNumbers = loadGenerators(IdNumbers.class); for (IdNumbers idNumber : idNumbers) { - countryProviders.put(idNumber.country(), idNumber); + countryProviders.put(idNumber.countryCode(), idNumber); } } From fff9de6aae0a1b4bac273b3bd538818a3df3dd5f Mon Sep 17 00:00:00 2001 From: Andrei Solntsev Date: Wed, 29 May 2024 09:29:34 +0300 Subject: [PATCH 5/5] #1214 [refactoring] rename "IdNumbers" to "IdNumberGenerator" --- .../datafaker/idnumbers/AlbanianIdNumber.java | 2 +- .../datafaker/idnumbers/AmericanIdNumber.java | 2 +- .../datafaker/idnumbers/BulgarianIdNumber.java | 2 +- .../net/datafaker/idnumbers/ChineseIdNumber.java | 2 +- .../datafaker/idnumbers/EstonianIdNumber.java | 2 +- .../datafaker/idnumbers/GeorgianIdNumber.java | 2 +- .../{IdNumbers.java => IdNumberGenerator.java} | 2 +- .../datafaker/idnumbers/MacedonianIdNumber.java | 2 +- .../net/datafaker/idnumbers/MexicanIdNumber.java | 2 +- .../datafaker/idnumbers/MoldovanIdNumber.java | 2 +- .../net/datafaker/idnumbers/PolishIdNumber.java | 2 +- .../datafaker/idnumbers/PortugueseIdNumber.java | 2 +- .../datafaker/idnumbers/SingaporeIdNumber.java | 4 ++-- .../idnumbers/SouthAfricanIdNumber.java | 2 +- .../datafaker/idnumbers/SouthKoreanIdNumber.java | 2 +- .../net/datafaker/idnumbers/SwedenIdNumber.java | 2 +- .../net/datafaker/providers/base/IdNumber.java | 16 ++++++++-------- ...=> net.datafaker.idnumbers.IdNumberGenerator} | 0 18 files changed, 25 insertions(+), 25 deletions(-) rename src/main/java/net/datafaker/idnumbers/{IdNumbers.java => IdNumberGenerator.java} (95%) rename src/main/resources/META-INF/services/{net.datafaker.idnumbers.IdNumbers => net.datafaker.idnumbers.IdNumberGenerator} (100%) diff --git a/src/main/java/net/datafaker/idnumbers/AlbanianIdNumber.java b/src/main/java/net/datafaker/idnumbers/AlbanianIdNumber.java index 6273ccaaa..60b9d1227 100644 --- a/src/main/java/net/datafaker/idnumbers/AlbanianIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/AlbanianIdNumber.java @@ -7,7 +7,7 @@ /** * The Albanian Identity Number is a unique personal identification number of 10 characters in the format YYMMDDSSSC */ -public class AlbanianIdNumber implements IdNumbers { +public class AlbanianIdNumber implements IdNumberGenerator { private static final String FIRST_CHAR = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; private static final String CHECKSUM_CHAR = "WABCDEFGHIJKLMNOPQRSTUV"; diff --git a/src/main/java/net/datafaker/idnumbers/AmericanIdNumber.java b/src/main/java/net/datafaker/idnumbers/AmericanIdNumber.java index f39b65ca8..b6c807392 100644 --- a/src/main/java/net/datafaker/idnumbers/AmericanIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/AmericanIdNumber.java @@ -5,7 +5,7 @@ import java.util.List; import java.util.regex.Pattern; -public class AmericanIdNumber implements IdNumbers { +public class AmericanIdNumber implements IdNumberGenerator { @Override public String countryCode() { return "US"; diff --git a/src/main/java/net/datafaker/idnumbers/BulgarianIdNumber.java b/src/main/java/net/datafaker/idnumbers/BulgarianIdNumber.java index 1f48c23ce..b06e82c70 100644 --- a/src/main/java/net/datafaker/idnumbers/BulgarianIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/BulgarianIdNumber.java @@ -7,7 +7,7 @@ /** * Specification */ -public class BulgarianIdNumber implements IdNumbers { +public class BulgarianIdNumber implements IdNumberGenerator { private static final int[] CHECKSUM_WEIGHTS = {2, 4, 8, 5, 10, 9, 7, 3, 6}; private static final int[] EVEN_DIGITS = {0, 2, 4, 6, 8}; private static final int[] ODD_DIGITS = {1, 3, 5, 7, 9}; diff --git a/src/main/java/net/datafaker/idnumbers/ChineseIdNumber.java b/src/main/java/net/datafaker/idnumbers/ChineseIdNumber.java index 825402741..5e56ef78a 100644 --- a/src/main/java/net/datafaker/idnumbers/ChineseIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/ChineseIdNumber.java @@ -9,7 +9,7 @@ * * @author irakatz */ -public class ChineseIdNumber implements IdNumbers { +public class ChineseIdNumber implements IdNumberGenerator { @Override public String countryCode() { return "CN"; diff --git a/src/main/java/net/datafaker/idnumbers/EstonianIdNumber.java b/src/main/java/net/datafaker/idnumbers/EstonianIdNumber.java index e99b5d279..d0b7b6453 100644 --- a/src/main/java/net/datafaker/idnumbers/EstonianIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/EstonianIdNumber.java @@ -13,7 +13,7 @@ *

* and Estonian identification number */ -public class EstonianIdNumber implements IdNumbers { +public class EstonianIdNumber implements IdNumberGenerator { private static final DateTimeFormatter BIRTHDAY_FORMAT = DateTimeFormatter.ofPattern("yyMMdd"); private static final int[] CHECKSUM_COEFFICIENTS = {1, 2, 3, 4, 5, 6, 7, 8, 9, 1}; private static final int[] CHECKSUM_COEFFICIENTS2 = {3, 4, 5, 6, 7, 8, 9, 1, 2, 3}; diff --git a/src/main/java/net/datafaker/idnumbers/GeorgianIdNumber.java b/src/main/java/net/datafaker/idnumbers/GeorgianIdNumber.java index b64c83257..e15cb7ec1 100644 --- a/src/main/java/net/datafaker/idnumbers/GeorgianIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/GeorgianIdNumber.java @@ -5,7 +5,7 @@ /** * Generates ID numbers for Georgian citizens and Residents */ -public class GeorgianIdNumber implements IdNumbers { +public class GeorgianIdNumber implements IdNumberGenerator { @Override public String countryCode() { return "GE"; diff --git a/src/main/java/net/datafaker/idnumbers/IdNumbers.java b/src/main/java/net/datafaker/idnumbers/IdNumberGenerator.java similarity index 95% rename from src/main/java/net/datafaker/idnumbers/IdNumbers.java rename to src/main/java/net/datafaker/idnumbers/IdNumberGenerator.java index 09afdaa61..e1e218b3c 100644 --- a/src/main/java/net/datafaker/idnumbers/IdNumbers.java +++ b/src/main/java/net/datafaker/idnumbers/IdNumberGenerator.java @@ -4,7 +4,7 @@ import java.time.format.DateTimeFormatter; -public interface IdNumbers { +public interface IdNumberGenerator { DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyMMdd"); /** diff --git a/src/main/java/net/datafaker/idnumbers/MacedonianIdNumber.java b/src/main/java/net/datafaker/idnumbers/MacedonianIdNumber.java index f1446f029..0fde1d2d6 100644 --- a/src/main/java/net/datafaker/idnumbers/MacedonianIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/MacedonianIdNumber.java @@ -11,7 +11,7 @@ * Intro * Specification */ -public class MacedonianIdNumber implements IdNumbers { +public class MacedonianIdNumber implements IdNumberGenerator { private static final List REGIONS = List.of("41", "42", "43", "44", "45", "46", "47", "48", "49"); @Override diff --git a/src/main/java/net/datafaker/idnumbers/MexicanIdNumber.java b/src/main/java/net/datafaker/idnumbers/MexicanIdNumber.java index 0d7d1c0b4..f0f0c1960 100644 --- a/src/main/java/net/datafaker/idnumbers/MexicanIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/MexicanIdNumber.java @@ -9,7 +9,7 @@ * Implementation based on the definition at * https://en.wikipedia.org/wiki/Unique_Population_Registry_Code */ -public class MexicanIdNumber implements IdNumbers { +public class MexicanIdNumber implements IdNumberGenerator { @Override public String countryCode() { diff --git a/src/main/java/net/datafaker/idnumbers/MoldovanIdNumber.java b/src/main/java/net/datafaker/idnumbers/MoldovanIdNumber.java index 4cf496ad2..be471c20c 100644 --- a/src/main/java/net/datafaker/idnumbers/MoldovanIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/MoldovanIdNumber.java @@ -12,7 +12,7 @@ * Overview * Online generator */ -public class MoldovanIdNumber implements IdNumbers { +public class MoldovanIdNumber implements IdNumberGenerator { private static final int[] CHECKSUM_MASK = new int[]{7, 3, 1, 7, 3, 1, 7, 3, 1, 7, 3, 1}; diff --git a/src/main/java/net/datafaker/idnumbers/PolishIdNumber.java b/src/main/java/net/datafaker/idnumbers/PolishIdNumber.java index 65a6cbe3e..f5e212bbd 100644 --- a/src/main/java/net/datafaker/idnumbers/PolishIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/PolishIdNumber.java @@ -10,7 +10,7 @@ * https://isap.sejm.gov.pl/isap.nsf/DocDetails.xsp?id=WDU20210000510 and the * description at https://en.wikipedia.org/wiki/PESEL */ -public class PolishIdNumber implements IdNumbers { +public class PolishIdNumber implements IdNumberGenerator { public static final int PESEL_LENGTH = 11; diff --git a/src/main/java/net/datafaker/idnumbers/PortugueseIdNumber.java b/src/main/java/net/datafaker/idnumbers/PortugueseIdNumber.java index 360e49218..b89ae0f62 100644 --- a/src/main/java/net/datafaker/idnumbers/PortugueseIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/PortugueseIdNumber.java @@ -11,7 +11,7 @@ * See Número de identificação fiscal * and VAT identification number */ -public class PortugueseIdNumber implements IdNumbers { +public class PortugueseIdNumber implements IdNumberGenerator { @Override public String countryCode() { return "PT"; diff --git a/src/main/java/net/datafaker/idnumbers/SingaporeIdNumber.java b/src/main/java/net/datafaker/idnumbers/SingaporeIdNumber.java index eeeeea9c0..ba7b948ea 100644 --- a/src/main/java/net/datafaker/idnumbers/SingaporeIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/SingaporeIdNumber.java @@ -10,13 +10,13 @@ * Generate number of UIN/FIN for Singapore. * Algorithm is given from http://www.ngiam.net/NRIC/ */ -public class SingaporeIdNumber implements IdNumbers { +public class SingaporeIdNumber implements IdNumberGenerator { @Override public String countryCode() { return "SG"; } - public enum Type {SINGAPOREAN_TWENTIETH_CENTURY, FOREIGNER_TWENTIETH_CENTURY, SINGAPOREAN_TWENTY_FIRST_CENTURY, FOREIGNER_TWENTY_FIRST_CENTURY;} + public enum Type {SINGAPOREAN_TWENTIETH_CENTURY, FOREIGNER_TWENTIETH_CENTURY, SINGAPOREAN_TWENTY_FIRST_CENTURY, FOREIGNER_TWENTY_FIRST_CENTURY} private record NricType(char firstLetter, String matchLetters, int[] code, int initialValue) { private String format(int[] digits) { diff --git a/src/main/java/net/datafaker/idnumbers/SouthAfricanIdNumber.java b/src/main/java/net/datafaker/idnumbers/SouthAfricanIdNumber.java index 7d4196d8a..c67844f23 100644 --- a/src/main/java/net/datafaker/idnumbers/SouthAfricanIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/SouthAfricanIdNumber.java @@ -10,7 +10,7 @@ * Implementation based on the definition at * https://en.wikipedia.org/wiki/South_African_identity_card */ -public class SouthAfricanIdNumber implements IdNumbers { +public class SouthAfricanIdNumber implements IdNumberGenerator { @Override public String countryCode() { diff --git a/src/main/java/net/datafaker/idnumbers/SouthKoreanIdNumber.java b/src/main/java/net/datafaker/idnumbers/SouthKoreanIdNumber.java index 668807e3b..2272155e6 100644 --- a/src/main/java/net/datafaker/idnumbers/SouthKoreanIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/SouthKoreanIdNumber.java @@ -11,7 +11,7 @@ * Implementation based on the description at * Wikipedia - Resident registration number */ -public class SouthKoreanIdNumber implements IdNumbers { +public class SouthKoreanIdNumber implements IdNumberGenerator { @Override public String countryCode() { return "KR"; diff --git a/src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java b/src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java index 62388f0f2..79eb996ea 100644 --- a/src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java @@ -12,7 +12,7 @@ * and the description at * https://en.wikipedia.org/wiki/Personal_identity_number_(Sweden) */ -public class SwedenIdNumber implements IdNumbers { +public class SwedenIdNumber implements IdNumberGenerator { @Override public String countryCode() { return "SE"; diff --git a/src/main/java/net/datafaker/providers/base/IdNumber.java b/src/main/java/net/datafaker/providers/base/IdNumber.java index 78f3524a9..fd2aca4c6 100644 --- a/src/main/java/net/datafaker/providers/base/IdNumber.java +++ b/src/main/java/net/datafaker/providers/base/IdNumber.java @@ -2,7 +2,7 @@ import net.datafaker.idnumbers.AmericanIdNumber; import net.datafaker.idnumbers.MexicanIdNumber; -import net.datafaker.idnumbers.IdNumbers; +import net.datafaker.idnumbers.IdNumberGenerator; import net.datafaker.idnumbers.SouthKoreanIdNumber; import net.datafaker.idnumbers.SingaporeIdNumber; import net.datafaker.idnumbers.SingaporeIdNumber.Type; @@ -25,13 +25,13 @@ */ public class IdNumber extends AbstractProvider { - private final Map, IdNumbers> providers = new ConcurrentHashMap<>(); - private final Map countryProviders = new ConcurrentHashMap<>(); + private final Map, IdNumberGenerator> providers = new ConcurrentHashMap<>(); + private final Map countryProviders = new ConcurrentHashMap<>(); protected IdNumber(BaseProviders faker) { super(faker); - List idNumbers = loadGenerators(IdNumbers.class); - for (IdNumbers idNumber : idNumbers) { + List idNumbers = loadGenerators(IdNumberGenerator.class); + for (IdNumberGenerator idNumber : idNumbers) { countryProviders.put(idNumber.countryCode(), idNumber); } } @@ -48,7 +48,7 @@ public String invalid() { .orElseGet(() -> faker.numerify(faker.resolve("id_number.invalid"))); } - private Optional countryProvider() { + private Optional countryProvider() { String country = faker.getContext().getLocale().getCountry(); return Optional.ofNullable(countryProviders.get(country)); } @@ -236,11 +236,11 @@ public String validGeIDNumber() { } @SuppressWarnings("unchecked") - private T provider(Class clazz) { + private T provider(Class clazz) { return (T) providers.computeIfAbsent(clazz, aClass -> create(clazz)); } - private T create(Class clazz) { + private T create(Class clazz) { try { return clazz.getDeclaredConstructor().newInstance(); } catch (InstantiationException | NoSuchMethodException | InvocationTargetException | IllegalAccessException e) { diff --git a/src/main/resources/META-INF/services/net.datafaker.idnumbers.IdNumbers b/src/main/resources/META-INF/services/net.datafaker.idnumbers.IdNumberGenerator similarity index 100% rename from src/main/resources/META-INF/services/net.datafaker.idnumbers.IdNumbers rename to src/main/resources/META-INF/services/net.datafaker.idnumbers.IdNumberGenerator