2 * Copyright (C) 2010 Google Inc.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 package com.android.i18n.addressinput;
19 import org.json.JSONException;
20 import org.json.JSONObject;
22 import java.util.HashMap;
26 * Initial data in JSON format for regions. This has some formatting information for some countries,
27 * and a list of all the regions that the widget can support. Data has been sorted below for ease of
30 class RegionDataConstants {
32 private static final Map<String, String> COUNTRY_FORMAT_MAP =
33 new HashMap<String, String>();
35 private enum RegionDataEnum {
38 "name", "ASCENSION ISLAND",
44 "fmt", "%N%n%O%n%A%n%Z %C",
48 "name", "UNITED ARAB EMIRATES",
49 "fmt", "%N%n%O%n%A%n%C",
53 "name", "AFGHANISTAN",
56 "name", "ANTIGUA AND BARBUDA",
69 "fmt", "%N%n%O%n%A%n%Z%n%C%n%S",
70 "lfmt", "%N%n%O%n%A%n%Z%n%C%n%S",
73 "name", "NETHERLANDS ANTILLES",
85 "fmt", "%N%n%O%n%A%n%Z %C%n%S",
87 "state_name_type", "state",
90 "name", "AMERICAN SAMOA",
91 "fmt", "%N%n%O%n%A%n%C %S %Z",
94 "zip_name_type", "zip",
95 "state_name_type", "state",
99 "fmt", "%O%n%N%n%A%n%Z %C",
106 "fmt", "%O%n%N%n%A%n%C %S %Z",
109 "state_name_type", "state",
116 "fmt", "%O%n%N%n%A%nAX-%Z %C%n\u00C5LAND",
121 "name", "AZERBAIJAN",
122 "fmt", "%N%n%O%n%A%nAZ %Z %C",
126 "name", "BOSNIA AND HERZEGOVINA",
127 "fmt", "%N%n%O%n%A%n%Z %C",
131 "state_name_type", "parish",
134 "name", "BANGLADESH",
135 "fmt", "%N%n%O%n%A%n%C - %Z",
139 "fmt", "%O%n%N%n%A%n%Z %C",
143 "name", "BURKINA FASO",
144 "fmt", "%N%n%O%n%A%n%C %X",
147 "name", "BULGARIA (REP.)",
148 "fmt", "%N%n%O%n%A%n%Z %C",
152 "fmt", "%N%n%O%n%A%n%C %Z",
162 "name", "SAINT BARTHELEMY",
163 "fmt", "%O%n%N%n%A%n%Z %C %X",
169 "fmt", "%N%n%O%n%A%n%C %Z",
172 "name", "BRUNEI DARUSSALAM",
173 "fmt", "%N%n%O%n%A%n%C %Z",
183 "fmt", "%O%n%N%n%A%n%C-%S%n%Z",
186 "state_name_type", "state",
192 "fmt", "%N%n%O%n%A%n%C, %S",
193 "state_name_type", "island",
199 "name", "BOUVET ISLAND",
206 "fmt", "%S%n%Z %C %X%n%A%n%O%n%N",
214 "languages", "en~fr",
215 "fmt", "%N%n%O%n%A%n%C %S %Z",
220 "name", "COCOS (KEELING) ISLANDS",
221 "fmt", "%O%n%N%n%A%n%C %S %Z",
225 "name", "CONGO (DEM. REP.)",
226 "fmt", "%N%n%O%n%A%n%C %X",
229 "name", "CENTRAL AFRICAN REPUBLIC",
232 "name", "CONGO (REP.)",
235 "name", "SWITZERLAND",
237 "languages", "de~fr~it",
238 "fmt", "%O%n%N%n%A%nCH-%Z %C",
244 "name", "COTE D'IVOIRE",
245 "fmt", "%N%n%O%n%X %A %C %X",
248 "name", "COOK ISLANDS",
249 "fmt", "%N%n%O%n%A%n%C %Z",
255 "fmt", "%N%n%O%n%A%n%Z %C%n%S",
256 "state_name_type", "state",
262 "name", "P.R. CHINA",
264 "languages", "zh-hans",
265 "fmt", "%Z%n%S%C%D%n%A%n%O%n%N",
266 "lfmt", "%N%n%O%n%A%n%D%n%C%n%S, %Z",
272 "fmt", "%N%n%O%n%A%n%C, %S",
275 "name", "COSTA RICA",
276 "fmt", "%N%n%O%n%A%n%Z %C",
279 "name", "SERBIA AND MONTENEGRO",
280 "fmt", "%N%n%O%n%A%n%Z %C",
283 "name", "CAPE VERDE",
286 "fmt", "%N%n%O%n%A%n%Z %C%n%S",
287 "state_name_type", "island",
290 "name", "CHRISTMAS ISLAND",
291 "fmt", "%O%n%N%n%A%n%C %S %Z",
296 "fmt", "%N%n%O%n%A%n%Z %C",
299 "name", "CZECH REP.",
300 "fmt", "%N%n%O%n%A%n%Z %C",
304 "fmt", "%N%n%O%n%A%n%Z %C",
312 "fmt", "%N%n%O%n%A%n%Z %C",
319 "name", "DOMINICAN REP.",
320 "fmt", "%N%n%O%n%A%n%Z %C",
324 "fmt", "%N%n%O%n%A%n%Z %C",
328 "fmt", "%N%n%O%n%A%n%Z%n%C",
333 "fmt", "%N%n%O%n%A%n%Z %C",
337 "fmt", "%N%n%O%n%A%n%C%n%S%n%Z",
338 "lfmt", "%N%n%O%n%A%n%C%n%S%n%Z",
341 "name", "WESTERN SAHARA",
350 "fmt", "%N%n%O%n%A%n%Z %C %S",
356 "fmt", "%N%n%O%n%A%n%Z %C",
360 "fmt", "%O%n%N%n%A%nFI-%Z %C",
368 "name", "FALKLAND ISLANDS (MALVINAS)",
369 "fmt", "%N%n%O%n%A%n%X%n%C%n%Z",
374 "name", "MICRONESIA (Federated State of)",
375 "fmt", "%N%n%O%n%A%n%C %S %Z",
378 "zip_name_type", "zip",
379 "state_name_type", "state",
382 "name", "FAROE ISLANDS",
383 "fmt", "%N%n%O%n%A%nFO%Z %C",
388 "fmt", "%O%n%N%n%A%n%Z %C %X",
396 "name", "UNITED KINGDOM",
397 "fmt", "%N%n%O%n%A%n%C%n%S%n%Z",
400 "state_name_type", "county",
403 "name", "GRENADA (WEST INDIES)",
407 "fmt", "%N%n%O%n%A%n%Z %C",
410 "name", "FRENCH GUIANA",
411 "fmt", "%O%n%N%n%A%n%Z %C %X",
416 "name", "CHANNEL ISLANDS",
417 "fmt", "%N%n%O%n%A%n%X%n%C%nGUERNSEY%n%Z",
431 "fmt", "%N%n%O%n%A%n%Z %C",
439 "fmt", "%N%n%O%n%Z %A %C",
442 "name", "GUADELOUPE",
443 "fmt", "%O%n%N%n%A%n%Z %C %X",
448 "name", "EQUATORIAL GUINEA",
452 "fmt", "%N%n%O%n%A%n%Z %C",
456 "name", "SOUTH GEORGIA",
457 "fmt", "%N%n%O%n%A%n%X%n%C%n%Z",
463 "fmt", "%N%n%O%n%A%n%Z- %C",
467 "fmt", "%N%n%O%n%A%n%C %S %Z",
470 "zip_name_type", "zip",
471 "state_name_type", "state",
474 "name", "GUINEA-BISSAU",
475 "fmt", "%N%n%O%n%A%n%Z %C",
484 "fmt", "%S%n%A%n%O%n%N",
485 "lfmt", "%N%n%O%n%A%n%S",
488 "state_name_type", "area",
491 "name", "HEARD AND MCDONALD ISLANDS",
492 "fmt", "%O%n%N%n%A%n%C %S %Z",
497 "fmt", "%N%n%O%n%A%n%C, %S%n%Z",
502 "fmt", "%N%n%O%n%A%nHR-%Z %C",
507 "fmt", "%N%n%O%n%A%nHT%Z %C %X",
511 "name", "HUNGARY (Rep.)",
512 "fmt", "%N%n%O%n%C%n%A%n%Z",
517 "fmt", "%N%n%O%n%A%n%C %Z%n%S",
523 "fmt", "%N%n%O%n%A%n%C%n%S",
524 "state_name_type", "county",
528 "fmt", "%N%n%O%n%A%n%C %Z",
531 "name", "ISLE OF MAN",
532 "fmt", "%N%n%O%n%A%n%X%n%C%n%Z",
540 "fmt", "%N%n%O%n%A%n%C %Z%n%S",
542 "state_name_type", "state",
545 "name", "BRITISH INDIAN OCEAN TERRITORY",
546 "fmt", "%N%n%O%n%A%n%X%n%C%n%Z",
552 "fmt", "%O%n%N%n%A%n%C, %S%n%Z",
558 "fmt", "%N%n%O%n%A%n%Z %C",
564 "fmt", "%N%n%O%n%A%n%Z %C %S",
569 "name", "CHANNEL ISLANDS",
570 "fmt", "%N%n%O%n%A%n%X%n%C%nJERSEY%n%Z",
578 "fmt", "%N%n%O%n%A%n%C%n%S %X",
580 "state_name_type", "parish",
584 "fmt", "%N%n%O%n%A%n%C %Z",
590 "fmt", "\u3012%Z%n%S%C%n%A%n%O%n%N",
591 "lfmt", "%N%n%O%n%A%n%C, %S%n%Z",
594 "state_name_type", "prefecture",
598 "fmt", "%N%n%O%n%A%n%C%n%Z",
601 "name", "KYRGYZSTAN",
602 "fmt", "%Z %C %X%n%A%n%O%n%N",
606 "fmt", "%N%n%O%n%A%n%C %Z",
610 "fmt", "%N%n%O%n%A%n%S%n%C",
612 "state_name_type", "island",
619 "name", "SAINT KITTS AND NEVIS",
622 "fmt", "%N%n%O%n%A%n%C, %S",
624 "state_name_type", "island",
627 "name", "KOREA (REP.)",
630 "fmt", "%S %C%D%n%A%n%O%n%N%nSEOUL %Z",
631 "lfmt", "%N%n%O%n%A%n%D%n%C%n%S%nSEOUL %Z",
634 "state_name_type", "do_si",
638 "fmt", "%N%n%O%n%A%n%Z %C",
641 "name", "CAYMAN ISLANDS",
644 "fmt", "%N%n%O%n%A%n%S",
646 "state_name_type", "island",
649 "name", "KAZAKHSTAN",
650 "fmt", "%Z%n%S%n%C%n%A%n%O%n%N",
653 "name", "LAO (PEOPLE'S DEM. REP.)",
654 "fmt", "%N%n%O%n%A%n%Z %C",
658 "fmt", "%N%n%O%n%A%n%C %Z",
661 "name", "SAINT LUCIA",
664 "name", "LIECHTENSTEIN",
665 "fmt", "%O%n%N%n%A%nFL-%Z %C",
671 "fmt", "%N%n%O%n%A%n%C%n%Z",
675 "fmt", "%N%n%O%n%A%n%Z %C %X",
679 "fmt", "%N%n%O%n%A%n%C %Z",
683 "fmt", "%O%n%N%n%A%nLT-%Z %C",
687 "name", "LUXEMBOURG",
688 "fmt", "%O%n%N%n%A%nL-%Z %C",
694 "fmt", "%N%n%O%n%A%n%C, %Z",
701 "fmt", "%N%n%O%n%A%n%Z %C",
705 "fmt", "%N%n%O%n%A%nMC-%Z %C %X",
709 "name", "Rep. MOLDOVA",
710 "fmt", "%N%n%O%n%A%nMD-%Z %C",
714 "name", "MONTENEGRO",
715 "fmt", "%N%n%O%n%A%n%Z %C",
718 "name", "SAINT MARTIN",
719 "fmt", "%O%n%N%n%A%n%Z %C %X",
724 "name", "MADAGASCAR",
725 "fmt", "%N%n%O%n%A%n%Z %C",
728 "name", "MARSHALL ISLANDS",
729 "fmt", "%N%n%O%n%A%n%C %S %Z",
732 "zip_name_type", "zip",
733 "state_name_type", "state",
737 "fmt", "%N%n%O%n%A%n%Z %C",
744 "fmt", "%N%n%O%n%A%n%S %C-%X%n%Z",
749 "languages", "zh-hant",
751 "lfmt", "%N%n%O%n%A",
755 "name", "NORTHERN MARIANA ISLANDS",
756 "fmt", "%N%n%O%n%A%n%C %S %Z",
759 "zip_name_type", "zip",
760 "state_name_type", "state",
763 "name", "MARTINIQUE",
764 "fmt", "%O%n%N%n%A%n%Z %C %X",
769 "name", "MAURITANIA",
773 "name", "MONTSERRAT",
777 "fmt", "%N%n%O%n%A%n%C %Z",
782 "fmt", "%N%n%O%n%A%n%Z%n%C",
787 "fmt", "%N%n%O%n%A%n%C %Z",
791 "fmt", "%N%n%O%n%A%n%C %X",
797 "fmt", "%N%n%O%n%A%n%Z %C, %S",
800 "state_name_type", "state",
806 "fmt", "%N%n%O%n%A%n%Z %C, %S",
809 "state_name_type", "state",
812 "name", "MOZAMBIQUE",
813 "fmt", "%N%n%O%n%A%n%C",
819 "name", "NEW CALEDONIA",
820 "fmt", "%O%n%N%n%A%n%Z %C %X",
826 "fmt", "%N%n%O%n%A%n%Z %C",
829 "name", "NORFOLK ISLAND",
830 "fmt", "%O%n%N%n%A%n%C %S %Z",
837 "fmt", "%N%n%O%n%A%n%C %Z%n%S",
839 "state_name_type", "state",
845 "fmt", "%N%n%O%n%A%n%Z%n%C, %S",
847 "state_name_type", "department",
850 "name", "NETHERLANDS",
851 "fmt", "%O%n%N%n%A%n%Z %C",
856 "fmt", "%N%n%O%n%A%n%Z %C",
861 "fmt", "%N%n%O%n%A%n%C %Z",
864 "name", "NAURU CENTRAL PACIFIC",
867 "fmt", "%N%n%O%n%A%n%S",
869 "state_name_type", "district",
875 "name", "NEW ZEALAND",
876 "fmt", "%N%n%O%n%A%n%C %Z",
881 "fmt", "%N%n%O%n%A%n%Z%n%C",
884 "name", "PANAMA (REP.)",
885 "fmt", "%N%n%O%n%A%n%C%n%S",
892 "name", "FRENCH POLYNESIA",
893 "fmt", "%N%n%O%n%A%n%Z %C %S",
896 "state_name_type", "island",
899 "name", "PAPUA NEW GUINEA",
900 "fmt", "%N%n%O%n%A%n%C %Z %S",
904 "name", "PHILIPPINES",
905 "fmt", "%N%n%O%n%A%n%Z %C%n%S",
910 "fmt", "%N%n%O%n%A%n%C-%Z",
914 "fmt", "%N%n%O%n%A%n%Z %C",
918 "name", "ST. PIERRE AND MIQUELON",
919 "fmt", "%O%n%N%n%A%n%Z %C %X",
925 "fmt", "%N%n%O%n%A%n%X%n%C%n%Z",
930 "name", "PUERTO RICO",
931 "fmt", "%N%n%O%n%A%n%C PR %Z",
934 "zip_name_type", "zip",
938 "name", "PALESTINIAN TERRITORY",
942 "fmt", "%N%n%O%n%A%n%Z %C",
947 "fmt", "%N%n%O%n%A%n%C %S %Z",
950 "zip_name_type", "zip",
951 "state_name_type", "state",
955 "fmt", "%N%n%O%n%A%n%Z %C",
963 "fmt", "%O%n%N%n%A%n%Z %C %X",
969 "fmt", "%N%n%O%n%A%n%Z %C",
973 "name", "REPUBLIC OF SERBIA",
974 "fmt", "%N%n%O%n%A%n%Z %C",
977 "name", "RUSSIAN FEDERATION",
978 "fmt", "%N%n%O%n%A%n%C%n%S%n%Z",
980 "state_name_type", "oblast",
988 "name", "SAUDI ARABIA",
989 "fmt", "%N%n%O%n%A%n%C %Z",
992 "name", "SOLOMON ISLANDS",
995 "name", "SEYCHELLES",
996 "fmt", "%N%n%O%n%A%n%C%n%S",
998 "state_name_type", "island",
1002 "fmt", "%O%n%N%n%A%nSE-%Z %C",
1004 "postprefix", "SE-",
1007 "name", "REP. OF SINGAPORE",
1008 "fmt", "%N%n%O%n%A%nSINGAPORE %Z",
1012 "name", "SAINT HELENA",
1013 "fmt", "%N%n%O%n%A%n%X%n%C%n%Z",
1019 "fmt", "%N%n%O%n%A%nSI- %Z %C",
1020 "postprefix", "SI-",
1023 "name", "SVALBARD AND JAN MAYEN ISLANDS",
1024 "fmt", "%N%n%O%n%A%n%Z %C",
1029 "fmt", "%N%n%O%n%A%n%Z %C",
1032 "name", "SIERRA LEONE",
1035 "name", "SAN MARINO",
1036 "fmt", "%N%n%O%n%A%n%Z %C",
1041 "fmt", "%N%n%O%n%A%n%Z %C",
1047 "fmt", "%N%n%O%n%A%n%C, %S %Z",
1055 "fmt", "%N%n%O%n%A%n%C %X%n%S",
1059 "name", "SAO TOME AND PRINCIPE",
1060 "fmt", "%N%n%O%n%A%n%C %X",
1063 "name", "EL SALVADOR",
1066 "fmt", "%N%n%O%n%A%n%Z-%C%n%S",
1071 "name", "SWAZILAND",
1072 "fmt", "%N%n%O%n%A%n%C%n%Z",
1076 "name", "TRISTAN DA CUNHA",
1079 "name", "TURKS AND CAICOS ISLANDS",
1080 "fmt", "%N%n%O%n%A%n%X%n%C%n%Z",
1088 "name", "FRENCH SOUTHERN TERRITORIES",
1097 "fmt", "%N%n%O%n%A%n%D %C%n%S %Z",
1098 "lfmt", "%N%n%O%n%A%n%D, %C%n%S %Z",
1102 "name", "TAJIKISTAN",
1103 "fmt", "%N%n%O%n%A%n%Z %C",
1109 "name", "TIMOR-LESTE",
1112 "name", "TURKMENISTAN",
1113 "fmt", "%N%n%O%n%A%n%Z %C",
1117 "fmt", "%N%n%O%n%A%n%Z %C",
1124 "fmt", "%N%n%O%n%A%n%Z %C/%S",
1126 "locality_name_type", "district",
1129 "name", "TRINIDAD AND TOBAGO",
1135 "fmt", "%N%n%O%n%A%n%X%n%C%n%S",
1137 "state_name_type", "island",
1142 "languages", "zh-hant",
1143 "fmt", "%Z%n%S%C%n%A%n%O%n%N",
1144 "lfmt", "%N%n%O%n%A%n%C, %S %Z",
1146 "state_name_type", "county",
1149 "name", "TANZANIA (UNITED REP.)",
1153 "fmt", "%Z %C%n%A%n%O%n%N",
1159 "name", "UNITED STATES MINOR OUTLYING ISLANDS",
1160 "fmt", "%N%n%O%n%A%n%C %S %Z",
1163 "zip_name_type", "zip",
1164 "state_name_type", "state",
1167 "name", "UNITED STATES",
1170 "fmt", "%N%n%O%n%A%n%C, %S %Z",
1173 "zip_name_type", "zip",
1174 "state_name_type", "state",
1180 "fmt", "%N%n%O%n%A%n%Z %C %S",
1184 "name", "UZBEKISTAN",
1185 "fmt", "%N%n%O%n%A%n%Z %C%n%S",
1190 "fmt", "%N%n%O%n%A%n%Z %C",
1193 "name", "SAINT VINCENT AND THE GRENADINES (ANTILLES)",
1196 "name", "VENEZUELA",
1199 "fmt", "%N%n%O%n%A%n%C %Z, %S",
1204 "name", "VIRGIN ISLANDS (BRITISH)",
1208 "name", "VIRGIN ISLANDS (U.S.)",
1209 "fmt", "%N%n%O%n%A%n%C %S %Z",
1212 "zip_name_type", "zip",
1213 "state_name_type", "state",
1219 "fmt", "%N%n%O%n%A%n%C%n%S",
1220 "lfmt", "%N%n%O%n%A%n%C%n%S",
1227 "name", "WALLIS AND FUTUNA ISLANDS",
1228 "fmt", "%O%n%N%n%A%n%Z %C %X",
1237 "fmt", "%N%n%O%n%A%n%Z %C"
1245 "fmt", "%O%n%N%n%A%n%Z %C %X",
1250 "name", "SERBIA AND MONTENEGRO",
1251 "fmt", "%N%n%O%n%A%n%Z %C",
1254 "name", "SOUTH AFRICA",
1255 "fmt", "%N%n%O%n%A%n%C%n%Z",
1260 "fmt", "%N%n%O%n%A%n%Z %C",
1267 "fmt", "%N%n%O%n%A%n%C",
1270 "zip_name_type", "postal",
1271 "state_name_type", "province",
1272 "locality_name_type", "city",
1275 private String jsonString;
1277 private RegionDataEnum(String[] inputArray) {
1278 jsonString = convertArrayToJsonString(inputArray);
1281 String getJsonString() {
1287 for (RegionDataEnum region : RegionDataEnum.values()) {
1288 COUNTRY_FORMAT_MAP.put(region.toString(), region.getJsonString());
1292 static Map<String, String> getCountryFormatMap() {
1293 return COUNTRY_FORMAT_MAP;
1297 * Assumes the array is a well-formed array - i.e., there are no unmatched keys in the input.
1298 * Package-private so it can be accessed by tests.
1300 static String convertArrayToJsonString(String[] input) {
1301 JSONObject object = new JSONObject();
1302 for (int i = 0; i < input.length; i += 2) {
1304 object.put(input[i], input[i + 1]);
1305 } catch (JSONException e) {
1309 return object.toString();