View Javadoc
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