1
2
3
4 package de.powerstat.validation.values.impl;
5
6
7 import de.powerstat.validation.values.Country;
8
9
10
11
12
13
14
15
16
17 @SuppressWarnings({"java:S1541", "java:S3242"})
18 public final class IBANVerifierAbstractFactory
19 {
20
21
22
23 private IBANVerifierAbstractFactory()
24 {
25 super();
26 }
27
28
29
30
31
32
33
34
35 @SuppressWarnings("java:S1479")
36 public static IBANVerifier createIBANVerifier(final Country country)
37 {
38 switch (country.stringValue())
39 {
40 case "EG":
41 return IBANVerifier.of(27, "^EG[0-9]{2}[0-9]{23}$");
42 case "AL":
43 return IBANVerifier.of(28, "^AL[0-9]{2}[0-9]{7}[0-9A-Z][0-9]{16}$");
44 case "DZ":
45 return IBANVerifier.of(24, "^DZ[0-9]{2}[0-9]{18}[0-9A-Z]{2}$");
46 case "AD":
47 return IBANVerifier.of(24, "^AD[0-9]{2}[0-9]{20}$");
48 case "AO":
49 return IBANVerifier.of(25, "^AO[0-9]{2}[0-9]{19}[0-9A-Z]{2}$");
50 case "AZ":
51 return IBANVerifier.of(28, "^AZ[0-9]{2}[0-9]{24}$");
52 case "BH":
53 return IBANVerifier.of(22, "^BH[0-9]{2}[0-9]{18}$");
54 case "BE":
55 return IBANVerifier.of(16, "^BE[0-9]{2}[0-9]{10}[0-9A-Z]{2}$");
56 case "BJ":
57 return IBANVerifier.of(28, "^BJ[0-9]{2}[0-9]{22}[0-9A-Z]{2}$");
58 case "BA":
59 return IBANVerifier.of(20, "^BA[0-9]{2}[0-9]{14}[0-9A-Z]{2}$");
60 case "BR":
61 return IBANVerifier.of(29, "^BR[0-9]{2}[0-9]{25}$");
62 case "VG":
63 return IBANVerifier.of(24, "^VG[0-9]{2}[0-9]{20}$");
64 case "BG":
65 return IBANVerifier.of(22, "^BG[0-9]{2}[0-9]{18}$");
66 case "BF":
67 return IBANVerifier.of(27, "^BF[0-9]{2}[0-9]{21}[0-9A-Z]{2}$");
68 case "BI":
69 return IBANVerifier.of(16, "^BI[0-9]{2}[0-9]{12}$");
70 case "CR":
71 return IBANVerifier.of(22, "^CR[0-9]{2}0[0-9]{17}$");
72 case "CI":
73 return IBANVerifier.of(28, "^CI[0-9]{2}[0-9]{22}[0-9A-Z]{2}$");
74 case "DK":
75 return IBANVerifier.of(18, "^DK[0-9]{2}[0-9]{13}[0-9A-Z]$");
76 case "DE":
77 return IBANVerifier.of(22, "^DE[0-9]{2}[0-9]{18}$");
78 case "DO":
79 return IBANVerifier.of(28, "^DO[0-9]{2}[0-9]{24}$");
80 case "SV":
81 return IBANVerifier.of(28, "^SV[0-9]{2}[0-9]{24}$");
82 case "EE":
83 return IBANVerifier.of(20, "^EE[0-9]{2}[0-9]{15}[0-9A-Z]$");
84 case "FO":
85 return IBANVerifier.of(18, "^FO[0-9]{2}[0-9]{13}[0-9A-Z]$");
86 case "FI":
87 return IBANVerifier.of(18, "^FI[0-9]{2}[0-9]{13}[0-9A-Z]$");
88 case "FR":
89 return IBANVerifier.of(27, "^FR[0-9]{2}[0-9]{21}[0-9A-Z]{2}$");
90 case "GA":
91 return IBANVerifier.of(27, "^GA[0-9]{2}[0-9]{21}[0-9A-Z]{2}$");
92 case "GE":
93 return IBANVerifier.of(22, "^GE[0-9]{2}[0-9]{18}$");
94 case "GI":
95 return IBANVerifier.of(23, "^GI[0-9]{2}[0-9]{19}$");
96 case "GR":
97 return IBANVerifier.of(27, "^GR[0-9]{2}[0-9]{23}$");
98 case "GL":
99 return IBANVerifier.of(18, "^GL[0-9]{2}[0-9]{13}[0-9A-Z]$");
100 case "GT":
101 return IBANVerifier.of(28, "^GT[0-9]{2}[0-9]{24}$");
102 case "IQ":
103 return IBANVerifier.of(23, "^IQ[0-9]{2}[0-9]{19}$");
104 case "IR":
105 return IBANVerifier.of(26, "^IR[0-9]{2}[0-9]{22}$");
106 case "IE":
107 return IBANVerifier.of(22, "^IE[0-9]{2}[0-9]{18}$");
108 case "IS":
109 return IBANVerifier.of(26, "^IS[0-9]{2}[0-9]{12}XXXXXXXXXX$");
110 case "IL":
111 return IBANVerifier.of(23, "^IL[0-9]{2}[0-9]{19}$");
112 case "IT":
113 return IBANVerifier.of(27, "^IT[0-9]{2}[0-9A-Z][0-9]{22}$");
114 case "JO":
115 return IBANVerifier.of(30, "^JO[0-9]{2}[0-9]{26}$");
116 case "CM":
117 return IBANVerifier.of(27, "^CM[0-9]{2}[0-9]{21}[0-9A-Z]{2}$");
118 case "CV":
119 return IBANVerifier.of(25, "^CV[0-9]{2}[0-9]{19}[0-9A-Z]{2}$");
120 case "KZ":
121 return IBANVerifier.of(20, "^KZ[0-9]{2}[0-9]{16}$");
122 case "QA":
123 return IBANVerifier.of(29, "^QA[0-9]{2}[0-9]{25}$");
124 case "CG":
125 return IBANVerifier.of(27, "^CG[0-9]{2}[0-9]{21}[0-9A-Z]{2}$");
126 case "XK":
127 return IBANVerifier.of(20, "^XK[0-9]{2}[0-9]{16}$");
128 case "HR":
129 return IBANVerifier.of(21, "^HR[0-9]{2}[0-9]{17}$");
130 case "KW":
131 return IBANVerifier.of(30, "^KW[0-9]{2}[0-9]{26}$");
132 case "LV":
133 return IBANVerifier.of(21, "^LV[0-9]{2}[0-9]{17}$");
134 case "LB":
135 return IBANVerifier.of(28, "^LB[0-9]{2}[0-9]{24}$");
136 case "LI":
137 return IBANVerifier.of(21, "^LI[0-9]{2}[0-9]{17}$");
138 case "LT":
139 return IBANVerifier.of(20, "^LT[0-9]{2}[0-9]{16}$");
140 case "LU":
141 return IBANVerifier.of(20, "^LU[0-9]{2}[0-9]{16}$");
142 case "MG":
143 return IBANVerifier.of(27, "^MG[0-9]{2}[0-9]{21}[0-9A-Z]{2}$");
144 case "ML":
145 return IBANVerifier.of(28, "^ML[0-9]{2}[0-9]{22}[0-9A-Z]{2}$");
146 case "MT":
147 return IBANVerifier.of(31, "^MT[0-9]{2}[0-9]{27}$");
148 case "MR":
149 return IBANVerifier.of(27, "^MR[0-9]{2}[0-9]{21}[0-9A-Z]{2}$");
150 case "MU":
151 return IBANVerifier.of(30, "^MU[0-9]{2}[0-9]{23}[0-9A-Z]{3}$");
152 case "MD":
153 return IBANVerifier.of(24, "^MD[0-9]{2}[0-9]{20}$");
154 case "MC":
155 return IBANVerifier.of(27, "^MC[0-9]{2}[0-9]{21}[0-9A-Z]{2}$");
156 case "ME":
157 return IBANVerifier.of(22, "^ME[0-9]{2}[0-9]{16}[0-9A-Z]{2}$");
158 case "MZ":
159 return IBANVerifier.of(25, "^MZ[0-9]{2}[0-9]{19}[0-9A-Z]{2}$");
160 case "NL":
161 return IBANVerifier.of(18, "^NL[0-9]{2}[0-9]{14}$");
162 case "MK":
163 return IBANVerifier.of(19, "^MK[0-9]{2}[0-9]{13}[0-9A-Z]{2}$");
164 case "NO":
165 return IBANVerifier.of(15, "^NO[0-9]{2}[0-9]{10}[0-9A-Z]$");
166 case "AT":
167 return IBANVerifier.of(20, "^AT[0-9]{2}[0-9]{16}$");
168 case "TL":
169 return IBANVerifier.of(23, "^TL[0-9]{2}[0-9]{17}[0-9A-Z]{2}$");
170 case "PK":
171 return IBANVerifier.of(24, "^PK[0-9]{2}[0-9]{20}$");
172 case "PS":
173 return IBANVerifier.of(29, "^PS[0-9]{2}[0-9]{25}$");
174 case "PL":
175 return IBANVerifier.of(28, "^PL[0-9]{2}[0-9]{7}[0-9A-Z][0-9]{16}$");
176 case "PT":
177 return IBANVerifier.of(25, "^PT[0-9]{2}[0-9]{19}[0-9A-Z]{2}$");
178 case "RO":
179 return IBANVerifier.of(24, "^RO[0-9]{2}[0-9]{20}$");
180 case "SM":
181 return IBANVerifier.of(27, "^SM[0-9]{2}[0-9A-Z][0-9]{22}$");
182 case "ST":
183 return IBANVerifier.of(25, "^ST[0-9]{2}[0-9]{19}[0-9A-Z]{2}$");
184 case "SA":
185 return IBANVerifier.of(24, "^SA[0-9]{2}[0-9]{20}$");
186 case "SE":
187 return IBANVerifier.of(24, "^SE[0-9]{2}[0-9]{19}[0-9A-Z]$");
188 case "CH":
189 return IBANVerifier.of(21, "^CH[0-9]{2}[0-9]{17}$");
190 case "SN":
191 return IBANVerifier.of(28, "^SN[0-9]{2}[0-9]{22}[0-9A-Z]{2}$");
192 case "RS":
193 return IBANVerifier.of(22, "^RS[0-9]{2}[0-9]{16}[0-9A-Z]{2}$");
194 case "SC":
195 return IBANVerifier.of(31, "^SC[0-9]{2}[0-9]{24}XXX$");
196 case "SK":
197 return IBANVerifier.of(24, "^SK[0-9]{2}[0-9]{20}$");
198 case "SI":
199 return IBANVerifier.of(19, "^SI[0-9]{2}[0-9]{13}[0-9A-Z]{2}$");
200 case "ES":
201 return IBANVerifier.of(24, "^ES[0-9]{2}[0-9]{8}[0-9A-Z]{2}[0-9]{10}$");
202 case "LC":
203 return IBANVerifier.of(32, "^LC[0-9]{2}[0-9]{28}$");
204 case "CZ":
205 return IBANVerifier.of(24, "^CZ[0-9]{2}[0-9]{20}$");
206 case "TN":
207 return IBANVerifier.of(24, "^TN[0-9]{2}[0-9]{18}[0-9A-Z]{2}$");
208 case "TR":
209 return IBANVerifier.of(26, "^TR[0-9]{2}[0-9]{22}$");
210 case "UA":
211 return IBANVerifier.of(29, "^UA[0-9]{2}[0-9]{25}$");
212 case "HU":
213 return IBANVerifier.of(28, "^HU[0-9]{2}[0-9]{7}[0-9A-Z][0-9]{15}[0-9A-Z]$");
214 case "VA":
215 return IBANVerifier.of(26, "^VA[0-9]{2}[0-9]{22}$");
216 case "AE":
217 return IBANVerifier.of(23, "^AE[0-9]{2}[0-9]{19}$");
218 case "GB":
219 return IBANVerifier.of(22, "^GB[0-9]{2}[0-9]{18}$");
220 case "BY":
221 return IBANVerifier.of(28, "^BY[0-9]{2}[0-9]{24}$");
222 case "CY":
223 return IBANVerifier.of(28, "^CY[0-9]{2}[0-9]{24}$");
224 case "CF":
225 return IBANVerifier.of(27, "^CF[0-9]{2}[0-9]{21}[0-9A-Z]{2}$");
226
227 default:
228 return IBANVerifier.of(34, "^[A-Z]{2}[0-9]{2}[0-9]{11,30}$");
229 }
230 }
231
232 }