• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2010 Google Inc.
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 com.android.i18n.addressinput;
18 
19 import org.json.JSONException;
20 import org.json.JSONObject;
21 
22 import java.util.HashMap;
23 import java.util.Map;
24 
25 /**
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
28  * editing.
29  */
30 class RegionDataConstants {
31 
32     private static final Map<String, String> COUNTRY_FORMAT_MAP =
33             new HashMap<String, String>();
34 
35     private enum RegionDataEnum {
36 
37         AC(new String[]{
38             "name", "ASCENSION ISLAND",
39         }),
40         AD(new String[]{
41                 "name", "ANDORRA",
42                 "lang", "ca",
43                 "languages", "ca",
44                 "fmt", "%N%n%O%n%A%n%Z %S",
45                 "require", "AS",
46                 "upper", "S",
47                 "state_name_type", "parish",
48         }),
49         AE(new String[]{
50                 "name", "UNITED ARAB EMIRATES",
51                 "fmt", "%N%n%O%n%A%n%C",
52                 "require", "AC",
53         }),
54         AF(new String[]{
55                 "name", "AFGHANISTAN",
56         }),
57         AG(new String[]{
58                 "name", "ANTIGUA AND BARBUDA",
59                 "require", "A",
60         }),
61         AI(new String[]{
62                 "name", "ANGUILLA",
63         }),
64         AL(new String[]{
65                 "name", "ALBANIA",
66         }),
67         AM(new String[]{
68                 "name", "ARMENIA",
69                 "lang", "hy",
70                 "languages", "hy",
71                 "fmt", "%N%n%O%n%A%n%Z%n%C%n%S",
72                 "lfmt", "%N%n%O%n%A%n%Z%n%C%n%S",
73         }),
74         AN(new String[]{
75                 "name", "NETHERLANDS ANTILLES",
76         }),
77         AO(new String[]{
78                 "name", "ANGOLA",
79         }),
80         AQ(new String[]{
81                 "name", "ANTARCTICA",
82         }),
83         AR(new String[]{
84                 "name", "ARGENTINA",
85                 "lang", "es",
86                 "languages", "es",
87                 "fmt", "%N%n%O%n%A%n%Z %C%n%S",
88                 "upper", "ACZ",
89                 "state_name_type", "state",
90         }),
91         AS(new String[]{
92                 "name", "AMERICAN SAMOA",
93                 "fmt", "%N%n%O%n%A%n%C %S %Z",
94                 "require", "ACSZ",
95                 "upper", "ACNOS",
96                 "zip_name_type", "zip",
97                 "state_name_type", "state",
98         }),
99         AT(new String[]{
100                 "name", "AUSTRIA",
101                 "fmt", "%O%n%N%n%A%n%Z %C",
102                 "require", "ACZ",
103         }),
104         AU(new String[]{
105                 "name", "AUSTRALIA",
106                 "lang", "en",
107                 "languages", "en",
108                 "fmt", "%O%n%N%n%A%n%C %S %Z",
109                 "require", "ACSZ",
110                 "upper", "CS",
111                 "state_name_type", "state",
112         }),
113         AW(new String[]{
114                 "name", "ARUBA",
115         }),
116         AX(new String[]{
117                 "name", "FINLAND",
118                 "fmt", "%O%n%N%n%A%nAX-%Z %C%n\u00C5LAND",
119                 "require", "ACZ",
120                 "postprefix", "AX-",
121         }),
122         AZ(new String[]{
123                 "name", "AZERBAIJAN",
124                 "fmt", "%N%n%O%n%A%nAZ %Z %C",
125                 "postprefix", "AZ ",
126         }),
127         BA(new String[]{
128                 "name", "BOSNIA AND HERZEGOVINA",
129                 "fmt", "%N%n%O%n%A%n%Z %C",
130         }),
131         BB(new String[]{
132                 "name", "BARBADOS",
133                 "state_name_type", "parish",
134         }),
135         BD(new String[]{
136                 "name", "BANGLADESH",
137                 "fmt", "%N%n%O%n%A%n%C - %Z",
138         }),
139         BE(new String[]{
140                 "name", "BELGIUM",
141                 "fmt", "%O%n%N%n%A%n%Z %C",
142                 "require", "ACZ",
143         }),
144         BF(new String[]{
145                 "name", "BURKINA FASO",
146                 "fmt", "%N%n%O%n%A%n%C %X",
147         }),
148         BG(new String[]{
149                 "name", "BULGARIA (REP.)",
150                 "fmt", "%N%n%O%n%A%n%Z %C",
151         }),
152         BH(new String[]{
153                 "name", "BAHRAIN",
154                 "fmt", "%N%n%O%n%A%n%C %Z",
155         }),
156         BI(new String[]{
157                 "name", "BURUNDI",
158         }),
159         BJ(new String[]{
160                 "name", "BENIN",
161                 "upper", "AC",
162         }),
163         BL(new String[]{
164                 "name", "SAINT BARTHELEMY",
165                 "fmt", "%O%n%N%n%A%n%Z %C %X",
166                 "upper", "ACX",
167                 "require", "ACZ",
168         }),
169         BM(new String[]{
170                 "name", "BERMUDA",
171                 "fmt", "%N%n%O%n%A%n%C %Z",
172         }),
173         BN(new String[]{
174                 "name", "BRUNEI DARUSSALAM",
175                 "fmt", "%N%n%O%n%A%n%C %Z",
176         }),
177         BO(new String[]{
178                 "name", "BOLIVIA",
179                 "upper", "AC",
180         }),
181         BR(new String[]{
182                 "name", "BRAZIL",
183                 "lang", "pt",
184                 "languages", "pt",
185                 "fmt", "%O%n%N%n%A%n%C-%S%n%Z",
186                 "require", "ASCZ",
187                 "upper", "CS",
188                 "state_name_type", "state",
189         }),
190         BS(new String[]{
191                 "name", "BAHAMAS",
192                 "lang", "en",
193                 "languages", "en",
194                 "fmt", "%N%n%O%n%A%n%C, %S",
195                 "state_name_type", "island",
196         }),
197         BT(new String[]{
198                 "name", "BHUTAN",
199         }),
200         BV(new String[]{
201                 "name", "BOUVET ISLAND",
202         }),
203         BW(new String[]{
204                 "name", "BOTSWANA",
205         }),
206         BY(new String[]{
207                 "name", "BELARUS",
208                 "fmt", "%S%n%Z %C %X%n%A%n%O%n%N",
209         }),
210         BZ(new String[]{
211                 "name", "BELIZE",
212         }),
213         CA(new String[]{
214                 "name", "CANADA",
215                 "lang", "en",
216                 "languages", "en~fr",
217                 "fmt", "%N%n%O%n%A%n%C %S %Z",
218                 "require", "ACSZ",
219                 "upper", "ACNOSZ",
220         }),
221         CC(new String[]{
222                 "name", "COCOS (KEELING) ISLANDS",
223                 "fmt", "%O%n%N%n%A%n%C %S %Z",
224                 "upper", "CS",
225         }),
226         CD(new String[]{
227                 "name", "CONGO (DEM. REP.)",
228                 "fmt", "%N%n%O%n%A%n%C %X",
229         }),
230         CF(new String[]{
231                 "name", "CENTRAL AFRICAN REPUBLIC",
232         }),
233         CG(new String[]{
234                 "name", "CONGO (REP.)",
235         }),
236         CH(new String[]{
237                 "name", "SWITZERLAND",
238                 "lang", "de",
239                 "languages", "de~fr~it",
240                 "fmt", "%O%n%N%n%A%nCH-%Z %C",
241                 "require", "ACZ",
242                 "upper", "",
243                 "postprefix", "CH-",
244         }),
245         CI(new String[]{
246                 "name", "COTE D'IVOIRE",
247                 "fmt", "%N%n%O%n%X %A %C %X",
248         }),
249         CK(new String[]{
250                 "name", "COOK ISLANDS",
251                 "fmt", "%N%n%O%n%A%n%C %Z",
252         }),
253         CL(new String[]{
254                 "name", "CHILE",
255                 "lang", "es",
256                 "languages", "es",
257                 "fmt", "%N%n%O%n%A%n%Z %C%n%S",
258                 "state_name_type", "state",
259         }),
260         CM(new String[]{
261                 "name", "CAMEROON",
262         }),
263         CN(new String[]{
264                 "name", "P.R. CHINA",
265                 "lang", "zh-hans",
266                 "languages", "zh-hans",
267                 "fmt", "%Z%n%S%C%D%n%A%n%O%n%N",
268                 "lfmt", "%N%n%O%n%A%n%D%n%C%n%S, %Z",
269                 "require", "ACSZ",
270                 "upper", "S",
271         }),
272         CO(new String[]{
273                 "name", "COLOMBIA",
274                 "fmt", "%N%n%O%n%A%n%C, %S",
275         }),
276         CR(new String[]{
277                 "name", "COSTA RICA",
278                 "fmt", "%N%n%O%n%A%n%Z %C",
279         }),
280         CS(new String[]{
281                 "name", "SERBIA AND MONTENEGRO",
282                 "fmt", "%N%n%O%n%A%n%Z %C",
283         }),
284         CV(new String[]{
285                 "name", "CAPE VERDE",
286                 "lang", "pt",
287                 "languages", "pt",
288                 "fmt", "%N%n%O%n%A%n%Z %C%n%S",
289                 "state_name_type", "island",
290         }),
291         CX(new String[]{
292                 "name", "CHRISTMAS ISLAND",
293                 "fmt", "%O%n%N%n%A%n%C %S %Z",
294                 "upper", "CS",
295         }),
296         CY(new String[]{
297                 "name", "CYPRUS",
298                 "fmt", "%N%n%O%n%A%n%Z %C",
299         }),
300         CZ(new String[]{
301                 "name", "CZECH REP.",
302                 "fmt", "%N%n%O%n%A%n%Z %C",
303         }),
304         DE(new String[]{
305                 "name", "GERMANY",
306                 "fmt", "%N%n%O%n%A%n%Z %C",
307                 "require", "ACZ",
308         }),
309         DJ(new String[]{
310                 "name", "DJIBOUTI",
311         }),
312         DK(new String[]{
313                 "name", "DENMARK",
314                 "fmt", "%O%n%N%n%A%n%Z %C",
315                 "require", "ACZ",
316         }),
317         DM(new String[]{
318                 "name", "DOMINICA",
319         }),
320         DO(new String[]{
321                 "name", "DOMINICAN REP.",
322                 "fmt", "%N%n%O%n%A%n%Z %C",
323         }),
324         DZ(new String[]{
325                 "name", "ALGERIA",
326                 "fmt", "%N%n%O%n%A%n%Z %C",
327         }),
328         EC(new String[]{
329                 "name", "ECUADOR",
330                 "fmt", "%N%n%O%n%A%n%Z%n%C",
331                 "upper", "CZ",
332         }),
333         EE(new String[]{
334                 "name", "ESTONIA",
335                 "fmt", "%N%n%O%n%A%n%Z %C",
336         }),
337         EG(new String[]{
338                 "name", "EGYPT",
339                 "fmt", "%N%n%O%n%A%n%C%n%S%n%Z",
340                 "lfmt", "%N%n%O%n%A%n%C%n%S%n%Z",
341         }),
342         EH(new String[]{
343                 "name", "WESTERN SAHARA",
344         }),
345         ER(new String[]{
346                 "name", "ERITREA",
347         }),
348         ES(new String[]{
349                 "name", "SPAIN",
350                 "lang", "es",
351                 "languages", "es",
352                 "fmt", "%N%n%O%n%A%n%Z %C %S",
353                 "require", "ACSZ",
354                 "upper", "CS",
355         }),
356         ET(new String[]{
357                 "name", "ETHIOPIA",
358                 "fmt", "%N%n%O%n%A%n%Z %C",
359         }),
360         FI(new String[]{
361                 "name", "FINLAND",
362                 "fmt", "%O%n%N%n%A%nFI-%Z %C",
363                 "require", "ACZ",
364                 "postprefix", "FI-",
365         }),
366         FJ(new String[]{
367                 "name", "FIJI",
368         }),
369         FK(new String[]{
370                 "name", "FALKLAND ISLANDS (MALVINAS)",
371                 "fmt", "%N%n%O%n%A%n%X%n%C%n%Z",
372                 "require", "ACZ",
373                 "upper", "CZ",
374         }),
375         FM(new String[]{
376                 "name", "MICRONESIA (Federated State of)",
377                 "fmt", "%N%n%O%n%A%n%C %S %Z",
378                 "require", "ACSZ",
379                 "upper", "ACNOS",
380                 "zip_name_type", "zip",
381                 "state_name_type", "state",
382         }),
383         FO(new String[]{
384                 "name", "FAROE ISLANDS",
385                 "fmt", "%N%n%O%n%A%nFO%Z %C",
386                 "postprefix", "FO",
387         }),
388         FR(new String[]{
389                 "name", "FRANCE",
390                 "fmt", "%O%n%N%n%A%n%Z %C %X",
391                 "require", "ACZ",
392                 "upper", "CX",
393         }),
394         GA(new String[]{
395                 "name", "GABON",
396         }),
397         GB(new String[]{
398                 "name", "UNITED KINGDOM",
399                 "fmt", "%N%n%O%n%A%n%C%n%S%n%Z",
400                 "require", "ACZ",
401                 "upper", "CZ",
402                 "state_name_type", "county",
403         }),
404         GD(new String[]{
405                 "name", "GRENADA (WEST INDIES)",
406         }),
407         GE(new String[]{
408                 "name", "GEORGIA",
409                 "fmt", "%N%n%O%n%A%n%Z %C",
410         }),
411         GF(new String[]{
412                 "name", "FRENCH GUIANA",
413                 "fmt", "%O%n%N%n%A%n%Z %C %X",
414                 "require", "ACZ",
415                 "upper", "ACX",
416         }),
417         GG(new String[]{
418                 "name", "CHANNEL ISLANDS",
419                 "fmt", "%N%n%O%n%A%n%X%n%C%nGUERNSEY%n%Z",
420                 "require", "ACZ",
421                 "upper", "CZ",
422         }),
423         GH(new String[]{
424                 "name", "GHANA",
425         }),
426         GI(new String[]{
427                 "name", "GIBRALTAR",
428                 "fmt", "%N%n%O%n%A",
429                 "require", "A",
430         }),
431         GL(new String[]{
432                 "name", "GREENLAND",
433                 "fmt", "%N%n%O%n%A%n%Z %C",
434                 "require", "ACZ",
435         }),
436         GM(new String[]{
437                 "name", "GAMBIA",
438         }),
439         GN(new String[]{
440                 "name", "GUINEA",
441                 "fmt", "%N%n%O%n%Z %A %C",
442         }),
443         GP(new String[]{
444                 "name", "GUADELOUPE",
445                 "fmt", "%O%n%N%n%A%n%Z %C %X",
446                 "require", "ACZ",
447                 "upper", "ACX",
448         }),
449         GQ(new String[]{
450                 "name", "EQUATORIAL GUINEA",
451         }),
452         GR(new String[]{
453                 "name", "GREECE",
454                 "fmt", "%N%n%O%n%A%n%Z %C",
455                 "require", "ACZ",
456         }),
457         GS(new String[]{
458                 "name", "SOUTH GEORGIA",
459                 "fmt", "%N%n%O%n%A%n%X%n%C%n%Z",
460                 "require", "ACZ",
461                 "upper", "CZ",
462         }),
463         GT(new String[]{
464                 "name", "GUATEMALA",
465                 "fmt", "%N%n%O%n%A%n%Z- %C",
466         }),
467         GU(new String[]{
468                 "name", "GUAM",
469                 "fmt", "%N%n%O%n%A%n%C %S %Z",
470                 "require", "ACSZ",
471                 "upper", "ACNOS",
472                 "zip_name_type", "zip",
473                 "state_name_type", "state",
474         }),
475         GW(new String[]{
476                 "name", "GUINEA-BISSAU",
477                 "fmt", "%N%n%O%n%A%n%Z %C",
478         }),
479         GY(new String[]{
480                 "name", "GUYANA",
481         }),
482         HK(new String[]{
483                 "name", "HONG KONG",
484                 "lang", "zh",
485                 "languages", "zh",
486                 "fmt", "%S%n%A%n%O%n%N",
487                 "lfmt", "%N%n%O%n%A%n%S",
488                 "require", "AS",
489                 "upper", "S",
490                 "state_name_type", "area",
491         }),
492         HM(new String[]{
493                 "name", "HEARD AND MCDONALD ISLANDS",
494                 "fmt", "%O%n%N%n%A%n%C %S %Z",
495                 "upper", "CS",
496         }),
497         HN(new String[]{
498                 "name", "HONDURAS",
499                 "fmt", "%N%n%O%n%A%n%C, %S%n%Z",
500                 "require", "ACS",
501         }),
502         HR(new String[]{
503                 "name", "CROATIA",
504                 "fmt", "%N%n%O%n%A%nHR-%Z %C",
505                 "postprefix", "HR-",
506         }),
507         HT(new String[]{
508                 "name", "HAITI",
509                 "fmt", "%N%n%O%n%A%nHT%Z %C %X",
510                 "postprefix", "HT",
511         }),
512         HU(new String[]{
513                 "name", "HUNGARY (Rep.)",
514                 "fmt", "%N%n%O%n%C%n%A%n%Z",
515                 "upper", "ACNO",
516         }),
517         ID(new String[]{
518                 "name", "INDONESIA",
519                 "fmt", "%N%n%O%n%A%n%C %Z%n%S",
520         }),
521         IE(new String[]{
522                 "name", "IRELAND",
523                 "lang", "en",
524                 "languages", "en",
525                 "fmt", "%N%n%O%n%A%n%C%n%S",
526                 "state_name_type", "county",
527         }),
528         IL(new String[]{
529                 "name", "ISRAEL",
530                 "fmt", "%N%n%O%n%A%n%C %Z",
531         }),
532         IM(new String[]{
533                 "name", "ISLE OF MAN",
534                 "fmt", "%N%n%O%n%A%n%X%n%C%n%Z",
535                 "require", "ACZ",
536                 "upper", "CZ",
537         }),
538         IN(new String[]{
539                 "name", "INDIA",
540                 "lang", "en",
541                 "languages", "en",
542                 "fmt", "%N%n%O%n%A%n%C %Z%n%S",
543                 "require", "ACSZ",
544                 "state_name_type", "state",
545         }),
546         IO(new String[]{
547                 "name", "BRITISH INDIAN OCEAN TERRITORY",
548                 "fmt", "%N%n%O%n%A%n%X%n%C%n%Z",
549                 "require", "ACZ",
550                 "upper", "CZ",
551         }),
552         IQ(new String[]{
553                 "name", "IRAQ",
554                 "fmt", "%O%n%N%n%A%n%C, %S%n%Z",
555                 "require", "ACS",
556                 "upper", "CS",
557         }),
558         IS(new String[]{
559                 "name", "ICELAND",
560                 "fmt", "%N%n%O%n%A%n%Z %C",
561         }),
562         IT(new String[]{
563                 "name", "ITALY",
564                 "lang", "it",
565                 "languages", "it",
566                 "fmt", "%N%n%O%n%A%n%Z %C %S",
567                 "require", "ACSZ",
568                 "upper", "CS",
569         }),
570         JE(new String[]{
571                 "name", "CHANNEL ISLANDS",
572                 "fmt", "%N%n%O%n%A%n%X%n%C%nJERSEY%n%Z",
573                 "require", "ACZ",
574                 "upper", "CZ",
575         }),
576         JM(new String[]{
577                 "name", "JAMAICA",
578                 "lang", "en",
579                 "languages", "en",
580                 "fmt", "%N%n%O%n%A%n%C%n%S %X",
581                 "require", "ACS",
582                 "state_name_type", "parish",
583         }),
584         JO(new String[]{
585                 "name", "JORDAN",
586                 "fmt", "%N%n%O%n%A%n%C %Z",
587         }),
588         JP(new String[]{
589                 "name", "JAPAN",
590                 "lang", "ja",
591                 "languages", "ja",
592                 "fmt", "\u3012%Z%n%S%C%n%A%n%O%n%N",
593                 "lfmt", "%N%n%O%n%A%n%C, %S%n%Z",
594                 "require", "ACSZ",
595                 "upper", "S",
596                 "state_name_type", "prefecture",
597         }),
598         KE(new String[]{
599                 "name", "KENYA",
600                 "fmt", "%N%n%O%n%A%n%C%n%Z",
601         }),
602         KG(new String[]{
603                 "name", "KYRGYZSTAN",
604                 "fmt", "%Z %C %X%n%A%n%O%n%N",
605         }),
606         KH(new String[]{
607                 "name", "CAMBODIA",
608                 "fmt", "%N%n%O%n%A%n%C %Z",
609         }),
610         KI(new String[]{
611                 "name", "KIRIBATI",
612                 "fmt", "%N%n%O%n%A%n%S%n%C",
613                 "upper", "ACNOS",
614                 "state_name_type", "island",
615         }),
616         KM(new String[]{
617                 "name", "COMOROS",
618                 "upper", "AC",
619         }),
620         KN(new String[]{
621                 "name", "SAINT KITTS AND NEVIS",
622                 "lang", "en",
623                 "languages", "en",
624                 "fmt", "%N%n%O%n%A%n%C, %S",
625                 "require", "ACS",
626                 "state_name_type", "island",
627         }),
628         KR(new String[]{
629                 "name", "KOREA (REP.)",
630                 "lang", "ko",
631                 "languages", "ko",
632                 "fmt", "%S %C%D%n%A%n%O%n%N%nSEOUL %Z",
633                 "lfmt", "%N%n%O%n%A%n%D%n%C%n%S%nSEOUL %Z",
634                 "require", "ACSZ",
635                 "upper", "Z",
636                 "state_name_type", "do_si",
637         }),
638         KW(new String[]{
639                 "name", "KUWAIT",
640                 "fmt", "%N%n%O%n%A%n%Z %C",
641         }),
642         KY(new String[]{
643                 "name", "CAYMAN ISLANDS",
644                 "lang", "en",
645                 "languages", "en",
646                 "fmt", "%N%n%O%n%A%n%S",
647                 "require", "AS",
648                 "state_name_type", "island",
649         }),
650         KZ(new String[]{
651                 "name", "KAZAKHSTAN",
652                 "fmt", "%Z%n%S%n%C%n%A%n%O%n%N",
653         }),
654         LA(new String[]{
655                 "name", "LAO (PEOPLE'S DEM. REP.)",
656                 "fmt", "%N%n%O%n%A%n%Z %C",
657         }),
658         LB(new String[]{
659                 "name", "LEBANON",
660                 "fmt", "%N%n%O%n%A%n%C %Z",
661         }),
662         LC(new String[]{
663                 "name", "SAINT LUCIA",
664         }),
665         LI(new String[]{
666                 "name", "LIECHTENSTEIN",
667                 "fmt", "%O%n%N%n%A%nFL-%Z %C",
668                 "require", "ACZ",
669                 "postprefix", "FL-",
670         }),
671         LK(new String[]{
672                 "name", "SRI LANKA",
673                 "fmt", "%N%n%O%n%A%n%C%n%Z",
674         }),
675         LR(new String[]{
676                 "name", "LIBERIA",
677                 "fmt", "%N%n%O%n%A%n%Z %C %X",
678         }),
679         LS(new String[]{
680                 "name", "LESOTHO",
681                 "fmt", "%N%n%O%n%A%n%C %Z",
682         }),
683         LT(new String[]{
684                 "name", "LITHUANIA",
685                 "fmt", "%O%n%N%n%A%nLT-%Z %C",
686                 "postprefix", "LT-",
687         }),
688         LU(new String[]{
689                 "name", "LUXEMBOURG",
690                 "fmt", "%O%n%N%n%A%nL-%Z %C",
691                 "require", "ACZ",
692                 "postprefix", "L-",
693         }),
694         LV(new String[]{
695                 "name", "LATVIA",
696                 "fmt", "%N%n%O%n%A%n%C, %Z",
697         }),
698         LY(new String[]{
699                 "name", "LIBYA",
700         }),
701         MA(new String[]{
702                 "name", "MOROCCO",
703                 "fmt", "%N%n%O%n%A%n%Z %C",
704         }),
705         MC(new String[]{
706                 "name", "MONACO",
707                 "fmt", "%N%n%O%n%A%nMC-%Z %C %X",
708                 "postprefix", "MC-",
709         }),
710         MD(new String[]{
711                 "name", "Rep. MOLDOVA",
712                 "fmt", "%N%n%O%n%A%nMD-%Z %C",
713                 "postprefix", "MD-",
714         }),
715         ME(new String[]{
716                 "name", "MONTENEGRO",
717                 "fmt", "%N%n%O%n%A%n%Z %C",
718         }),
719         MF(new String[]{
720                 "name", "SAINT MARTIN",
721                 "fmt", "%O%n%N%n%A%n%Z %C %X",
722                 "upper", "ACX",
723                 "require", "ACZ",
724         }),
725         MG(new String[]{
726                 "name", "MADAGASCAR",
727                 "fmt", "%N%n%O%n%A%n%Z %C",
728         }),
729         MH(new String[]{
730                 "name", "MARSHALL ISLANDS",
731                 "fmt", "%N%n%O%n%A%n%C %S %Z",
732                 "require", "ACSZ",
733                 "upper", "ACNOS",
734                 "zip_name_type", "zip",
735                 "state_name_type", "state",
736         }),
737         MK(new String[]{
738                 "name", "MACEDONIA",
739                 "fmt", "%N%n%O%n%A%n%Z %C",
740         }),
741         ML(new String[]{
742                 "name", "MALI",
743         }),
744         MN(new String[]{
745                 "name", "MONGOLIA",
746                 "fmt", "%N%n%O%n%A%n%S %C-%X%n%Z",
747         }),
748         MO(new String[]{
749                 "name", "MACAO",
750                 "lang", "zh-hant",
751                 "languages", "zh-hant",
752                 "fmt", "%A%n%O%n%N",
753                 "lfmt", "%N%n%O%n%A",
754                 "require", "A",
755         }),
756         MP(new String[]{
757                 "name", "NORTHERN MARIANA ISLANDS",
758                 "fmt", "%N%n%O%n%A%n%C %S %Z",
759                 "require", "ACSZ",
760                 "upper", "ACNOS",
761                 "zip_name_type", "zip",
762                 "state_name_type", "state",
763         }),
764         MQ(new String[]{
765                 "name", "MARTINIQUE",
766                 "fmt", "%O%n%N%n%A%n%Z %C %X",
767                 "require", "ACZ",
768                 "upper", "ACX",
769         }),
770         MR(new String[]{
771                 "name", "MAURITANIA",
772                 "upper", "AC",
773         }),
774         MS(new String[]{
775                 "name", "MONTSERRAT",
776         }),
777         MT(new String[]{
778                 "name", "MALTA",
779                 "fmt", "%N%n%O%n%A%n%C %Z",
780                 "upper", "CZ",
781         }),
782         MU(new String[]{
783                 "name", "MAURITIUS",
784                 "fmt", "%N%n%O%n%A%n%Z%n%C",
785                 "upper", "CZ",
786         }),
787         MV(new String[]{
788                 "name", "MALDIVES",
789                 "fmt", "%N%n%O%n%A%n%C %Z",
790         }),
791         MW(new String[]{
792                 "name", "MALAWI",
793                 "fmt", "%N%n%O%n%A%n%C %X",
794         }),
795         MX(new String[]{
796                 "name", "MEXICO",
797                 "lang", "es",
798                 "languages", "es",
799                 "fmt", "%N%n%O%n%A%n%Z %C, %S",
800                 "require", "ACZ",
801                 "upper", "CSZ",
802                 "state_name_type", "state",
803         }),
804         MY(new String[]{
805                 "name", "MALAYSIA",
806                 "lang", "ms",
807                 "languages", "ms",
808                 "fmt", "%N%n%O%n%A%n%Z %C, %S",
809                 "require", "ACZ",
810                 "upper", "CS",
811                 "state_name_type", "state",
812         }),
813         MZ(new String[]{
814                 "name", "MOZAMBIQUE",
815                 "fmt", "%N%n%O%n%A%n%C",
816         }),
817         NA(new String[]{
818                 "name", "NAMIBIA",
819         }),
820         NC(new String[]{
821                 "name", "NEW CALEDONIA",
822                 "fmt", "%O%n%N%n%A%n%Z %C %X",
823                 "require", "ACZ",
824                 "upper", "ACX",
825         }),
826         NE(new String[]{
827                 "name", "NIGER",
828                 "fmt", "%N%n%O%n%A%n%Z %C",
829         }),
830         NF(new String[]{
831                 "name", "NORFOLK ISLAND",
832                 "fmt", "%O%n%N%n%A%n%C %S %Z",
833                 "upper", "CS",
834         }),
835         NG(new String[]{
836                 "name", "NIGERIA",
837                 "lang", "fr",
838                 "languages", "fr",
839                 "fmt", "%N%n%O%n%A%n%C %Z%n%S",
840                 "upper", "CS",
841                 "state_name_type", "state",
842         }),
843         NI(new String[]{
844                 "name", "NICARAGUA",
845                 "lang", "es",
846                 "languages", "es",
847                 "fmt", "%N%n%O%n%A%n%Z%n%C, %S",
848                 "upper", "CS",
849                 "state_name_type", "department",
850         }),
851         NL(new String[]{
852                 "name", "NETHERLANDS",
853                 "fmt", "%O%n%N%n%A%n%Z %C",
854                 "require", "ACZ",
855         }),
856         NO(new String[]{
857                 "name", "NORWAY",
858                 "fmt", "%N%n%O%n%A%n%Z %C",
859                 "require", "ACZ",
860         }),
861         NP(new String[]{
862                 "name", "NEPAL",
863                 "fmt", "%N%n%O%n%A%n%C %Z",
864         }),
865         NR(new String[]{
866                 "name", "NAURU CENTRAL PACIFIC",
867                 "lang", "en",
868                 "languages", "en",
869                 "fmt", "%N%n%O%n%A%n%S",
870                 "require", "AS",
871                 "state_name_type", "district",
872         }),
873         NU(new String[]{
874                 "name", "NIUE",
875         }),
876         NZ(new String[]{
877                 "name", "NEW ZEALAND",
878                 "fmt", "%N%n%O%n%A%n%C %Z",
879                 "require", "ACZ",
880         }),
881         OM(new String[]{
882                 "name", "OMAN",
883                 "fmt", "%N%n%O%n%A%n%Z%n%C",
884         }),
885         PA(new String[]{
886                 "name", "PANAMA (REP.)",
887                 "fmt", "%N%n%O%n%A%n%C%n%S",
888                 "upper", "CS",
889         }),
890         PE(new String[]{
891                 "name", "PERU",
892         }),
893         PF(new String[]{
894                 "name", "FRENCH POLYNESIA",
895                 "fmt", "%N%n%O%n%A%n%Z %C %S",
896                 "require", "ACSZ",
897                 "upper", "CS",
898                 "state_name_type", "island",
899         }),
900         PG(new String[]{
901                 "name", "PAPUA NEW GUINEA",
902                 "fmt", "%N%n%O%n%A%n%C %Z %S",
903                 "require", "ACS",
904         }),
905         PH(new String[]{
906                 "name", "PHILIPPINES",
907                 "fmt", "%N%n%O%n%A%n%Z %C%n%S",
908                 "require", "AC",
909         }),
910         PK(new String[]{
911                 "name", "PAKISTAN",
912                 "fmt", "%N%n%O%n%A%n%C-%Z",
913         }),
914         PL(new String[]{
915                 "name", "POLAND",
916                 "fmt", "%N%n%O%n%A%n%Z %C",
917                 "require", "ACZ",
918         }),
919         PM(new String[]{
920                 "name", "ST. PIERRE AND MIQUELON",
921                 "fmt", "%O%n%N%n%A%n%Z %C %X",
922                 "require", "ACZ",
923                 "upper", "ACX",
924         }),
925         PN(new String[]{
926                 "name", "PITCAIRN",
927                 "fmt", "%N%n%O%n%A%n%X%n%C%n%Z",
928                 "require", "ACZ",
929                 "upper", "CZ",
930         }),
931         PR(new String[]{
932                 "name", "PUERTO RICO",
933                 "fmt", "%N%n%O%n%A%n%C PR %Z",
934                 "require", "ACZ",
935                 "upper", "ACNO",
936                 "zip_name_type", "zip",
937                 "postprefix", "PR",
938         }),
939         PS(new String[]{
940                 "name", "PALESTINIAN TERRITORY",
941         }),
942         PT(new String[]{
943                 "name", "PORTUGAL",
944                 "fmt", "%N%n%O%n%A%n%Z %C",
945                 "require", "ACZ",
946         }),
947         PW(new String[]{
948                 "name", "PALAU",
949                 "fmt", "%N%n%O%n%A%n%C %S %Z",
950                 "require", "ACSZ",
951                 "upper", "ACNOS",
952                 "zip_name_type", "zip",
953                 "state_name_type", "state",
954         }),
955         PY(new String[]{
956                 "name", "PARAGUAY",
957                 "fmt", "%N%n%O%n%A%n%Z %C",
958         }),
959         QA(new String[]{
960                 "name", "QATAR",
961                 "upper", "AC",
962         }),
963         RE(new String[]{
964                 "name", "REUNION",
965                 "fmt", "%O%n%N%n%A%n%Z %C %X",
966                 "require", "ACZ",
967                 "upper", "ACX",
968         }),
969         RO(new String[]{
970                 "name", "ROMANIA",
971                 "fmt", "%N%n%O%n%A%n%Z %C",
972                 "upper", "AC",
973         }),
974         RS(new String[]{
975                 "name", "REPUBLIC OF SERBIA",
976                 "fmt", "%N%n%O%n%A%n%Z %C",
977         }),
978         RU(new String[]{
979                 "name", "RUSSIAN FEDERATION",
980                 "fmt", "%Z %C  %n%A%n%O%n%N",
981                 "require", "ACZ",
982                 "upper", "AC",
983         }),
984         RW(new String[]{
985                 "name", "RWANDA",
986                 "upper", "AC",
987         }),
988         SA(new String[]{
989                 "name", "SAUDI ARABIA",
990                 "fmt", "%N%n%O%n%A%n%C %Z",
991         }),
992         SB(new String[]{
993                 "name", "SOLOMON ISLANDS",
994         }),
995         SC(new String[]{
996                 "name", "SEYCHELLES",
997                 "fmt", "%N%n%O%n%A%n%C%n%S",
998                 "upper", "S",
999                 "state_name_type", "island",
1000         }),
1001         SE(new String[]{
1002                 "name", "SWEDEN",
1003                 "fmt", "%O%n%N%n%A%nSE-%Z %C",
1004                 "require", "ACZ",
1005                 "postprefix", "SE-",
1006         }),
1007         SG(new String[]{
1008                 "name", "REP. OF SINGAPORE",
1009                 "fmt", "%N%n%O%n%A%nSINGAPORE %Z",
1010                 "require", "AZ",
1011         }),
1012         SH(new String[]{
1013                 "name", "SAINT HELENA",
1014                 "fmt", "%N%n%O%n%A%n%X%n%C%n%Z",
1015                 "require", "ACZ",
1016                 "upper", "CZ",
1017         }),
1018         SI(new String[]{
1019                 "name", "SLOVENIA",
1020                 "fmt", "%N%n%O%n%A%nSI- %Z %C",
1021                 "postprefix", "SI-",
1022         }),
1023         SJ(new String[]{
1024                 "name", "SVALBARD AND JAN MAYEN ISLANDS",
1025                 "fmt", "%N%n%O%n%A%n%Z %C",
1026                 "require", "ACZ",
1027         }),
1028         SK(new String[]{
1029                 "name", "SLOVAKIA",
1030                 "fmt", "%N%n%O%n%A%n%Z %C",
1031         }),
1032         SL(new String[]{
1033                 "name", "SIERRA LEONE",
1034         }),
1035         SM(new String[]{
1036                 "name", "SAN MARINO",
1037                 "fmt", "%N%n%O%n%A%n%Z %C",
1038                 "require", "AZ",
1039         }),
1040         SN(new String[]{
1041                 "name", "SENEGAL",
1042                 "fmt", "%N%n%O%n%A%n%Z %C",
1043         }),
1044         SO(new String[]{
1045                 "name", "SOMALIA",
1046                 "lang", "so",
1047                 "languages", "so",
1048                 "fmt", "%N%n%O%n%A%n%C, %S %Z",
1049                 "require", "ACS",
1050                 "upper", "ACS",
1051         }),
1052         SR(new String[]{
1053                 "name", "SURINAME",
1054                 "lang", "nl",
1055                 "languages", "nl",
1056                 "fmt", "%N%n%O%n%A%n%C %X%n%S",
1057                 "upper", "AS",
1058         }),
1059         ST(new String[]{
1060                 "name", "SAO TOME AND PRINCIPE",
1061                 "fmt", "%N%n%O%n%A%n%C %X",
1062         }),
1063         SV(new String[]{
1064                 "name", "EL SALVADOR",
1065                 "lang", "es",
1066                 "languages", "es",
1067                 "fmt", "%N%n%O%n%A%n%Z-%C%n%S",
1068                 "require", "ACS",
1069                 "upper", "CSZ",
1070         }),
1071         SZ(new String[]{
1072                 "name", "SWAZILAND",
1073                 "fmt", "%N%n%O%n%A%n%C%n%Z",
1074                 "upper", "ACZ",
1075         }),
1076         TA(new String[]{
1077                 "name", "TRISTAN DA CUNHA",
1078         }),
1079         TC(new String[]{
1080                 "name", "TURKS AND CAICOS ISLANDS",
1081                 "fmt", "%N%n%O%n%A%n%X%n%C%n%Z",
1082                 "require", "ACZ",
1083                 "upper", "CZ",
1084         }),
1085         TD(new String[]{
1086                 "name", "CHAD",
1087         }),
1088         TF(new String[]{
1089                 "name", "FRENCH SOUTHERN TERRITORIES",
1090         }),
1091         TG(new String[]{
1092                 "name", "TOGO",
1093         }),
1094         TH(new String[]{
1095                 "name", "THAILAND",
1096                 "lang", "th",
1097                 "languages", "th",
1098                 "fmt", "%N%n%O%n%A%n%D %C%n%S %Z",
1099                 "lfmt", "%N%n%O%n%A%n%D, %C%n%S %Z",
1100                 "upper", "S",
1101         }),
1102         TJ(new String[]{
1103                 "name", "TAJIKISTAN",
1104                 "fmt", "%N%n%O%n%A%n%Z %C",
1105         }),
1106         TK(new String[]{
1107                 "name", "TOKELAU",
1108         }),
1109         TL(new String[]{
1110                 "name", "TIMOR-LESTE",
1111         }),
1112         TM(new String[]{
1113                 "name", "TURKMENISTAN",
1114                 "fmt", "%N%n%O%n%A%n%Z %C",
1115         }),
1116         TN(new String[]{
1117                 "name", "TUNISIA",
1118                 "fmt", "%N%n%O%n%A%n%Z %C",
1119         }),
1120         TO(new String[]{
1121                 "name", "TONGA",
1122         }),
1123         TR(new String[]{
1124                 "name", "TURKEY",
1125                 "fmt", "%N%n%O%n%A%n%Z %C/%S",
1126                 "require", "ACZ",
1127         }),
1128         TT(new String[]{
1129                 "name", "TRINIDAD AND TOBAGO",
1130         }),
1131         TV(new String[]{
1132                 "name", "TUVALU",
1133                 "lang", "tyv",
1134                 "languages", "tyv",
1135                 "fmt", "%N%n%O%n%A%n%X%n%C%n%S",
1136                 "upper", "ACS",
1137                 "state_name_type", "island",
1138         }),
1139         TW(new String[]{
1140                 "name", "TAIWAN",
1141                 "lang", "zh-hant",
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",
1145                 "require", "ACSZ",
1146                 "state_name_type", "county",
1147         }),
1148         TZ(new String[]{
1149                 "name", "TANZANIA (UNITED REP.)",
1150         }),
1151         UA(new String[]{
1152                 "name", "UKRAINE",
1153                 "fmt", "%Z %C%n%A%n%O%n%N",
1154         }),
1155         UG(new String[]{
1156                 "name", "UGANDA",
1157         }),
1158         UM(new String[]{
1159                 "name", "UNITED STATES MINOR OUTLYING ISLANDS",
1160                 "fmt", "%N%n%O%n%A%n%C %S %Z",
1161                 "require", "ACS",
1162                 "upper", "ACNOS",
1163                 "zip_name_type", "zip",
1164                 "state_name_type", "state",
1165         }),
1166         US(new String[]{
1167                 "name", "UNITED STATES",
1168                 "lang", "en",
1169                 "languages", "en",
1170                 "fmt", "%N%n%O%n%A%n%C %S %Z",
1171                 "require", "ACSZ",
1172                 "upper", "CS",
1173                 "zip_name_type", "zip",
1174                 "state_name_type", "state",
1175         }),
1176         UY(new String[]{
1177                 "name", "URUGUAY",
1178                 "lang", "es",
1179                 "languages", "es",
1180                 "fmt", "%N%n%O%n%A%n%Z %C %S",
1181                 "upper", "CS",
1182         }),
1183         UZ(new String[]{
1184                 "name", "UZBEKISTAN",
1185                 "fmt", "%N%n%O%n%A%n%Z %C%n%S",
1186                 "upper", "CS",
1187         }),
1188         VA(new String[]{
1189                 "name", "VATICAN",
1190                 "fmt", "%N%n%O%n%A%n%Z %C",
1191         }),
1192         VC(new String[]{
1193                 "name", "SAINT VINCENT AND THE GRENADINES (ANTILLES)",
1194         }),
1195         VE(new String[]{
1196                 "name", "VENEZUELA",
1197                 "lang", "es",
1198                 "languages", "es",
1199                 "fmt", "%N%n%O%n%A%n%C %Z, %S",
1200                 "require", "ACS",
1201                 "upper", "CS",
1202         }),
1203         VG(new String[]{
1204                 "name", "VIRGIN ISLANDS (BRITISH)",
1205                 "require", "A",
1206         }),
1207         VI(new String[]{
1208                 "name", "VIRGIN ISLANDS (U.S.)",
1209                 "fmt", "%N%n%O%n%A%n%C %S %Z",
1210                 "require", "ACSZ",
1211                 "upper", "ACNOS",
1212                 "zip_name_type", "zip",
1213                 "state_name_type", "state",
1214         }),
1215         VN(new String[]{
1216                 "name", "VIET NAM",
1217                 "lang", "vi",
1218                 "languages", "vi",
1219                 "fmt", "%N%n%O%n%A%n%C%n%S",
1220                 "lfmt", "%N%n%O%n%A%n%C%n%S",
1221                 "require", "AC",
1222         }),
1223         VU(new String[]{
1224                 "name", "VANUATU",
1225         }),
1226         WF(new String[]{
1227                 "name", "WALLIS AND FUTUNA ISLANDS",
1228                 "fmt", "%O%n%N%n%A%n%Z %C %X",
1229                 "require", "ACZ",
1230                 "upper", "ACX",
1231         }),
1232         WS(new String[]{
1233                 "name", "SAMOA",
1234         }),
1235         XK(new String[]{
1236                 "name", "KOSOVO",
1237                 "fmt", "%N%n%O%n%A%n%Z %C"
1238         }),
1239         YE(new String[]{
1240                 "name", "YEMEN",
1241                 "require", "AC",
1242         }),
1243         YT(new String[]{
1244                 "name", "MAYOTTE",
1245                 "fmt", "%O%n%N%n%A%n%Z %C %X",
1246                 "require", "ACZ",
1247                 "upper", "ACX",
1248         }),
1249         YU(new String[]{
1250                 "name", "SERBIA AND MONTENEGRO",
1251                 "fmt", "%N%n%O%n%A%n%Z %C",
1252         }),
1253         ZA(new String[]{
1254                 "name", "SOUTH AFRICA",
1255                 "fmt", "%N%n%O%n%A%n%C%n%Z",
1256                 "require", "ACZ",
1257         }),
1258         ZM(new String[]{
1259                 "name", "ZAMBIA",
1260                 "fmt", "%N%n%O%n%A%n%Z %C",
1261                 "require", "AC",
1262         }),
1263         ZW(new String[]{
1264                 "name", "ZIMBABWE",
1265         }),
1266         ZZ(new String[]{
1267                 "fmt", "%N%n%O%n%A%n%C",
1268                 "require", "AC",
1269                 "upper", "C",
1270                 "zip_name_type", "postal",
1271                 "state_name_type", "province",
1272         });
1273 
1274         private String jsonString;
1275 
RegionDataEnum(String[] inputArray)1276         private RegionDataEnum(String[] inputArray) {
1277             jsonString = convertArrayToJsonString(inputArray);
1278         }
1279 
getJsonString()1280         String getJsonString() {
1281             return jsonString;
1282         }
1283     }
1284 
1285     static {
1286         for (RegionDataEnum region : RegionDataEnum.values()) {
region.toString()1287             COUNTRY_FORMAT_MAP.put(region.toString(), region.getJsonString());
1288         }
1289     }
1290 
getCountryFormatMap()1291     static Map<String, String> getCountryFormatMap() {
1292         return COUNTRY_FORMAT_MAP;
1293     }
1294 
1295     /**
1296      * Assumes the array is a well-formed array - i.e., there are no unmatched keys in the input.
1297      * Package-private so it can be accessed by tests.
1298      */
convertArrayToJsonString(String[] input)1299     static String convertArrayToJsonString(String[] input) {
1300         JSONObject object = new JSONObject();
1301         for (int i = 0; i < input.length; i += 2) {
1302             try {
1303                 object.put(input[i], input[i + 1]);
1304             } catch (JSONException e) {
1305                 // Ignore for now.
1306             }
1307         }
1308         return object.toString();
1309     }
1310 }
1311