All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.neovisionaries.i18n.CountryCode Maven / Gradle / Ivy

/*
 * Copyright (C) 2012-2019 Neo Visionaries Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.neovisionaries.i18n;


import java.util.ArrayList;
import java.util.Currency;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.regex.Pattern;


/**
 * ISO 3166-1 country code.
 *
 * 

* Enum names of this enum themselves are represented by * ISO 3166-1 alpha-2 * code (2-letter upper-case alphabets). There are instance methods to get the * country name ({@link #getName()}), the * ISO 3166-1 alpha-3 * code ({@link #getAlpha3()}) and the * ISO 3166-1 numeric * code ({@link #getNumeric()}). * In addition, there are static methods to get a {@code CountryCode} instance that * corresponds to a given alpha-2/alpha-3/numeric code ({@link #getByCode(String)}, * {@link #getByCode(int)}). *

* *
 * // List all the country codes.
 * for (CountryCode code : CountryCode.values())
 * {
 *     // For example, "[US] United States" is printed.
 *     System.out.format("[%s] %s\n", code, code.{@link #getName()});
 * }
 *
 * // Get a CountryCode instance by ISO 3166-1 code.
 * CountryCode code = CountryCode.{@link #getByCode(String) getByCode}("JP");
 *
 * // Print all the information. Output will be:
 * //
 * //     Country name            = Japan
 * //     ISO 3166-1 alpha-2 code = JP
 * //     ISO 3166-1 alpha-3 code = JPN
 * //     ISO 3166-1 numeric code = 392
 * //     Assignment state        = OFFICIALLY_ASSIGNED
 * //
 * System.out.println("Country name            = " + code.{@link #getName()});
 * System.out.println("ISO 3166-1 alpha-2 code = " + code.{@link #getAlpha2()});
 * System.out.println("ISO 3166-1 alpha-3 code = " + code.{@link #getAlpha3()});
 * System.out.println("ISO 3166-1 numeric code = " + code.{@link #getNumeric()});
 * System.out.println("Assignment state        = " + code.{@link #getAssignment()});
 *
 * // Convert to a Locale instance.
 * {@link Locale} locale = code.{@link #toLocale()};
 *
 * // Get a CountryCode by a Locale instance.
 * code = CountryCode.{@link #getByLocale(Locale) getByLocale}(locale);
 *
 * // Get the currency of the country.
 * {@link Currency} currency = code.{@link #getCurrency()};
 *
 * // Get a list by a regular expression for names.
 * //
 * // The list will contain:
 * //
 * //     CountryCode.AE : United Arab Emirates
 * //     CountryCode.GB : United Kingdom
 * //     CountryCode.TZ : Tanzania, United Republic of
 * //     CountryCode.UK : United Kingdom
 * //     CountryCode.UM : United States Minor Outlying Islands
 * //     CountryCode.US : United States
 * //
 * List<CountryCode> list = CountryCode.{@link #findByName(String) findByName}(".*United.*");
 *
 * 
 * // For backward compatibility for older versions than 1.16, some
 * // 4-letter ISO 3166-3 codes are accepted by getByCode(String, boolean)
 * // and its variants. To be concrete:
 * //
 * //     ANHH : CountryCode.AN
 * //     BUMM : CountryCode.BU
 * //     CSXX : CountryCode.CS
 * //     NTHH : CountryCode.NT
 * //     TPTL : CountryCode.TP
 * //     YUCS : CountryCode.YU
 * //     ZRCD : CountryCode.ZR
 * //
 * code = CountryCode.{@link #getByCode(String) getByCode}("ANHH");
 * 
* * @author Takahiko Kawasaki */ public enum CountryCode { /** * Undefined [UNDEFINED, null, -1, User assigned] * *

* This is not an official ISO 3166-1 code. *

* * @since 1.14 */ UNDEFINED("Undefined", null, -1, Assignment.USER_ASSIGNED) { @Override public Locale toLocale() { return LocaleCode.undefined.toLocale(); } }, /** * Ascension Island * [AC, ASC, -1, * Exceptionally reserved] */ AC("Ascension Island", "ASC", -1, Assignment.EXCEPTIONALLY_RESERVED), /** * Andorra * [AD, AND, 16, * Officially assigned] */ AD("Andorra", "AND", 20, Assignment.OFFICIALLY_ASSIGNED), /** * United Arab Emirates * [AE, AE, 784, * Officially assigned] */ AE("United Arab Emirates", "ARE", 784, Assignment.OFFICIALLY_ASSIGNED), /** * Afghanistan * [AF, AFG, 4, * Officially assigned] */ AF("Afghanistan", "AFG", 4, Assignment.OFFICIALLY_ASSIGNED), /** * Antigua and Barbuda * [AG, ATG, 28, * Officially assigned] */ AG("Antigua and Barbuda", "ATG", 28, Assignment.OFFICIALLY_ASSIGNED), /** * Anguilla * [AI, AIA, 660, * Officially assigned] */ AI("Anguilla", "AIA", 660, Assignment.OFFICIALLY_ASSIGNED), /** * Albania * [AL, ALB, 8, * Officially assigned] */ AL("Albania", "ALB", 8, Assignment.OFFICIALLY_ASSIGNED), /** * Armenia * [AM, ARM, 51, * Officially assigned] */ AM("Armenia", "ARM", 51, Assignment.OFFICIALLY_ASSIGNED), /** * Netherlands Antilles * [AN, ANT, 530, * Traditionally reserved] * *

* Since version 1.16, the value of alpha-3 code of this entry is {@code ANT} * (not ANHH). *

*/ AN("Netherlands Antilles", "ANT", 530, Assignment.TRANSITIONALLY_RESERVED), /** * Angola * [AO, AGO, 24, * Officially assigned] */ AO("Angola", "AGO", 24, Assignment.OFFICIALLY_ASSIGNED), /** * Antarctica * [AQ, ATA, 10, * Officially assigned] */ AQ("Antarctica", "ATA", 10, Assignment.OFFICIALLY_ASSIGNED), /** * Argentina * [AR, ARG, 32, * Officially assigned] */ AR("Argentina", "ARG", 32, Assignment.OFFICIALLY_ASSIGNED), /** * American Samoa * [AS, ASM, 16, * Officially assigned] */ AS("American Samoa", "ASM", 16, Assignment.OFFICIALLY_ASSIGNED), /** * Austria * [AT, AUT, 40, * Officially assigned] */ AT("Austria", "AUT", 40, Assignment.OFFICIALLY_ASSIGNED), /** * Australia * [AU, AUS, 36, * Officially assigned] */ AU("Australia", "AUS", 36, Assignment.OFFICIALLY_ASSIGNED), /** * Aruba * [AW, ABW, 533, * Officially assigned] */ AW("Aruba", "ABW", 533, Assignment.OFFICIALLY_ASSIGNED), /** * Åland Islands * [AX, ALA, 248, * Officially assigned] * *

* The country name was changed from "\u212Bland Islands" (up to 1.14) * to "\u00C5land Islands" (since 1.15). *

*/ AX("\u00C5land Islands", "ALA", 248, Assignment.OFFICIALLY_ASSIGNED), /** * Azerbaijan * [AZ, AZE, 31, * Officially assigned] */ AZ("Azerbaijan", "AZE", 31, Assignment.OFFICIALLY_ASSIGNED), /** * Bosnia and Herzegovina * [BA, BIH, 70, * Officially assigned] */ BA("Bosnia and Herzegovina", "BIH", 70, Assignment.OFFICIALLY_ASSIGNED), /** * Barbados * [BB, BRB, 52, * Officially assigned] */ BB("Barbados", "BRB", 52, Assignment.OFFICIALLY_ASSIGNED), /** * Bangladesh * [BD, BGD, 50, * Officially assigned] */ BD("Bangladesh", "BGD", 50, Assignment.OFFICIALLY_ASSIGNED), /** * Belgium * [BE, BEL, 56, * Officially assigned] */ BE("Belgium", "BEL", 56, Assignment.OFFICIALLY_ASSIGNED), /** * Burkina Faso * [BF, BFA, 854, * Officially assigned] */ BF("Burkina Faso", "BFA", 854, Assignment.OFFICIALLY_ASSIGNED), /** * Bulgaria * [BG, BGR, 100, * Officially assigned] */ BG("Bulgaria", "BGR", 100, Assignment.OFFICIALLY_ASSIGNED), /** * Bahrain * [BH, BHR, 48, * Officially assigned] */ BH("Bahrain", "BHR", 48, Assignment.OFFICIALLY_ASSIGNED), /** * Burundi * [BI, BDI, 108, * Officially assigned] */ BI("Burundi", "BDI", 108, Assignment.OFFICIALLY_ASSIGNED), /** * Benin * [BJ, BEN, 204, * Officially assigned] */ BJ("Benin", "BEN", 204, Assignment.OFFICIALLY_ASSIGNED), /** * Saint Barthélemy * [BL, BLM, 652, * Officially assigned] */ BL("Saint Barth\u00E9lemy", "BLM", 652, Assignment.OFFICIALLY_ASSIGNED), /** * Bermuda * [BM, BMU, 60, * Officially assigned] */ BM("Bermuda", "BMU", 60, Assignment.OFFICIALLY_ASSIGNED), /** * Brunei Darussalam * [BN, BRN, 96, * Officially assigned] */ BN("Brunei Darussalam", "BRN", 96, Assignment.OFFICIALLY_ASSIGNED), /** * Bolivia, Plurinational State of * [BO, BOL, 68, * Officially assigned] */ BO("Bolivia, Plurinational State of", "BOL", 68, Assignment.OFFICIALLY_ASSIGNED), /** * Bonaire, Sint Eustatius and Saba * [BQ, BES, 535, * Officially assigned] */ BQ("Bonaire, Sint Eustatius and Saba", "BES", 535, Assignment.OFFICIALLY_ASSIGNED), /** * Brazil * [BR, BRA, 76, * Officially assigned] */ BR("Brazil", "BRA", 76, Assignment.OFFICIALLY_ASSIGNED), /** * Bahamas * [BS, BHS, 44, * Officially assigned] */ BS("Bahamas", "BHS", 44, Assignment.OFFICIALLY_ASSIGNED), /** * Bhutan * [BT, BTN, 64, * Officially assigned] */ BT("Bhutan", "BTN", 64, Assignment.OFFICIALLY_ASSIGNED), /** * Burma * [BU, BUMM, 104, * Officially assigned] * *

* Since version 1.16, the value of alpha-3 code of this entry is {@code BUR} * (not BUMM). *

* * @see #MM */ BU("Burma", "BUR", 104, Assignment.TRANSITIONALLY_RESERVED), /** * Bouvet Island * [BV, BVT, 74, * Officially assigned] */ BV("Bouvet Island", "BVT", 74, Assignment.OFFICIALLY_ASSIGNED), /** * Botswana * [BW, BWA, 72, * Officially assigned] */ BW("Botswana", "BWA", 72, Assignment.OFFICIALLY_ASSIGNED), /** * Belarus * [BY, BLR, 112, * Officially assigned] */ BY("Belarus", "BLR", 112, Assignment.OFFICIALLY_ASSIGNED), /** * Belize * [BZ, BLZ, 84, * Officially assigned] */ BZ("Belize", "BLZ", 84, Assignment.OFFICIALLY_ASSIGNED), /** * Canada * [CA, CAN, 124, * Officially assigned] */ CA("Canada", "CAN", 124, Assignment.OFFICIALLY_ASSIGNED) { @Override public Locale toLocale() { return Locale.CANADA; } }, /** * Cocos (Keeling) Islands * [CC, CCK, 166, * Officially assigned] */ CC("Cocos (Keeling) Islands", "CCK", 166, Assignment.OFFICIALLY_ASSIGNED), /** * Congo, the Democratic Republic of the * [CD, COD, 180, * Officially assigned] * * @see #ZR */ CD("Congo, the Democratic Republic of the", "COD", 180, Assignment.OFFICIALLY_ASSIGNED), /** * Central African Republic * [CF, CAF, 140, * Officially assigned] */ CF("Central African Republic", "CAF", 140, Assignment.OFFICIALLY_ASSIGNED), /** * Congo * [CG, COG, 178, * Officially assigned] */ CG("Congo", "COG", 178, Assignment.OFFICIALLY_ASSIGNED), /** * Switzerland * [CH, CHE, 756, * Officially assigned] */ CH("Switzerland", "CHE", 756, Assignment.OFFICIALLY_ASSIGNED), /** * Côte d'Ivoire * [CI, CIV, 384, * Officially assigned] */ CI("C\u00F4te d'Ivoire", "CIV", 384, Assignment.OFFICIALLY_ASSIGNED), /** * Cook Islands * [CK, COK, 184, * Officially assigned] */ CK("Cook Islands", "COK", 184, Assignment.OFFICIALLY_ASSIGNED), /** * Chile * [CL, CHL, 152, * Officially assigned] */ CL("Chile", "CHL", 152, Assignment.OFFICIALLY_ASSIGNED), /** * Cameroon * [CM, CMR, 120, * Officially assigned] */ CM("Cameroon", "CMR", 120, Assignment.OFFICIALLY_ASSIGNED), /** * China * [CN, CHN, 156, * Officially assigned] */ CN("China", "CHN", 156, Assignment.OFFICIALLY_ASSIGNED) { @Override public Locale toLocale() { return Locale.CHINA; } }, /** * Colombia * [CO, COL, 170, * Officially assigned] */ CO("Colombia", "COL", 170, Assignment.OFFICIALLY_ASSIGNED), /** * Clipperton Island * [CP, CPT, -1, * Exceptionally reserved] */ CP("Clipperton Island", "CPT", -1, Assignment.EXCEPTIONALLY_RESERVED), /** * Costa Rica * [CR, CRI, 188, * Officially assigned] */ CR("Costa Rica", "CRI", 188, Assignment.OFFICIALLY_ASSIGNED), /** * Serbia and Montenegro * [CS, SCG, 891, * Traditionally reserved] * *

* Since version 1.16, the value of alpha-3 code of this entry is {@code SCG} * (not CSXX). *

*/ CS("Serbia and Montenegro", "SCG", 891, Assignment.TRANSITIONALLY_RESERVED), /** * Cuba * [CU, CUB, 192, * Officially assigned] */ CU("Cuba", "CUB", 192, Assignment.OFFICIALLY_ASSIGNED), /** * Cape Verde * [CV, CPV, 132, * Officially assigned] */ CV("Cape Verde", "CPV", 132, Assignment.OFFICIALLY_ASSIGNED), /** * Curaçao * [CW, CUW, 531, * Officially assigned] */ CW("Cura\u00E7ao", "CUW", 531, Assignment.OFFICIALLY_ASSIGNED), /** * Christmas Island * [CX, CXR, 162, * Officially assigned] */ CX("Christmas Island", "CXR", 162, Assignment.OFFICIALLY_ASSIGNED), /** * Cyprus * [CY, CYP, 196, * Officially assigned] */ CY("Cyprus", "CYP", 196, Assignment.OFFICIALLY_ASSIGNED), /** * Czech Republic * [CZ, CZE, 203, * Officially assigned] */ CZ("Czech Republic", "CZE", 203, Assignment.OFFICIALLY_ASSIGNED), /** * Germany * [DE, DEU, 276, * Officially assigned] */ DE("Germany", "DEU", 276, Assignment.OFFICIALLY_ASSIGNED) { @Override public Locale toLocale() { return Locale.GERMANY; } }, /** * Diego Garcia * [DG, DGA, -1, * Exceptionally reserved] */ DG("Diego Garcia", "DGA", -1, Assignment.EXCEPTIONALLY_RESERVED), /** * Djibouti * [DJ, DJI, 262, * Officially assigned] */ DJ("Djibouti", "DJI", 262, Assignment.OFFICIALLY_ASSIGNED), /** * Denmark * [DK, DNK, 208, * Officially assigned] */ DK("Denmark", "DNK", 208, Assignment.OFFICIALLY_ASSIGNED), /** * Dominica * [DM, DMA, 212, * Officially assigned] */ DM("Dominica", "DMA", 212, Assignment.OFFICIALLY_ASSIGNED), /** * Dominican Republic * [DO, DOM, 214, * Officially assigned] */ DO("Dominican Republic", "DOM", 214, Assignment.OFFICIALLY_ASSIGNED), /** * Algeria * [DZ, DZA, 12, * Officially assigned] */ DZ("Algeria", "DZA", 12, Assignment.OFFICIALLY_ASSIGNED), /** * Ceuta, * Melilla * [EA, null, -1, * Exceptionally reserved] */ EA("Ceuta, Melilla", null, -1, Assignment.EXCEPTIONALLY_RESERVED), /** * Ecuador * [EC, ECU, 218, * Officially assigned] */ EC("Ecuador", "ECU", 218, Assignment.OFFICIALLY_ASSIGNED), /** * Estonia * [EE, EST, 233, * Officially assigned] */ EE("Estonia", "EST", 233, Assignment.OFFICIALLY_ASSIGNED), /** * Egypt * [EG, EGY, 818, * Officially assigned] */ EG("Egypt", "EGY", 818, Assignment.OFFICIALLY_ASSIGNED), /** * Western Sahara * [EH, ESH, 732, * Officially assigned] */ EH("Western Sahara", "ESH", 732, Assignment.OFFICIALLY_ASSIGNED), /** * Eritrea * [ER, ERI, 232, * Officially assigned] */ ER("Eritrea", "ERI", 232, Assignment.OFFICIALLY_ASSIGNED), /** * Spain * [ES, ESP, 724, * Officially assigned] */ ES("Spain", "ESP", 724, Assignment.OFFICIALLY_ASSIGNED), /** * Ethiopia * [ET, ETH, 231, * Officially assigned] */ ET("Ethiopia", "ETH", 231, Assignment.OFFICIALLY_ASSIGNED), /** * European Union * [EU, null, -1, * Exceptionally reserved] */ EU("European Union", null, -1, Assignment.EXCEPTIONALLY_RESERVED), /** * Eurozone * [EZ, null, -1, * Exceptionally reserved] * * @since 1.23 */ EZ("Eurozone", null, -1, Assignment.EXCEPTIONALLY_RESERVED), /** * Finland * [FI, FIN, 246, * Officially assigned] * * @see #SF */ FI("Finland", "FIN", 246, Assignment.OFFICIALLY_ASSIGNED), /** * Fiji * [FJ, FJI, 242, * Officially assigned] */ FJ("Fiji", "FJI", 242, Assignment.OFFICIALLY_ASSIGNED), /** * Falkland Islands (Malvinas) * [FK, FLK, 238, * Officially assigned] */ FK("Falkland Islands (Malvinas)", "FLK", 238, Assignment.OFFICIALLY_ASSIGNED), /** * Micronesia, Federated States of * [FM, FSM, 583, * Officially assigned] */ FM("Micronesia, Federated States of", "FSM", 583, Assignment.OFFICIALLY_ASSIGNED), /** * Faroe Islands * [FO, FRO, 234, * Officially assigned] */ FO("Faroe Islands", "FRO", 234, Assignment.OFFICIALLY_ASSIGNED), /** * France * [FR, FRA, 250, * Officially assigned] */ FR("France", "FRA", 250, Assignment.OFFICIALLY_ASSIGNED) { @Override public Locale toLocale() { return Locale.FRANCE; } }, /** * France, Metropolitan * [FX, FXX, 249, * Exceptionally reserved] * *

* Since version 1.17, the numeric code of this entry is 249. *

*/ FX("France, Metropolitan", "FXX", 249, Assignment.EXCEPTIONALLY_RESERVED), /** * Gabon * [GA, GAB, 266, * Officially assigned] */ GA("Gabon", "GAB", 266, Assignment.OFFICIALLY_ASSIGNED), /** * United Kingdom * [GB, GBR, 826, * Officially assigned] * * @see #UK */ GB("United Kingdom", "GBR", 826, Assignment.OFFICIALLY_ASSIGNED) { @Override public Locale toLocale() { return Locale.UK; } }, /** * Grenada * [GD, GRD, 308, * Officially assigned] */ GD("Grenada", "GRD", 308, Assignment.OFFICIALLY_ASSIGNED), /** * Georgia * [GE, GEO, 268, * Officially assigned] */ GE("Georgia", "GEO", 268, Assignment.OFFICIALLY_ASSIGNED), /** * French Guiana * [GF, GUF, 254, * Officially assigned] */ GF("French Guiana", "GUF", 254, Assignment.OFFICIALLY_ASSIGNED), /** * Guernsey * [GG, GGY, 831, * Officially assigned] */ GG("Guernsey", "GGY", 831, Assignment.OFFICIALLY_ASSIGNED), /** * Ghana * [GH, GHA, 288, * Officially assigned] */ GH("Ghana", "GHA", 288, Assignment.OFFICIALLY_ASSIGNED), /** * Gibraltar * [GI, GIB, 292, * Officially assigned] */ GI("Gibraltar", "GIB", 292, Assignment.OFFICIALLY_ASSIGNED), /** * Greenland * [GL, GRL, 304, * Officially assigned] */ GL("Greenland", "GRL", 304, Assignment.OFFICIALLY_ASSIGNED), /** * Gambia * [GM, GMB, 270, * Officially assigned] */ GM("Gambia", "GMB", 270, Assignment.OFFICIALLY_ASSIGNED), /** * Guinea * [GN, GIN, 324, * Officially assigned] */ GN("Guinea", "GIN", 324, Assignment.OFFICIALLY_ASSIGNED), /** * Guadeloupe * [GP, GLP, 312, * Officially assigned] */ GP("Guadeloupe", "GLP", 312, Assignment.OFFICIALLY_ASSIGNED), /** * Equatorial Guinea * [GQ, GNQ, 226, * Officially assigned] */ GQ("Equatorial Guinea", "GNQ", 226, Assignment.OFFICIALLY_ASSIGNED), /** * Greece * [GR, GRC, 300, * Officially assigned] */ GR("Greece", "GRC", 300, Assignment.OFFICIALLY_ASSIGNED), /** * South Georgia and the South Sandwich Islands * [GS, SGS, 239, * Officially assigned] */ GS("South Georgia and the South Sandwich Islands", "SGS", 239, Assignment.OFFICIALLY_ASSIGNED), /** * Guatemala * [GT, GTM, 320, * Officially assigned] */ GT("Guatemala", "GTM", 320, Assignment.OFFICIALLY_ASSIGNED), /** * Guam * [GU, GUM, 316, * Officially assigned] */ GU("Guam", "GUM", 316, Assignment.OFFICIALLY_ASSIGNED), /** * Guinea-Bissau * [GW, GNB, 624, * Officially assigned] */ GW("Guinea-Bissau", "GNB", 624, Assignment.OFFICIALLY_ASSIGNED), /** * Guyana * [GY, GUY, 328, * Officially assigned] */ GY("Guyana", "GUY", 328, Assignment.OFFICIALLY_ASSIGNED), /** * Hong Kong * [HK, HKG, 344, * Officially assigned] */ HK("Hong Kong", "HKG", 344, Assignment.OFFICIALLY_ASSIGNED), /** * Heard Island and McDonald Islands * [HM, HMD, 334, * Officially assigned] */ HM("Heard Island and McDonald Islands", "HMD", 334, Assignment.OFFICIALLY_ASSIGNED), /** * Honduras * [HN, HND, 340, * Officially assigned] */ HN("Honduras", "HND", 340, Assignment.OFFICIALLY_ASSIGNED), /** * Croatia * [HR, HRV, 191, * Officially assigned] */ HR("Croatia", "HRV", 191, Assignment.OFFICIALLY_ASSIGNED), /** * Haiti * [HT, HTI, 332, * Officially assigned] */ HT("Haiti", "HTI", 332, Assignment.OFFICIALLY_ASSIGNED), /** * Hungary * [HU, HUN, 348, * Officially assigned] */ HU("Hungary", "HUN", 348, Assignment.OFFICIALLY_ASSIGNED), /** * Canary Islands * [IC, null, -1, * Exceptionally reserved] */ IC("Canary Islands", null, -1, Assignment.EXCEPTIONALLY_RESERVED), /** * Indonesia * [ID, IDN, 360, * Officially assigned] */ ID("Indonesia", "IDN", 360, Assignment.OFFICIALLY_ASSIGNED), /** * Ireland * [IE, IRL, 372, * Officially assigned] */ IE("Ireland", "IRL", 372, Assignment.OFFICIALLY_ASSIGNED), /** * Israel * [IL, ISR, 376, * Officially assigned] */ IL("Israel", "ISR", 376, Assignment.OFFICIALLY_ASSIGNED), /** * Isle of Man * [IM, IMN, 833, * Officially assigned] */ IM("Isle of Man", "IMN", 833, Assignment.OFFICIALLY_ASSIGNED), /** * India * [IN, IND, 356, * Officially assigned] */ IN("India", "IND", 356, Assignment.OFFICIALLY_ASSIGNED), /** * British Indian Ocean Territory * [IO, IOT, 86, * Officially assigned] */ IO("British Indian Ocean Territory", "IOT", 86, Assignment.OFFICIALLY_ASSIGNED), /** * Iraq * [IQ, IRQ, 368, * Officially assigned] */ IQ("Iraq", "IRQ", 368, Assignment.OFFICIALLY_ASSIGNED), /** * Iran, Islamic Republic of * [IR, IRN, 364, * Officially assigned] */ IR("Iran, Islamic Republic of", "IRN", 364, Assignment.OFFICIALLY_ASSIGNED), /** * Iceland * [IS, ISL, 352, * Officially assigned] */ IS("Iceland", "ISL", 352, Assignment.OFFICIALLY_ASSIGNED), /** * Italy * [IT, ITA, 380, * Officially assigned] */ IT("Italy", "ITA", 380, Assignment.OFFICIALLY_ASSIGNED) { @Override public Locale toLocale() { return Locale.ITALY; } }, /** * Jersey * [JE, JEY, 832, * Officially assigned] */ JE("Jersey", "JEY", 832, Assignment.OFFICIALLY_ASSIGNED), /** * Jamaica * [JM, JAM, 388, * Officially assigned] */ JM("Jamaica", "JAM", 388, Assignment.OFFICIALLY_ASSIGNED), /** * Jordan * [JO, JOR, 400, * Officially assigned] */ JO("Jordan", "JOR", 400, Assignment.OFFICIALLY_ASSIGNED), /** * Japan * [JP, JPN, 392, * Officially assigned] */ JP("Japan", "JPN", 392, Assignment.OFFICIALLY_ASSIGNED) { @Override public Locale toLocale() { return Locale.JAPAN; } }, /** * Kenya * [KE, KEN, 404, * Officially assigned] */ KE("Kenya", "KEN", 404, Assignment.OFFICIALLY_ASSIGNED), /** * Kyrgyzstan * [KG, KGZ, 417, * Officially assigned] */ KG("Kyrgyzstan", "KGZ", 417, Assignment.OFFICIALLY_ASSIGNED), /** * Cambodia * [KH, KHM, 116, * Officially assigned] */ KH("Cambodia", "KHM", 116, Assignment.OFFICIALLY_ASSIGNED), /** * Kiribati * [KI, KIR, 296, * Officially assigned] */ KI("Kiribati", "KIR", 296, Assignment.OFFICIALLY_ASSIGNED), /** * Comoros * [KM, COM, 174, * Officially assigned] */ KM("Comoros", "COM", 174, Assignment.OFFICIALLY_ASSIGNED), /** * Saint Kitts and Nevis * [KN, KNA, 659, * Officially assigned] */ KN("Saint Kitts and Nevis", "KNA", 659, Assignment.OFFICIALLY_ASSIGNED), /** * Korea, Democratic People's Republic of * [KP, PRK, 408, * Officially assigned] */ KP("Korea, Democratic People's Republic of", "PRK", 408, Assignment.OFFICIALLY_ASSIGNED), /** * Korea, Republic of * [KR, KOR, 410, * Officially assigned] */ KR("Korea, Republic of", "KOR", 410, Assignment.OFFICIALLY_ASSIGNED) { @Override public Locale toLocale() { return Locale.KOREA; } }, /** * Kuwait * [KW, KWT, 414, * Officially assigned] */ KW("Kuwait", "KWT", 414, Assignment.OFFICIALLY_ASSIGNED), /** * Cayman Islands * [KY, CYM, 136, * Officially assigned] */ KY("Cayman Islands", "CYM", 136, Assignment.OFFICIALLY_ASSIGNED), /** * Kazakhstan * [KZ, KAZ, 398, * Officially assigned] */ KZ("Kazakhstan", "KAZ", 398, Assignment.OFFICIALLY_ASSIGNED), /** * Lao People's Democratic Republic * [LA, LAO, 418, * Officially assigned] */ LA("Lao People's Democratic Republic", "LAO", 418, Assignment.OFFICIALLY_ASSIGNED), /** * Lebanon * [LB, LBN, 422, * Officially assigned] */ LB("Lebanon", "LBN", 422, Assignment.OFFICIALLY_ASSIGNED), /** * Saint Lucia * [LC, LCA, 662, * Officially assigned] */ LC("Saint Lucia", "LCA", 662, Assignment.OFFICIALLY_ASSIGNED), /** * Liechtenstein * [LI, LIE, 438, * Officially assigned] */ LI("Liechtenstein", "LIE", 438, Assignment.OFFICIALLY_ASSIGNED), /** * Sri Lanka * [LK, LKA, 144, * Officially assigned] */ LK("Sri Lanka", "LKA", 144, Assignment.OFFICIALLY_ASSIGNED), /** * Liberia * [LR, LBR, 430, * Officially assigned] */ LR("Liberia", "LBR", 430, Assignment.OFFICIALLY_ASSIGNED), /** * Lesotho * [LS, LSO, 426, * Officially assigned] */ LS("Lesotho", "LSO", 426, Assignment.OFFICIALLY_ASSIGNED), /** * Lithuania * [LT, LTU, 440, * Officially assigned] */ LT("Lithuania", "LTU", 440, Assignment.OFFICIALLY_ASSIGNED), /** * Luxembourg * [LU, LUX, 442, * Officially assigned] */ LU("Luxembourg", "LUX", 442, Assignment.OFFICIALLY_ASSIGNED), /** * Latvia * [LV, LVA, 428, * Officially assigned] */ LV("Latvia", "LVA", 428, Assignment.OFFICIALLY_ASSIGNED), /** * Libya * [LY, LBY, 434, * Officially assigned] */ LY("Libya", "LBY", 434, Assignment.OFFICIALLY_ASSIGNED), /** * Morocco * [MA, MAR, 504, * Officially assigned] */ MA("Morocco", "MAR", 504, Assignment.OFFICIALLY_ASSIGNED), /** * Monaco * [MC, MCO, 492, * Officially assigned] */ MC("Monaco", "MCO", 492, Assignment.OFFICIALLY_ASSIGNED), /** * Moldova, Republic of * [MD, MDA, 498, * Officially assigned] */ MD("Moldova, Republic of", "MDA", 498, Assignment.OFFICIALLY_ASSIGNED), /** * Montenegro * [ME, MNE, 499, * Officially assigned] */ ME("Montenegro", "MNE", 499, Assignment.OFFICIALLY_ASSIGNED), /** * Saint Martin (French part) * [MF, MAF, 663, * Officially assigned] */ MF("Saint Martin (French part)", "MAF", 663, Assignment.OFFICIALLY_ASSIGNED), /** * Madagascar * [MG, MDG, 450, * Officially assigned] */ MG("Madagascar", "MDG", 450, Assignment.OFFICIALLY_ASSIGNED), /** * Marshall Islands * [MH, MHL, 584, * Officially assigned] */ MH("Marshall Islands", "MHL", 584, Assignment.OFFICIALLY_ASSIGNED), /** * North Macedonia, Republic of * [MK, MKD, 807, * Officially assigned] */ MK("North Macedonia, Republic of", "MKD", 807, Assignment.OFFICIALLY_ASSIGNED), /** * Mali * [ML, MLI, 466, * Officially assigned] */ ML("Mali", "MLI", 466, Assignment.OFFICIALLY_ASSIGNED), /** * Myanmar * [MM, MMR, 104, * Officially assigned] * * @see #BU */ MM("Myanmar", "MMR", 104, Assignment.OFFICIALLY_ASSIGNED), /** * Mongolia * [MN, MNG, 496, * Officially assigned] */ MN("Mongolia", "MNG", 496, Assignment.OFFICIALLY_ASSIGNED), /** * Macao * [MO, MCO, 492, * Officially assigned] */ MO("Macao", "MAC", 446, Assignment.OFFICIALLY_ASSIGNED), /** * Northern Mariana Islands * [MP, MNP, 580, * Officially assigned] */ MP("Northern Mariana Islands", "MNP", 580, Assignment.OFFICIALLY_ASSIGNED), /** * Martinique * [MQ, MTQ, 474, * Officially assigned] */ MQ("Martinique", "MTQ", 474, Assignment.OFFICIALLY_ASSIGNED), /** * Mauritania * [MR, MRT, 478, * Officially assigned] */ MR("Mauritania", "MRT", 478, Assignment.OFFICIALLY_ASSIGNED), /** * Montserrat * [MS, MSR, 500, * Officially assigned] */ MS("Montserrat", "MSR", 500, Assignment.OFFICIALLY_ASSIGNED), /** * Malta * [MT, MLT, 470, * Officially assigned] */ MT("Malta", "MLT", 470, Assignment.OFFICIALLY_ASSIGNED), /** * Mauritius * [MU, MUS, 480, * Officially assigned]] */ MU("Mauritius", "MUS", 480, Assignment.OFFICIALLY_ASSIGNED), /** * Maldives * [MV, MDV, 462, * Officially assigned] */ MV("Maldives", "MDV", 462, Assignment.OFFICIALLY_ASSIGNED), /** * Malawi * [MW, MWI, 454, * Officially assigned] */ MW("Malawi", "MWI", 454, Assignment.OFFICIALLY_ASSIGNED), /** * Mexico * [MX, MEX, 484, * Officially assigned] */ MX("Mexico", "MEX", 484, Assignment.OFFICIALLY_ASSIGNED), /** * Malaysia * [MY, MYS, 458, * Officially assigned] */ MY("Malaysia", "MYS", 458, Assignment.OFFICIALLY_ASSIGNED), /** * Mozambique * [MZ, MOZ, 508, * Officially assigned] */ MZ("Mozambique", "MOZ", 508, Assignment.OFFICIALLY_ASSIGNED), /** * Namibia * [NA, NAM, 516, * Officially assigned] */ NA("Namibia", "NAM", 516, Assignment.OFFICIALLY_ASSIGNED), /** * New Caledonia * [NC, NCL, 540, * Officially assigned] */ NC("New Caledonia", "NCL", 540, Assignment.OFFICIALLY_ASSIGNED), /** * Niger * [NE, NER, 562, * Officially assigned] */ NE("Niger", "NER", 562, Assignment.OFFICIALLY_ASSIGNED), /** * Norfolk Island * [NF, NFK, 574, * Officially assigned] */ NF("Norfolk Island", "NFK", 574, Assignment.OFFICIALLY_ASSIGNED), /** * Nigeria * [NG, NGA, 566, * Officially assigned] */ NG("Nigeria","NGA", 566, Assignment.OFFICIALLY_ASSIGNED), /** * Nicaragua * [NI, NIC, 558, * Officially assigned] */ NI("Nicaragua", "NIC", 558, Assignment.OFFICIALLY_ASSIGNED), /** * Netherlands * [NL, NLD, 528, * Officially assigned] */ NL("Netherlands", "NLD", 528, Assignment.OFFICIALLY_ASSIGNED), /** * Norway * [NO, NOR, 578, * Officially assigned] */ NO("Norway", "NOR", 578, Assignment.OFFICIALLY_ASSIGNED), /** * Nepal * [NP, NPL, 524, * Officially assigned] */ NP("Nepal", "NPL", 524, Assignment.OFFICIALLY_ASSIGNED), /** * Nauru * [NR, NRU, 520, * Officially assigned] */ NR("Nauru", "NRU", 520, Assignment.OFFICIALLY_ASSIGNED), /** * Neutral Zone * [NT, NTZ, 536, * Traditionally reserved] * *

* Since version 1.16, the value of alpha-3 code of this entry is {@code NTZ} * (not NTHH). *

*/ NT("Neutral Zone", "NTZ", 536, Assignment.TRANSITIONALLY_RESERVED), /** * Niue * [NU, NIU, 570, * Officially assigned] */ NU("Niue", "NIU", 570, Assignment.OFFICIALLY_ASSIGNED), /** * New Zealand * [NZ, NZL, 554, * Officially assigned] */ NZ("New Zealand", "NZL", 554, Assignment.OFFICIALLY_ASSIGNED), /** * Oman * [OM, OMN, 512, * Officially assigned] */ OM("Oman", "OMN", 512, Assignment.OFFICIALLY_ASSIGNED), /** * Panama * [PA, PAN, 591, * Officially assigned] */ PA("Panama", "PAN", 591, Assignment.OFFICIALLY_ASSIGNED), /** * Peru * [PE, PER, 604, * Officially assigned] */ PE("Peru", "PER", 604, Assignment.OFFICIALLY_ASSIGNED), /** * French Polynesia * [PF, PYF, 258, * Officially assigned] */ PF("French Polynesia", "PYF", 258, Assignment.OFFICIALLY_ASSIGNED), /** * Papua New Guinea * [PG, PNG, 598, * Officially assigned] */ PG("Papua New Guinea", "PNG", 598, Assignment.OFFICIALLY_ASSIGNED), /** * Philippines * [PH, PHL, 608, * Officially assigned] */ PH("Philippines", "PHL", 608, Assignment.OFFICIALLY_ASSIGNED), /** * Pakistan * [PK, PAK, 586, * Officially assigned] */ PK("Pakistan", "PAK", 586, Assignment.OFFICIALLY_ASSIGNED), /** * Poland * [PL, POL, 616, * Officially assigned] */ PL("Poland", "POL", 616, Assignment.OFFICIALLY_ASSIGNED), /** * Saint Pierre and Miquelon * [PM, SPM, 666, * Officially assigned] */ PM("Saint Pierre and Miquelon", "SPM", 666, Assignment.OFFICIALLY_ASSIGNED), /** * Pitcairn * [PN, PCN, 612, * Officially assigned] */ PN("Pitcairn", "PCN", 612, Assignment.OFFICIALLY_ASSIGNED), /** * Puerto Rico * [PR, PRI, 630, * Officially assigned] */ PR("Puerto Rico", "PRI", 630, Assignment.OFFICIALLY_ASSIGNED), /** * Palestine, State of * [PS, PSE, 275, * Officially assigned] */ PS("Palestine, State of", "PSE", 275, Assignment.OFFICIALLY_ASSIGNED), /** * Portugal * [PT, PRT, 620, * Officially assigned] */ PT("Portugal", "PRT", 620, Assignment.OFFICIALLY_ASSIGNED), /** * Palau * [PW, PLW, 585, * Officially assigned] */ PW("Palau", "PLW", 585, Assignment.OFFICIALLY_ASSIGNED), /** * Paraguay * [PY, PRY, 600, * Officially assigned] */ PY("Paraguay", "PRY", 600, Assignment.OFFICIALLY_ASSIGNED), /** * Qatar * [QA, QAT, 634, * Officially assigned] */ QA("Qatar", "QAT", 634, Assignment.OFFICIALLY_ASSIGNED), /** * Réunion * [RE, REU, 638, * Officially assigned] */ RE("R\u00E9union", "REU", 638, Assignment.OFFICIALLY_ASSIGNED), /** * Romania * [RO, ROU, 642, * Officially assigned] */ RO("Romania", "ROU", 642, Assignment.OFFICIALLY_ASSIGNED), /** * Serbia * [RS, SRB, 688, * Officially assigned] */ RS("Serbia", "SRB", 688, Assignment.OFFICIALLY_ASSIGNED), /** * Russian Federation * [RU, RUS, 643, * Officially assigned] */ RU("Russian Federation", "RUS", 643, Assignment.OFFICIALLY_ASSIGNED), /** * Rwanda * [RW, RWA, 646, * Officially assigned] */ RW("Rwanda", "RWA", 646, Assignment.OFFICIALLY_ASSIGNED), /** * Saudi Arabia * [SA, SAU, 682, * Officially assigned] */ SA("Saudi Arabia", "SAU", 682, Assignment.OFFICIALLY_ASSIGNED), /** * Solomon Islands * [SB, SLB, 90, * Officially assigned] */ SB("Solomon Islands", "SLB", 90, Assignment.OFFICIALLY_ASSIGNED), /** * Seychelles * [SC, SYC, 690, * Officially assigned] */ SC("Seychelles", "SYC", 690, Assignment.OFFICIALLY_ASSIGNED), /** * Sudan * [SD, SDN, 729, * Officially assigned] */ SD("Sudan", "SDN", 729, Assignment.OFFICIALLY_ASSIGNED), /** * Sweden * [SE, SWE, 752, * Officially assigned] */ SE("Sweden", "SWE", 752, Assignment.OFFICIALLY_ASSIGNED), /** * Finland * [SF, FIN, 246, * Traditionally reserved] * * @see #FI */ SF("Finland", "FIN", 246, Assignment.TRANSITIONALLY_RESERVED), /** * Singapore * [SG, SGP, 702, * Officially assigned] */ SG("Singapore", "SGP", 702, Assignment.OFFICIALLY_ASSIGNED), /** * Saint Helena, Ascension and Tristan da Cunha * [SH, SHN, 654, * Officially assigned] */ SH("Saint Helena, Ascension and Tristan da Cunha", "SHN", 654, Assignment.OFFICIALLY_ASSIGNED), /** * Slovenia * [SI, SVN, 705, * Officially assigned] */ SI("Slovenia", "SVN", 705, Assignment.OFFICIALLY_ASSIGNED), /** * Svalbard and Jan Mayen * [SJ, SJM, 744, * Officially assigned] */ SJ("Svalbard and Jan Mayen", "SJM", 744, Assignment.OFFICIALLY_ASSIGNED), /** * Slovakia * [SK, SVK, 703, * Officially assigned] */ SK("Slovakia", "SVK", 703, Assignment.OFFICIALLY_ASSIGNED), /** * Sierra Leone * [SL, SLE, 694, * Officially assigned] */ SL("Sierra Leone", "SLE", 694, Assignment.OFFICIALLY_ASSIGNED), /** * San Marino * [SM, SMR, 674, * Officially assigned] */ SM("San Marino", "SMR", 674, Assignment.OFFICIALLY_ASSIGNED), /** * Senegal * [SN, SEN, 686, * Officially assigned] */ SN("Senegal", "SEN", 686, Assignment.OFFICIALLY_ASSIGNED), /** * Somalia * [SO, SOM, 706, * Officially assigned] */ SO("Somalia", "SOM", 706, Assignment.OFFICIALLY_ASSIGNED), /** * Suriname * [SR, SUR, 740, * Officially assigned] */ SR("Suriname", "SUR", 740, Assignment.OFFICIALLY_ASSIGNED), /** * South Sudan * [SS, SSD, 728, * Officially assigned] */ SS("South Sudan", "SSD", 728, Assignment.OFFICIALLY_ASSIGNED), /** * Sao Tome and Principe * [ST, STP, 678, * Officially assigned] */ ST("Sao Tome and Principe", "STP", 678, Assignment.OFFICIALLY_ASSIGNED), /** * USSR * [SU, SUN, 810, * Exceptionally reserved] * *

* Since version 1.17, the numeric code of this entry is 810. *

*/ SU("USSR", "SUN", 810, Assignment.EXCEPTIONALLY_RESERVED), /** * El Salvador * [SV, SLV, 222, * Officially assigned] */ SV("El Salvador", "SLV", 222, Assignment.OFFICIALLY_ASSIGNED), /** * Sint Maarten (Dutch part) * [SX, SXM, 534, * Officially assigned] */ SX("Sint Maarten (Dutch part)", "SXM", 534, Assignment.OFFICIALLY_ASSIGNED), /** * Syrian Arab Republic * [SY, SYR, 760, * Officially assigned] */ SY("Syrian Arab Republic", "SYR", 760, Assignment.OFFICIALLY_ASSIGNED), /** * Eswatini * [SZ, SWZ, 748, * Officially assigned] */ SZ("Eswatini", "SWZ", 748, Assignment.OFFICIALLY_ASSIGNED), /** * Tristan da Cunha * [TA, TAA, -1, * Exceptionally reserved. */ TA("Tristan da Cunha", "TAA", -1, Assignment.EXCEPTIONALLY_RESERVED), /** * Turks and Caicos Islands * [TC, TCA, 796, * Officially assigned] */ TC("Turks and Caicos Islands", "TCA", 796, Assignment.OFFICIALLY_ASSIGNED), /** * Chad * [TD, TCD, 148, * Officially assigned] */ TD("Chad", "TCD", 148, Assignment.OFFICIALLY_ASSIGNED), /** * French Southern Territories * [TF, ATF, 260, * Officially assigned] */ TF("French Southern Territories", "ATF", 260, Assignment.OFFICIALLY_ASSIGNED), /** * Togo * [TG, TGO, 768, * Officially assigned] */ TG("Togo", "TGO", 768, Assignment.OFFICIALLY_ASSIGNED), /** * Thailand * [TH, THA, 764, * Officially assigned] */ TH("Thailand", "THA", 764, Assignment.OFFICIALLY_ASSIGNED), /** * Tajikistan * [TJ, TJK, 762, * Officially assigned] */ TJ("Tajikistan", "TJK", 762, Assignment.OFFICIALLY_ASSIGNED), /** * Tokelau * [TK, TKL, 772, * Officially assigned] */ TK("Tokelau", "TKL", 772, Assignment.OFFICIALLY_ASSIGNED), /** * Timor-Leste * [TL, TLS, 626, * Officially assigned] * * @see #TM */ TL("Timor-Leste", "TLS", 626, Assignment.OFFICIALLY_ASSIGNED), /** * Turkmenistan * [TM, TKM, 795, * Officially assigned] */ TM("Turkmenistan", "TKM", 795, Assignment.OFFICIALLY_ASSIGNED), /** * Tunisia * [TN, TUN, 788, * Officially assigned] */ TN("Tunisia", "TUN", 788, Assignment.OFFICIALLY_ASSIGNED), /** * Tonga * [TO, TON, 776, * Officially assigned] */ TO("Tonga", "TON", 776, Assignment.OFFICIALLY_ASSIGNED), /** * East Timor * [TP, TMP, 626, * Traditionally reserved] * *

* Since version 1.16, the value of alpha-3 code of this entry is {@code TMP} * (not TPTL). *

* *

* Since version 1.17, the numeric code of this entry is 626. *

* * @see #TL */ TP("East Timor", "TMP", 626, Assignment.TRANSITIONALLY_RESERVED), /** * Turkey * [TR, TUR, 792, * Officially assigned] */ TR("Turkey", "TUR", 792, Assignment.OFFICIALLY_ASSIGNED), /** * Trinidad and Tobago * [TT, TTO, 780, * Officially assigned] */ TT("Trinidad and Tobago", "TTO", 780, Assignment.OFFICIALLY_ASSIGNED), /** * Tuvalu * [TV, TUV, 798, * Officially assigned] */ TV("Tuvalu", "TUV", 798, Assignment.OFFICIALLY_ASSIGNED), /** * Taiwan, Province of China * [TW, TWN, 158, * Officially assigned] */ TW("Taiwan, Province of China", "TWN", 158, Assignment.OFFICIALLY_ASSIGNED) { @Override public Locale toLocale() { return Locale.TAIWAN; } }, /** * Tanzania, United Republic of * [TZ, TZA, 834, * Officially assigned] */ TZ("Tanzania, United Republic of", "TZA", 834, Assignment.OFFICIALLY_ASSIGNED), /** * Ukraine * [UA, UKR, 804, * Officially assigned] */ UA("Ukraine", "UKR", 804, Assignment.OFFICIALLY_ASSIGNED), /** * Uganda * [UG, UGA, 800, * Officially assigned] */ UG("Uganda", "UGA", 800, Assignment.OFFICIALLY_ASSIGNED), /** * United Kingdom * [UK, null, 826, * Exceptionally reserved] * *

* Since version 1.17, the numeric code of this entry is 826. *

* * @see #GB */ UK("United Kingdom", null, 826, Assignment.EXCEPTIONALLY_RESERVED) { @Override public Locale toLocale() { return Locale.UK; } }, /** * United States Minor Outlying Islands * [UM, UMI, 581, * Officially assigned] */ UM("United States Minor Outlying Islands", "UMI", 581, Assignment.OFFICIALLY_ASSIGNED), /** * United States * [US, USA, 840, * Officially assigned] */ US("United States", "USA", 840, Assignment.OFFICIALLY_ASSIGNED) { @Override public Locale toLocale() { return Locale.US; } }, /** * Uruguay * [UY, URY, 858, * Officially assigned] */ UY("Uruguay", "URY", 858, Assignment.OFFICIALLY_ASSIGNED), /** * Uzbekistan * [UZ, UZB, 860, * Officially assigned] */ UZ("Uzbekistan", "UZB", 860, Assignment.OFFICIALLY_ASSIGNED), /** * Holy See (Vatican City State) * [VA, VAT, 336, * Officially assigned] */ VA("Holy See (Vatican City State)", "VAT", 336, Assignment.OFFICIALLY_ASSIGNED), /** * Saint Vincent and the Grenadines * [VC, VCT, 670, * Officially assigned] */ VC("Saint Vincent and the Grenadines", "VCT", 670, Assignment.OFFICIALLY_ASSIGNED), /** * Venezuela, Bolivarian Republic of * [VE, VEN, 862, * Officially assigned] */ VE("Venezuela, Bolivarian Republic of", "VEN", 862, Assignment.OFFICIALLY_ASSIGNED), /** * Virgin Islands, British * [VG, VGB, 92, * Officially assigned] */ VG("Virgin Islands, British", "VGB", 92, Assignment.OFFICIALLY_ASSIGNED), /** * Virgin Islands, U.S. * [VI, VIR, 850, * Officially assigned] */ VI("Virgin Islands, U.S.", "VIR", 850, Assignment.OFFICIALLY_ASSIGNED), /** * Viet Nam * [VN, VNM, 704, * Officially assigned] */ VN("Viet Nam", "VNM", 704, Assignment.OFFICIALLY_ASSIGNED), /** * Vanuatu * [VU, VUT, 548, * Officially assigned] */ VU("Vanuatu", "VUT", 548, Assignment.OFFICIALLY_ASSIGNED), /** * Wallis and Futuna * [WF, WLF, 876, * Officially assigned] */ WF("Wallis and Futuna", "WLF", 876, Assignment.OFFICIALLY_ASSIGNED), /** * Samoa * [WS, WSM, 882, * Officially assigned] */ WS("Samoa", "WSM", 882, Assignment.OFFICIALLY_ASSIGNED), /** * Kosovo, Republic of * [XK, XXK, -1, * User assigned] */ XK("Kosovo, Republic of", "XKX", -1, Assignment.USER_ASSIGNED), /** * Yemen * [YE, YEM, 887, * Officially assigned] */ YE("Yemen", "YEM", 887, Assignment.OFFICIALLY_ASSIGNED), /** * Mayotte * [YT, MYT, 175, * Officially assigned] */ YT("Mayotte", "MYT", 175, Assignment.OFFICIALLY_ASSIGNED), /** * Yugoslavia * [YU, YUG, 890, * Traditionally reserved] * *

* Since version 1.16, the value of alpha-3 code of this entry is {@code YUG} * (not YUCS). *

*/ YU("Yugoslavia", "YUG", 890, Assignment.TRANSITIONALLY_RESERVED), /** * South Africa * [ZA, ZAF, 710, * Officially assigned] */ ZA("South Africa", "ZAF", 710, Assignment.OFFICIALLY_ASSIGNED), /** * Zambia * [ZM, ZMB, 894, * Officially assigned] */ ZM("Zambia", "ZMB", 894, Assignment.OFFICIALLY_ASSIGNED), /** * Zaire * [ZR, ZAR, 180, * Traditionally reserved] * *

* Since version 1.16, the value of alpha-3 code of this entry is {@code ZAR} * (not ZRCD). *

* *

* Since version 1.17, the numeric code of this entry is 180. *

* * @see #CD */ ZR("Zaire", "ZAR", 180, Assignment.TRANSITIONALLY_RESERVED), /** * Zimbabwe * [ZW, ZWE, 716, * Officially assigned] */ ZW("Zimbabwe", "ZWE", 716, Assignment.OFFICIALLY_ASSIGNED), ; /** * Code assignment state in ISO 3166-1. * * @see Decoding table of ISO 3166-1 alpha-2 codes */ public enum Assignment { /** * Officially assigned. * * Assigned to a country, territory, or area of geographical interest. */ OFFICIALLY_ASSIGNED, /** * User assigned. * * Free for assignment at the disposal of users. */ USER_ASSIGNED, /** * Exceptionally reserved. * * Reserved on request for restricted use. */ EXCEPTIONALLY_RESERVED, /** * Transitionally reserved. * * Deleted from ISO 3166-1 but reserved transitionally. */ TRANSITIONALLY_RESERVED, /** * Indeterminately reserved. * * Used in coding systems associated with ISO 3166-1. */ INDETERMINATELY_RESERVED, /** * Not used. * * Not used in ISO 3166-1 in deference to international property * organization names. */ NOT_USED } private static final Map alpha3Map = new HashMap(); private static final Map alpha4Map = new HashMap(); private static final Map numericMap = new HashMap(); static { for (CountryCode cc : values()) { if (cc.getAlpha3() != null) { alpha3Map.put(cc.getAlpha3(), cc); } if (cc.getNumeric() != -1) { numericMap.put(Integer.valueOf(cc.getNumeric()), cc); } } // FI and SF have the same alpha-3 code "FIN". FI should be used. alpha3Map.put("FIN", FI); // For backward compatibility. alpha4Map.put("ANHH", AN); alpha4Map.put("BUMM", BU); alpha4Map.put("CSXX", CS); alpha4Map.put("NTHH", NT); alpha4Map.put("TPTL", TP); alpha4Map.put("YUCS", YU); alpha4Map.put("ZRCD", ZR); // BU and MM have the same numeric code 104. MM should be used. numericMap.put(Integer.valueOf(104), MM); // CD and ZR have the same numeric code 180. CD should be used. numericMap.put(Integer.valueOf(180), CD); // FI and SF have the same numeric code 246. FI should be used. numericMap.put(Integer.valueOf(246), FI); // GB and UK have the same numeric code 826. GB should be used. numericMap.put(Integer.valueOf(826), GB); // TL and TP have the same numeric code 626. TL should be used. numericMap.put(Integer.valueOf(626), TL); } private final String name; private final String alpha3; private final int numeric; private final Assignment assignment; private CountryCode(String name, String alpha3, int numeric, Assignment assignment) { this.name = name; this.alpha3 = alpha3; this.numeric = numeric; this.assignment = assignment; } /** * Get the country name. * * @return * The country name. */ public String getName() { return name; } /** * Get the ISO 3166-1 alpha-2 code. * * @return * The ISO 3166-1 alpha-2 code. * {@link CountryCode#UNDEFINED} returns {@code "UNDEFINED"} * which is not an official ISO 3166-1 alpha-2 code. */ public String getAlpha2() { return name(); } /** * Get the ISO 3166-1 alpha-3 code. * * @return * The ISO 3166-1 alpha-3 code. * Some country codes reserved exceptionally (such as {@link #EU}) * returns {@code null}. * {@link CountryCode#UNDEFINED} returns {@code null}, too. */ public String getAlpha3() { return alpha3; } /** * Get the ISO 3166-1 numeric code. * * @return * The ISO 3166-1 numeric code. * Country codes reserved exceptionally (such as {@link #EU}) * returns {@code -1}. * {@link CountryCode#UNDEFINED} returns {@code -1}, too. */ public int getNumeric() { return numeric; } /** * Get the assignment state of this country code in ISO 3166-1. * * @return * The assignment state. * * @see Decoding table of ISO 3166-1 alpha-2 codes */ public Assignment getAssignment() { return assignment; } /** * Convert this {@code CountryCode} instance to a {@link Locale} instance. * *

* In most cases, this method creates a new {@code Locale} instance * every time it is called, but some {@code CountryCode} instances return * their corresponding entries in {@code Locale} class. For example, * {@link #CA CountryCode.CA} always returns {@link Locale#CANADA}. *

* *

* The table below lists {@code CountryCode} entries whose {@code toLocale()} * do not create new Locale instances but return entries in * {@code Locale} class. *

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
CountryCodeLocale
{@link CountryCode#CA CountryCode.CA}{@link Locale#CANADA}
{@link CountryCode#CN CountryCode.CN}{@link Locale#CHINA}
{@link CountryCode#DE CountryCode.DE}{@link Locale#GERMANY}
{@link CountryCode#FR CountryCode.FR}{@link Locale#FRANCE}
{@link CountryCode#GB CountryCode.GB}{@link Locale#UK}
{@link CountryCode#IT CountryCode.IT}{@link Locale#ITALY}
{@link CountryCode#JP CountryCode.JP}{@link Locale#JAPAN}
{@link CountryCode#KR CountryCode.KR}{@link Locale#KOREA}
{@link CountryCode#TW CountryCode.TW}{@link Locale#TAIWAN}
{@link CountryCode#US CountryCode.US}{@link Locale#US}
* *

* In addition, {@code toLocale()} of {@link CountryCode#UNDEFINED * CountryCode.UNDEFINED} behaves a bit differently. It returns * {@link Locale#ROOT Locale.ROOT} when it is available (i.e. when * the version of Java SE is 1.6 or higher). Otherwise, it returns * a {@code Locale} instance whose language and country are empty * strings. Even in the latter case, the same instance is returned * on every call. *

* * @return * A {@code Locale} instance that matches this {@code CountryCode}. */ public Locale toLocale() { return new Locale("", name()); } /** * Get the currency. * *

* This method is an alias of {@link Currency}{@code .}{@link * Currency#getInstance(Locale) getInstance}{@code (}{@link * #toLocale()}{@code )}. The only difference is that this method * returns {@code null} when {@code Currency.getInstance(Locale)} * throws {@code IllegalArgumentException}. *

* *

* This method returns {@code null} when the territory represented by * this {@code CountryCode} instance does not have a currency. * {@link #AQ} (Antarctica) is one example. *

* *

* In addition, this method returns {@code null} also when the ISO 3166 * code represented by this {@code CountryCode} instance is not * supported by the implementation of {@link * Currency#getInstance(Locale)}. At the time of this writing, * {@link #SS} (South Sudan) is one example. *

* * @return * A {@code Currency} instance. In some cases, null * is returned. * * @since 1.4 * * @see Currency#getInstance(Locale) */ public Currency getCurrency() { try { return Currency.getInstance(toLocale()); } catch (IllegalArgumentException e) { // Currency.getInstance(Locale) throws IllegalArgumentException // when the given ISO 3166 code is not supported. return null; } } /** * Get a {@code CountryCode} that corresponds to the given ISO 3166-1 * alpha-2 or * alpha-3 code. * *

* This method calls {@link #getByCode(String, boolean) getByCode}{@code (code, true)}. * Note that the behavior has changed since the version 1.13. In the older versions, * this method was an alias of {@code getByCode(code, false)}. *

* * @param code * An ISO 3166-1 alpha-2 or alpha-3 code. * When {@code "UNDEFINED"} is given, {@link #UNDEFINED CountryCode.UNDEFINED} * is returned. * In addition, for backward compatibility, some 4-letter ISO 3166-3 codes such * as {@code "ANHH"} are accepted. * * @return * A {@code CountryCode} instance, or {@code null} if not found. * * @see #getByCode(String, boolean) */ public static CountryCode getByCode(String code) { return getByCode(code, true); } /** * Get a {@code CountryCode} that corresponds to the given ISO 3166-1 * alpha-2 or * alpha-3 code. * *

* This method calls {@link #getByCode(String, boolean) getByCode}{@code (code, false)}. *

* * @param code * An ISO 3166-1 alpha-2 or alpha-3 code. Or {@code "UNDEFINED"} (case insensitive). * In addition, for backward compatibility, some 4-letter ISO 3166-3 codes such * as {@code "ANHH"} are accepted. * * @return * A {@code CountryCode} instance, or {@code null} if not found. * * @since 1.13 * * @see #getByCode(String, boolean) */ public static CountryCode getByCodeIgnoreCase(String code) { return getByCode(code, false); } /** * Get a {@code CountryCode} that corresponds to the given ISO 3166-1 * alpha-2 or * alpha-3 code. * * @param code * An ISO 3166-1 alpha-2 or alpha-3 code. * Or {@code "UNDEFINED"} (its case sensitivity depends on the value of * {@code caseSensitive}). * In addition, for backward compatibility, some 4-letter ISO 3166-3 codes such * as {@code "ANHH"} are accepted. * * @param caseSensitive * If {@code true}, the given code should consist of upper-case letters only. * If {@code false}, this method internally canonicalizes the given code by * {@link String#toUpperCase()} and then performs search. For example, * {@code getByCode("jp", true)} returns {@code null}, but on the other hand, * {@code getByCode("jp", false)} returns {@link #JP CountryCode.JP}. * * @return * A {@code CountryCode} instance, or {@code null} if not found. */ public static CountryCode getByCode(String code, boolean caseSensitive) { if (code == null) { return null; } switch (code.length()) { case 2: code = canonicalize(code, caseSensitive); return getByAlpha2Code(code); case 3: code = canonicalize(code, caseSensitive); return getByAlpha3Code(code); case 4: code = canonicalize(code, caseSensitive); return getByAlpha4Code(code); case 9: code = canonicalize(code, caseSensitive); if ("UNDEFINED".equals(code)) { return CountryCode.UNDEFINED; } // FALLTHROUGH default: return null; } } /** * Get a {@code CountryCode} that corresponds to the country code of * the given {@link Locale} instance. * * @param locale * A {@code Locale} instance. * * @return * A {@code CountryCode} instance, or {@code null} if not found. * When {@link Locale#getCountry() getCountry()} method of the * given {@code Locale} instance returns {@code null} or an * empty string, {@link #UNDEFINED CountryCode.UNDEFINED} is * returned. * * @see Locale#getCountry() */ public static CountryCode getByLocale(Locale locale) { if (locale == null) { return null; } // Locale.getCountry() returns an uppercase ISO 3166 2-letter code. String country = locale.getCountry(); if (country == null || country.length() == 0) { return CountryCode.UNDEFINED; } return getByCode(country, true); } /** * Canonicalize the given country code. * * @param code * ISO 3166-1 alpha-2 or alpha-3 country code. * * @param caseSensitive * {@code true} if the code should be handled case-sensitively. * * @return * If {@code code} is {@code null} or an empty string, * {@code null} is returned. * Otherwise, if {@code caseSensitive} is {@code true}, * {@code code} is returned as is. * Otherwise, {@code code.toUpperCase()} is returned. */ static String canonicalize(String code, boolean caseSensitive) { if (code == null || code.length() == 0) { return null; } if (caseSensitive) { return code; } else { return code.toUpperCase(); } } /** * Get a {@code CountryCode} that corresponds to the given ISO 3166-1 * alpha-2 code. * * @param code * An ISO 3166-1 alpha-2 code. * * @return * A {@code CountryCode} instance, or {@code null} if not found. * * @since 1.23 */ public static CountryCode getByAlpha2Code(String code) { try { return Enum.valueOf(CountryCode.class, code); } catch (IllegalArgumentException e) { return null; } } /** * Get a {@code CountryCode} that corresponds to the given ISO 3166-1 * alpha-3 code. * * @param code * An ISO 3166-1 alpha-3 code. * * @return * A {@code CountryCode} instance, or {@code null} if not found. * * @since 1.23 */ public static CountryCode getByAlpha3Code(String code) { return alpha3Map.get(code); } /** * Get a {@code CountryCode} that corresponds to the given alpha-4 code. * *

* Recognized alpha-4 codes are listed in the table below. *

* *
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Alpha-4 CodeCountryCode
ANHH{@link #AN}
BUMM{@link #BU}
CSXX{@link #CS}
NTHH{@link #NT}
TPTL{@link #TP}
YUCS{@link #YU}
ZRCD{@link #ZR}
*
* * @param code * Alpha-4 code. * * @return * A {@code CountryCode} instance, or {@code null} if not found. * * @since 1.23 */ public static CountryCode getByAlpha4Code(String code) { return alpha4Map.get(code); } /** * Get a {@code CountryCode} that corresponds to the given * ISO 3166-1 * numeric code. * *

* Note that there are some pairs each of which shares the same numeric code. * The following table shows such pairs and which {@code CountryCode} instance * is returned from this method. *

* *
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Shared Numeric CodeAlpha-3 CodesReturned Alpha-3 Code
104{@link #BU}{@link #MM}{@link #MM}
180{@link #CD}{@link #ZR}{@link #CD}
246{@link #FI}{@link #SF}{@link #FI}
826{@link #GB}{@link #UK}{@link #GB}
626{@link #TL}{@link #TP}{@link #TL}
*
*
* * @param code * An ISO 3166-1 numeric code. * * @return * A {@code CountryCode} instance, or {@code null} if not found. * If 0 or a negative value is given, {@code null} is returned. */ public static CountryCode getByCode(int code) { if (code <= 0) { return null; } return numericMap.get(code); } /** * Get a list of {@code CountryCode} by a name regular expression. * *

* This method is almost equivalent to {@link #findByName(Pattern) * findByName}{@code (Pattern.compile(regex))}. *

* * @param regex * Regular expression for names. * * @return * List of {@code CountryCode}. If nothing has matched, * an empty list is returned. * * @throws IllegalArgumentException * {@code regex} is {@code null}. * * @throws java.util.regex.PatternSyntaxException * {@code regex} failed to be compiled. * * @since 1.11 */ public static List findByName(String regex) { if (regex == null) { throw new IllegalArgumentException("regex is null."); } // Compile the regular expression. This may throw // java.util.regex.PatternSyntaxException. Pattern pattern = Pattern.compile(regex); return findByName(pattern); } /** * Get a list of {@code CountryCode} by a name pattern. * *

* For example, the list obtained by the code snippet below: *

* *
     * Pattern pattern = Pattern.compile(".*United.*");
     * List<CountryCode> list = CountryCode.findByName(pattern);
* *

* contains 6 {@code CountryCode}s as listed below. *

* *
    *
  1. {@link #AE} : United Arab Emirates *
  2. {@link #GB} : United Kingdom *
  3. {@link #TZ} : Tanzania, United Republic of *
  4. {@link #UK} : United Kingdom *
  5. {@link #UM} : United States Minor Outlying Islands *
  6. {@link #US} : United States *
* * @param pattern * Pattern to match names. * * @return * List of {@code CountryCode}. If nothing has matched, * an empty list is returned. * * @throws IllegalArgumentException * {@code pattern} is {@code null}. * * @since 1.11 */ public static List findByName(Pattern pattern) { if (pattern == null) { throw new IllegalArgumentException("pattern is null."); } List list = new ArrayList(); for (CountryCode entry : values()) { // If the name matches the given pattern. if (pattern.matcher(entry.getName()).matches()) { list.add(entry); } } return list; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy