1 /*
2 * Copyright 2018-2020 the original author or authors.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 package org.bremersee.common.model;
18
19 import com.fasterxml.jackson.annotation.JsonCreator;
20 import com.fasterxml.jackson.annotation.JsonValue;
21 import java.util.Locale;
22 import java.util.regex.Pattern;
23 import org.springframework.util.StringUtils;
24
25 /**
26 * ISO 3166-1 ALPHA-2 country codes from Java Locale.
27 *
28 * @author Christian Bremer
29 */
30 public enum TwoLetterCountryCode {
31
32 /**
33 * Andorra (AD).
34 */
35 AD("AD"),
36
37 /**
38 * Vereinigte Arabische Emirate (AE).
39 */
40 AE("AE"),
41
42 /**
43 * Afghanistan (AF).
44 */
45 AF("AF"),
46
47 /**
48 * Antigua und Barbuda (AG).
49 */
50 AG("AG"),
51
52 /**
53 * Anguilla (AI).
54 */
55 AI("AI"),
56
57 /**
58 * Albanien (AL).
59 */
60 AL("AL"),
61
62 /**
63 * Armenien (AM).
64 */
65 AM("AM"),
66
67 /**
68 * Angola (AO).
69 */
70 AO("AO"),
71
72 /**
73 * Antarktis (AQ).
74 */
75 AQ("AQ"),
76
77 /**
78 * Argentinien (AR).
79 */
80 AR("AR"),
81
82 /**
83 * Amerikanisch-Samoa (AS).
84 */
85 AS("AS"),
86
87 /**
88 * Österreich (AT).
89 */
90 AT("AT"),
91
92 /**
93 * Australien (AU).
94 */
95 AU("AU"),
96
97 /**
98 * Aruba (AW).
99 */
100 AW("AW"),
101
102 /**
103 * Ålandinseln (AX).
104 */
105 AX("AX"),
106
107 /**
108 * Aserbaidschan (AZ).
109 */
110 AZ("AZ"),
111
112 /**
113 * Bosnien und Herzegowina (BA).
114 */
115 BA("BA"),
116
117 /**
118 * Barbados (BB).
119 */
120 BB("BB"),
121
122 /**
123 * Bangladesch (BD).
124 */
125 BD("BD"),
126
127 /**
128 * Belgien (BE).
129 */
130 BE("BE"),
131
132 /**
133 * Burkina Faso (BF).
134 */
135 BF("BF"),
136
137 /**
138 * Bulgarien (BG).
139 */
140 BG("BG"),
141
142 /**
143 * Bahrain (BH).
144 */
145 BH("BH"),
146
147 /**
148 * Burundi (BI).
149 */
150 BI("BI"),
151
152 /**
153 * Benin (BJ).
154 */
155 BJ("BJ"),
156
157 /**
158 * St. Barthélemy (BL).
159 */
160 BL("BL"),
161
162 /**
163 * Bermuda (BM).
164 */
165 BM("BM"),
166
167 /**
168 * Brunei Darussalam (BN).
169 */
170 BN("BN"),
171
172 /**
173 * Bolivien (BO).
174 */
175 BO("BO"),
176
177 /**
178 * Bonaire, Sint Eustatius und Saba (BQ).
179 */
180 BQ("BQ"),
181
182 /**
183 * Brasilien (BR).
184 */
185 BR("BR"),
186
187 /**
188 * Bahamas (BS).
189 */
190 BS("BS"),
191
192 /**
193 * Bhutan (BT).
194 */
195 BT("BT"),
196
197 /**
198 * Bouvetinsel (BV).
199 */
200 BV("BV"),
201
202 /**
203 * Botsuana (BW).
204 */
205 BW("BW"),
206
207 /**
208 * Belarus (BY).
209 */
210 BY("BY"),
211
212 /**
213 * Belize (BZ).
214 */
215 BZ("BZ"),
216
217 /**
218 * Kanada (CA).
219 */
220 CA("CA"),
221
222 /**
223 * Kokosinseln (CC).
224 */
225 CC("CC"),
226
227 /**
228 * Kongo-Kinshasa (CD).
229 */
230 CD("CD"),
231
232 /**
233 * Zentralafrikanische Republik (CF).
234 */
235 CF("CF"),
236
237 /**
238 * Kongo-Brazzaville (CG).
239 */
240 CG("CG"),
241
242 /**
243 * Schweiz (CH).
244 */
245 CH("CH"),
246
247 /**
248 * Côte d’Ivoire (CI).
249 */
250 CI("CI"),
251
252 /**
253 * Cookinseln (CK).
254 */
255 CK("CK"),
256
257 /**
258 * Chile (CL).
259 */
260 CL("CL"),
261
262 /**
263 * Kamerun (CM).
264 */
265 CM("CM"),
266
267 /**
268 * China (CN).
269 */
270 CN("CN"),
271
272 /**
273 * Kolumbien (CO).
274 */
275 CO("CO"),
276
277 /**
278 * Costa Rica (CR).
279 */
280 CR("CR"),
281
282 /**
283 * Serbia and Montenegro (CS).
284 */
285 CS("CS"),
286
287 /**
288 * Kuba (CU).
289 */
290 CU("CU"),
291
292 /**
293 * Cabo Verde (CV).
294 */
295 CV("CV"),
296
297 /**
298 * Curaçao (CW).
299 */
300 CW("CW"),
301
302 /**
303 * Weihnachtsinsel (CX).
304 */
305 CX("CX"),
306
307 /**
308 * Zypern (CY).
309 */
310 CY("CY"),
311
312 /**
313 * Tschechien (CZ).
314 */
315 CZ("CZ"),
316
317 /**
318 * Deutschland (DE).
319 */
320 DE("DE"),
321
322 /**
323 * Diego Garcia (DG).
324 */
325 DG("DG"),
326
327 /**
328 * Dschibuti (DJ).
329 */
330 DJ("DJ"),
331
332 /**
333 * Dänemark (DK).
334 */
335 DK("DK"),
336
337 /**
338 * Dominica (DM).
339 */
340 DM("DM"),
341
342 /**
343 * Dominikanische Republik (DO).
344 */
345 DO("DO"),
346
347 /**
348 * Algerien (DZ).
349 */
350 DZ("DZ"),
351
352 /**
353 * Ceuta & Melilla (EA).
354 */
355 EA("EA"),
356
357 /**
358 * Ecuador (EC).
359 */
360 EC("EC"),
361
362 /**
363 * Estland (EE).
364 */
365 EE("EE"),
366
367 /**
368 * Ägypten (EG).
369 */
370 EG("EG"),
371
372 /**
373 * Westsahara (EH).
374 */
375 EH("EH"),
376
377 /**
378 * Eritrea (ER).
379 */
380 ER("ER"),
381
382 /**
383 * Spanien (ES).
384 */
385 ES("ES"),
386
387 /**
388 * Äthiopien (ET).
389 */
390 ET("ET"),
391
392 /**
393 * Finnland (FI).
394 */
395 FI("FI"),
396
397 /**
398 * Fidschi (FJ).
399 */
400 FJ("FJ"),
401
402 /**
403 * Falklandinseln (FK).
404 */
405 FK("FK"),
406
407 /**
408 * Mikronesien (FM).
409 */
410 FM("FM"),
411
412 /**
413 * Färöer (FO).
414 */
415 FO("FO"),
416
417 /**
418 * Frankreich (FR).
419 */
420 FR("FR"),
421
422 /**
423 * Gabun (GA).
424 */
425 GA("GA"),
426
427 /**
428 * Vereinigtes Königreich (GB).
429 */
430 GB("GB"),
431
432 /**
433 * Grenada (GD).
434 */
435 GD("GD"),
436
437 /**
438 * Georgien (GE).
439 */
440 GE("GE"),
441
442 /**
443 * Französisch-Guayana (GF).
444 */
445 GF("GF"),
446
447 /**
448 * Guernsey (GG).
449 */
450 GG("GG"),
451
452 /**
453 * Ghana (GH).
454 */
455 GH("GH"),
456
457 /**
458 * Gibraltar (GI).
459 */
460 GI("GI"),
461
462 /**
463 * Grönland (GL).
464 */
465 GL("GL"),
466
467 /**
468 * Gambia (GM).
469 */
470 GM("GM"),
471
472 /**
473 * Guinea (GN).
474 */
475 GN("GN"),
476
477 /**
478 * Guadeloupe (GP).
479 */
480 GP("GP"),
481
482 /**
483 * Äquatorialguinea (GQ).
484 */
485 GQ("GQ"),
486
487 /**
488 * Griechenland (GR).
489 */
490 GR("GR"),
491
492 /**
493 * Südgeorgien und die Südlichen Sandwichinseln (GS).
494 */
495 GS("GS"),
496
497 /**
498 * Guatemala (GT).
499 */
500 GT("GT"),
501
502 /**
503 * Guam (GU).
504 */
505 GU("GU"),
506
507 /**
508 * Guinea-Bissau (GW).
509 */
510 GW("GW"),
511
512 /**
513 * Guyana (GY).
514 */
515 GY("GY"),
516
517 /**
518 * Sonderverwaltungsregion Hongkong (HK).
519 */
520 HK("HK"),
521
522 /**
523 * Heard und McDonaldinseln (HM).
524 */
525 HM("HM"),
526
527 /**
528 * Honduras (HN).
529 */
530 HN("HN"),
531
532 /**
533 * Kroatien (HR).
534 */
535 HR("HR"),
536
537 /**
538 * Haiti (HT).
539 */
540 HT("HT"),
541
542 /**
543 * Ungarn (HU).
544 */
545 HU("HU"),
546
547 /**
548 * Canary Islands (IC).
549 */
550 IC("IC"),
551
552 /**
553 * Indonesien (ID).
554 */
555 ID("ID"),
556
557 /**
558 * Irland (IE).
559 */
560 IE("IE"),
561
562 /**
563 * Israel (IL).
564 */
565 IL("IL"),
566
567 /**
568 * Isle of Man (IM).
569 */
570 IM("IM"),
571
572 /**
573 * Indien (IN).
574 */
575 IN("IN"),
576
577 /**
578 * Britisches Territorium im Indischen Ozean (IO).
579 */
580 IO("IO"),
581
582 /**
583 * Irak (IQ).
584 */
585 IQ("IQ"),
586
587 /**
588 * Iran (IR).
589 */
590 IR("IR"),
591
592 /**
593 * Island (IS).
594 */
595 IS("IS"),
596
597 /**
598 * Italien (IT).
599 */
600 IT("IT"),
601
602 /**
603 * Jersey (JE).
604 */
605 JE("JE"),
606
607 /**
608 * Jamaika (JM).
609 */
610 JM("JM"),
611
612 /**
613 * Jordanien (JO).
614 */
615 JO("JO"),
616
617 /**
618 * Japan (JP).
619 */
620 JP("JP"),
621
622 /**
623 * Kenia (KE).
624 */
625 KE("KE"),
626
627 /**
628 * Kirgisistan (KG).
629 */
630 KG("KG"),
631
632 /**
633 * Kambodscha (KH).
634 */
635 KH("KH"),
636
637 /**
638 * Kiribati (KI).
639 */
640 KI("KI"),
641
642 /**
643 * Komoren (KM).
644 */
645 KM("KM"),
646
647 /**
648 * St. Kitts und Nevis (KN).
649 */
650 KN("KN"),
651
652 /**
653 * Nordkorea (KP).
654 */
655 KP("KP"),
656
657 /**
658 * Südkorea (KR).
659 */
660 KR("KR"),
661
662 /**
663 * Kuwait (KW).
664 */
665 KW("KW"),
666
667 /**
668 * Kaimaninseln (KY).
669 */
670 KY("KY"),
671
672 /**
673 * Kasachstan (KZ).
674 */
675 KZ("KZ"),
676
677 /**
678 * Laos (LA).
679 */
680 LA("LA"),
681
682 /**
683 * Libanon (LB).
684 */
685 LB("LB"),
686
687 /**
688 * St. Lucia (LC).
689 */
690 LC("LC"),
691
692 /**
693 * Liechtenstein (LI).
694 */
695 LI("LI"),
696
697 /**
698 * Sri Lanka (LK).
699 */
700 LK("LK"),
701
702 /**
703 * Liberia (LR).
704 */
705 LR("LR"),
706
707 /**
708 * Lesotho (LS).
709 */
710 LS("LS"),
711
712 /**
713 * Litauen (LT).
714 */
715 LT("LT"),
716
717 /**
718 * Luxemburg (LU).
719 */
720 LU("LU"),
721
722 /**
723 * Lettland (LV).
724 */
725 LV("LV"),
726
727 /**
728 * Libyen (LY).
729 */
730 LY("LY"),
731
732 /**
733 * Marokko (MA).
734 */
735 MA("MA"),
736
737 /**
738 * Monaco (MC).
739 */
740 MC("MC"),
741
742 /**
743 * Republik Moldau (MD).
744 */
745 MD("MD"),
746
747 /**
748 * Montenegro (ME).
749 */
750 ME("ME"),
751
752 /**
753 * St. Martin (MF).
754 */
755 MF("MF"),
756
757 /**
758 * Madagaskar (MG).
759 */
760 MG("MG"),
761
762 /**
763 * Marshallinseln (MH).
764 */
765 MH("MH"),
766
767 /**
768 * Nordmazedonien (MK).
769 */
770 MK("MK"),
771
772 /**
773 * Mali (ML).
774 */
775 ML("ML"),
776
777 /**
778 * Myanmar (MM).
779 */
780 MM("MM"),
781
782 /**
783 * Mongolei (MN).
784 */
785 MN("MN"),
786
787 /**
788 * Sonderverwaltungsregion Macau (MO).
789 */
790 MO("MO"),
791
792 /**
793 * Nördliche Marianen (MP).
794 */
795 MP("MP"),
796
797 /**
798 * Martinique (MQ).
799 */
800 MQ("MQ"),
801
802 /**
803 * Mauretanien (MR).
804 */
805 MR("MR"),
806
807 /**
808 * Montserrat (MS).
809 */
810 MS("MS"),
811
812 /**
813 * Malta (MT).
814 */
815 MT("MT"),
816
817 /**
818 * Mauritius (MU).
819 */
820 MU("MU"),
821
822 /**
823 * Malediven (MV).
824 */
825 MV("MV"),
826
827 /**
828 * Malawi (MW).
829 */
830 MW("MW"),
831
832 /**
833 * Mexiko (MX).
834 */
835 MX("MX"),
836
837 /**
838 * Malaysia (MY).
839 */
840 MY("MY"),
841
842 /**
843 * Mosambik (MZ).
844 */
845 MZ("MZ"),
846
847 /**
848 * Namibia (NA).
849 */
850 NA("NA"),
851
852 /**
853 * Neukaledonien (NC).
854 */
855 NC("NC"),
856
857 /**
858 * Niger (NE).
859 */
860 NE("NE"),
861
862 /**
863 * Norfolkinsel (NF).
864 */
865 NF("NF"),
866
867 /**
868 * Nigeria (NG).
869 */
870 NG("NG"),
871
872 /**
873 * Nicaragua (NI).
874 */
875 NI("NI"),
876
877 /**
878 * Niederlande (NL).
879 */
880 NL("NL"),
881
882 /**
883 * Norwegen (NO).
884 */
885 NO("NO"),
886
887 /**
888 * Nepal (NP).
889 */
890 NP("NP"),
891
892 /**
893 * Nauru (NR).
894 */
895 NR("NR"),
896
897 /**
898 * Niue (NU).
899 */
900 NU("NU"),
901
902 /**
903 * Neuseeland (NZ).
904 */
905 NZ("NZ"),
906
907 /**
908 * Oman (OM).
909 */
910 OM("OM"),
911
912 /**
913 * Panama (PA).
914 */
915 PA("PA"),
916
917 /**
918 * Peru (PE).
919 */
920 PE("PE"),
921
922 /**
923 * Französisch-Polynesien (PF).
924 */
925 PF("PF"),
926
927 /**
928 * Papua-Neuguinea (PG).
929 */
930 PG("PG"),
931
932 /**
933 * Philippinen (PH).
934 */
935 PH("PH"),
936
937 /**
938 * Pakistan (PK).
939 */
940 PK("PK"),
941
942 /**
943 * Polen (PL).
944 */
945 PL("PL"),
946
947 /**
948 * St. Pierre und Miquelon (PM).
949 */
950 PM("PM"),
951
952 /**
953 * Pitcairninseln (PN).
954 */
955 PN("PN"),
956
957 /**
958 * Puerto Rico (PR).
959 */
960 PR("PR"),
961
962 /**
963 * Palästinensische Autonomiegebiete (PS).
964 */
965 PS("PS"),
966
967 /**
968 * Portugal (PT).
969 */
970 PT("PT"),
971
972 /**
973 * Palau (PW).
974 */
975 PW("PW"),
976
977 /**
978 * Paraguay (PY).
979 */
980 PY("PY"),
981
982 /**
983 * Katar (QA).
984 */
985 QA("QA"),
986
987 /**
988 * Réunion (RE).
989 */
990 RE("RE"),
991
992 /**
993 * Rumänien (RO).
994 */
995 RO("RO"),
996
997 /**
998 * Serbien (RS).
999 */
1000 RS("RS"),
1001
1002 /**
1003 * Russland (RU).
1004 */
1005 RU("RU"),
1006
1007 /**
1008 * Ruanda (RW).
1009 */
1010 RW("RW"),
1011
1012 /**
1013 * Saudi-Arabien (SA).
1014 */
1015 SA("SA"),
1016
1017 /**
1018 * Salomonen (SB).
1019 */
1020 SB("SB"),
1021
1022 /**
1023 * Seychellen (SC).
1024 */
1025 SC("SC"),
1026
1027 /**
1028 * Sudan (SD).
1029 */
1030 SD("SD"),
1031
1032 /**
1033 * Schweden (SE).
1034 */
1035 SE("SE"),
1036
1037 /**
1038 * Singapur (SG).
1039 */
1040 SG("SG"),
1041
1042 /**
1043 * St. Helena (SH).
1044 */
1045 SH("SH"),
1046
1047 /**
1048 * Slowenien (SI).
1049 */
1050 SI("SI"),
1051
1052 /**
1053 * Spitzbergen und Jan Mayen (SJ).
1054 */
1055 SJ("SJ"),
1056
1057 /**
1058 * Slowakei (SK).
1059 */
1060 SK("SK"),
1061
1062 /**
1063 * Sierra Leone (SL).
1064 */
1065 SL("SL"),
1066
1067 /**
1068 * San Marino (SM).
1069 */
1070 SM("SM"),
1071
1072 /**
1073 * Senegal (SN).
1074 */
1075 SN("SN"),
1076
1077 /**
1078 * Somalia (SO).
1079 */
1080 SO("SO"),
1081
1082 /**
1083 * Suriname (SR).
1084 */
1085 SR("SR"),
1086
1087 /**
1088 * Südsudan (SS).
1089 */
1090 SS("SS"),
1091
1092 /**
1093 * São Tomé und Príncipe (ST).
1094 */
1095 ST("ST"),
1096
1097 /**
1098 * El Salvador (SV).
1099 */
1100 SV("SV"),
1101
1102 /**
1103 * Sint Maarten (SX).
1104 */
1105 SX("SX"),
1106
1107 /**
1108 * Syrien (SY).
1109 */
1110 SY("SY"),
1111
1112 /**
1113 * Swasiland (SZ).
1114 */
1115 SZ("SZ"),
1116
1117 /**
1118 * Turks- und Caicosinseln (TC).
1119 */
1120 TC("TC"),
1121
1122 /**
1123 * Tschad (TD).
1124 */
1125 TD("TD"),
1126
1127 /**
1128 * Französische Süd- und Antarktisgebiete (TF).
1129 */
1130 TF("TF"),
1131
1132 /**
1133 * Togo (TG).
1134 */
1135 TG("TG"),
1136
1137 /**
1138 * Thailand (TH).
1139 */
1140 TH("TH"),
1141
1142 /**
1143 * Tadschikistan (TJ).
1144 */
1145 TJ("TJ"),
1146
1147 /**
1148 * Tokelau (TK).
1149 */
1150 TK("TK"),
1151
1152 /**
1153 * Timor-Leste (TL).
1154 */
1155 TL("TL"),
1156
1157 /**
1158 * Turkmenistan (TM).
1159 */
1160 TM("TM"),
1161
1162 /**
1163 * Tunesien (TN).
1164 */
1165 TN("TN"),
1166
1167 /**
1168 * Tonga (TO).
1169 */
1170 TO("TO"),
1171
1172 /**
1173 * Türkei (TR).
1174 */
1175 TR("TR"),
1176
1177 /**
1178 * Trinidad und Tobago (TT).
1179 */
1180 TT("TT"),
1181
1182 /**
1183 * Tuvalu (TV).
1184 */
1185 TV("TV"),
1186
1187 /**
1188 * Taiwan (TW).
1189 */
1190 TW("TW"),
1191
1192 /**
1193 * Tansania (TZ).
1194 */
1195 TZ("TZ"),
1196
1197 /**
1198 * Ukraine (UA).
1199 */
1200 UA("UA"),
1201
1202 /**
1203 * Uganda (UG).
1204 */
1205 UG("UG"),
1206
1207 /**
1208 * Amerikanische Überseeinseln (UM).
1209 */
1210 UM("UM"),
1211
1212 /**
1213 * Vereinigte Staaten (US).
1214 */
1215 US("US"),
1216
1217 /**
1218 * Uruguay (UY).
1219 */
1220 UY("UY"),
1221
1222 /**
1223 * Usbekistan (UZ).
1224 */
1225 UZ("UZ"),
1226
1227 /**
1228 * Vatikanstadt (VA).
1229 */
1230 VA("VA"),
1231
1232 /**
1233 * St. Vincent und die Grenadinen (VC).
1234 */
1235 VC("VC"),
1236
1237 /**
1238 * Venezuela (VE).
1239 */
1240 VE("VE"),
1241
1242 /**
1243 * Britische Jungferninseln (VG).
1244 */
1245 VG("VG"),
1246
1247 /**
1248 * Amerikanische Jungferninseln (VI).
1249 */
1250 VI("VI"),
1251
1252 /**
1253 * Vietnam (VN).
1254 */
1255 VN("VN"),
1256
1257 /**
1258 * Vanuatu (VU).
1259 */
1260 VU("VU"),
1261
1262 /**
1263 * Wallis und Futuna (WF).
1264 */
1265 WF("WF"),
1266
1267 /**
1268 * Samoa (WS).
1269 */
1270 WS("WS"),
1271
1272 /**
1273 * Kosovo (XK).
1274 */
1275 XK("XK"),
1276
1277 /**
1278 * Jemen (YE).
1279 */
1280 YE("YE"),
1281
1282 /**
1283 * Mayotte (YT).
1284 */
1285 YT("YT"),
1286
1287 /**
1288 * Südafrika (ZA).
1289 */
1290 ZA("ZA"),
1291
1292 /**
1293 * Sambia (ZM).
1294 */
1295 ZM("ZM"),
1296
1297 /**
1298 * Simbabwe (ZW).
1299 */
1300 ZW("ZW");
1301
1302 private String value;
1303
1304 TwoLetterCountryCode(String value) {
1305 this.value = value;
1306 }
1307
1308 @Override
1309 @JsonValue
1310 public String toString() {
1311 return value;
1312 }
1313
1314 /**
1315 * To locale.
1316 *
1317 * @return the locale
1318 */
1319 public Locale toLocale() {
1320 return new Locale("", value);
1321 }
1322
1323 /**
1324 * From two letter country code.
1325 *
1326 * @param text the text
1327 * @return the two letter country code
1328 */
1329 @JsonCreator
1330 public static TwoLetterCountryCode fromValue(final String text) {
1331 return fromValue(text, null);
1332 }
1333
1334 /**
1335 * From value two letter country code.
1336 *
1337 * @param text the text
1338 * @param defaultCode the default code
1339 * @return the two letter country code
1340 */
1341 @SuppressWarnings("DuplicatedCode")
1342 public static TwoLetterCountryCode fromValue(
1343 final String text,
1344 final TwoLetterCountryCode defaultCode) {
1345
1346 String source = text != null ? text.trim().toUpperCase() : null;
1347 if (source == null || source.length() < 2) {
1348 return defaultCode;
1349 }
1350 source = source.replace("-", "_");
1351 String[] parts = source.split(Pattern.quote("_"));
1352 source = parts.length > 1 ? parts[1].trim() : parts[0].trim();
1353 if (source.length() < 2) {
1354 return defaultCode;
1355 }
1356 if (source.length() > 2) {
1357 ThreeLetterCountryCode threeLetterCountryCode = ThreeLetterCountryCode.fromValue(source);
1358 if (threeLetterCountryCode != null && threeLetterCountryCode.hasTwoLetterCountryCode()) {
1359 return threeLetterCountryCode.getTwoLetterCountryCode();
1360 } else {
1361 return defaultCode;
1362 }
1363 }
1364 for (TwoLetterCountryCode b : TwoLetterCountryCode.values()) {
1365 if (b.value.equals(source)) {
1366 return b;
1367 }
1368 }
1369 return defaultCode;
1370 }
1371
1372 /**
1373 * From locale.
1374 *
1375 * @param locale the locale
1376 * @return the two letter country code
1377 */
1378 public static TwoLetterCountryCode fromLocale(final Locale locale) {
1379 return fromLocale(locale, null);
1380 }
1381
1382 /**
1383 * From locale.
1384 *
1385 * @param locale the locale
1386 * @param defaultCode the default code
1387 * @return the two letter country code
1388 */
1389 public static TwoLetterCountryCode fromLocale(
1390 final Locale locale,
1391 final TwoLetterCountryCode defaultCode) {
1392
1393 if (locale == null || !StringUtils.hasText(locale.getCountry())) {
1394 return defaultCode;
1395 }
1396 return fromValue(locale.getCountry(), defaultCode);
1397 }
1398
1399 }
1400