xref: /aosp_15_r20/external/cldr/tools/cldr-code/src/main/java/org/unicode/cldr/test/XPathToMenu.java (revision 912701f9769bb47905792267661f0baf2b85bed5)
1 package org.unicode.cldr.test;
2 
3 import java.util.HashMap;
4 import java.util.Map;
5 import org.unicode.cldr.icu.LDMLConstants;
6 import org.unicode.cldr.util.XPathParts;
7 
8 /**
9  * Deprecated utility class only used by ConsoleCheckCLDR.
10  *
11  * @deprecated Do not use.
12  */
13 @Deprecated
14 final class XPathToMenu {
15     // ===== types of data and menu names
16     private static final String LOCALEDISPLAYNAMES = "//ldml/localeDisplayNames/";
17     private static final String OTHER_CALENDARS_XPATH = "//ldml/dates/calendars/calendar";
18 
19     private static final String CURRENCIES = "currencies";
20     private static final String TIMEZONES = "timezones";
21     private static final String METAZONES = "metazones";
22     private static final String MISC = "misc";
23     private static final String CODEPATTERNS = "codePatterns";
24     private static final String MEASNAMES = "measurementSystemNames";
25 
26     private static final String LOCALEDISPLAYPATTERN_XPATH =
27             LOCALEDISPLAYNAMES + LDMLConstants.LOCALEDISPLAYPATTERN;
28     private static final String NUMBERSCURRENCIES = LDMLConstants.NUMBERS + "/" + CURRENCIES;
29 
30     /** All of the data items under LOCALEDISPLAYNAMES (menu items) */
31     private static final String[] LOCALEDISPLAYNAMES_ITEMS = {
32         LDMLConstants.LANGUAGES,
33         LDMLConstants.SCRIPTS,
34         LDMLConstants.TERRITORIES,
35         LDMLConstants.VARIANTS,
36         LDMLConstants.KEYS,
37         LDMLConstants.TYPES,
38         CURRENCIES,
39         TIMEZONES,
40         CODEPATTERNS,
41         MEASNAMES
42     };
43 
xpathToMenu(String path)44     public static String xpathToMenu(String path) {
45         String theMenu = null;
46         if (path.startsWith(LOCALEDISPLAYNAMES)) {
47             for (int i = 0; i < LOCALEDISPLAYNAMES_ITEMS.length; i++) {
48                 if (path.startsWith(LOCALEDISPLAYNAMES + LOCALEDISPLAYNAMES_ITEMS[i])) {
49                     theMenu = LOCALEDISPLAYNAMES_ITEMS[i];
50                 }
51             }
52             if (path.startsWith(LOCALEDISPLAYPATTERN_XPATH)) {
53                 theMenu = LDMLConstants.LOCALEDISPLAYPATTERN;
54             }
55         } else if (path.startsWith(OTHER_CALENDARS_XPATH)) {
56             String items[] = getCalendarsItems();
57             for (String which : items) {
58                 String CAL_XPATH = "//ldml/dates/calendars/calendar[@type=\"" + which + "\"]";
59                 if (path.startsWith(CAL_XPATH)) {
60                     theMenu = which;
61                     break;
62                 }
63             }
64         } else if (path.startsWith(LOCALEDISPLAYPATTERN_XPATH)) {
65             theMenu = LDMLConstants.LOCALEDISPLAYPATTERN;
66         } else if (path.startsWith("//ldml/" + NUMBERSCURRENCIES)) {
67             theMenu = CURRENCIES;
68         } else if (path.startsWith("//ldml/" + "dates/timeZoneNames/zone")) {
69             theMenu = TIMEZONES;
70         } else if (path.startsWith("//ldml/" + "units")) {
71             theMenu = "units";
72         } else if (path.startsWith("//ldml/" + "dates/timeZoneNames/metazone")) {
73             theMenu = getMetazoneContinent(path);
74             if (theMenu == null) {
75                 theMenu = METAZONES;
76             }
77         } else if (path.startsWith(
78                 "//ldml/" + LDMLConstants.CHARACTERS + "/" + LDMLConstants.EXEMPLAR_CHARACTERS)) {
79             theMenu = LDMLConstants.CHARACTERS;
80         } else if (path.startsWith("//ldml/" + LDMLConstants.NUMBERS)) {
81             theMenu = LDMLConstants.NUMBERS;
82         } else if (path.startsWith("//ldml/" + LDMLConstants.REFERENCES)) {
83             theMenu = LDMLConstants.REFERENCES;
84         } else {
85             theMenu = MISC;
86             // other?
87         }
88         return theMenu;
89     }
90 
getCalendarsItems()91     private static String[] getCalendarsItems() {
92         // TODO : Make this data driven from supplementalMetaData ;
93         // I couldn't get the xpath right....
94         // CLDRFile mySupp = getFactory().make("supplementalMetaData",false);
95         // String xpath =
96         // "//supplementalData/metadata/validity/variable[@id=\"$calendar\"][@type=\"choice\"]";
97         // String items = mySupp.getStringValue(xpath);
98         // if ( items != null ) {
99         // return (items.split(" "));
100         // }
101         // else {
102 
103         String defaultCalendarsItems =
104                 "gregorian buddhist coptic ethiopic chinese hebrew indian islamic japanese persian roc";
105         return (defaultCalendarsItems.split(" "));
106 
107         // }
108     }
109 
getMetazoneContinent(String xpath)110     private static String getMetazoneContinent(String xpath) {
111         XPathParts parts = XPathParts.getFrozenInstance(xpath);
112         String thisMetazone = parts.getAttributeValue(3, "type");
113         return getMetazoneToContinentMap().get(thisMetazone);
114     }
115 
116     private static Map<String, String> mzToContinentMap = null;
117 
getMetazoneToContinentMap()118     private static Map<String, String> getMetazoneToContinentMap() {
119         if (mzToContinentMap == null) {
120             System.err.println(
121                     "PathUtilities.java getMetazoneToContinentMap(): TODO: Get this data from supplemental data! http://unicode.org/cldr/trac/ticket/3761");
122             HashMap<String, String> newMap = new HashMap<>();
123             for (int i = 0; i < mzToContinentStatic.length; i += 2) {
124                 newMap.put(mzToContinentStatic[i + 0], mzToContinentStatic[i + 1]);
125             }
126             mzToContinentMap = newMap;
127         }
128         return mzToContinentMap;
129     }
130 
131     private static final String mzToContinentStatic[] = {
132         "Philippines", "Asia",
133         "Gambier", "Pacific",
134         "Ecuador", "America",
135         "Kuybyshev", "Europe",
136         "Europe_Western", "Atlantic",
137         "Chile", "America",
138         "Afghanistan", "Asia",
139         "Pierre_Miquelon", "America",
140         "Solomon", "Pacific",
141         "Arabian", "Asia",
142         "Krasnoyarsk", "Asia",
143         "Vladivostok", "Asia",
144         "Fiji", "Pacific",
145         "Niue", "Pacific",
146         "Marquesas", "Pacific",
147         "Karachi", "Asia",
148         "Aqtobe", "Asia",
149         "Irish", "Europe",
150         "Yakutsk", "Asia",
151         "Galapagos", "Pacific",
152         "Bangladesh", "Asia",
153         "America_Pacific", "America",
154         "Urumqi", "Asia",
155         "Tahiti", "Pacific",
156         "Samoa", "Pacific",
157         "Uzbekistan", "Asia",
158         "Turkey", "Europe",
159         "Kyrgystan", "Asia",
160         "Europe_Eastern", "Europe",
161         "Casey", "Antarctica",
162         "Lord_Howe", "Australia",
163         "Kizilorda", "Asia",
164         "Kashgar", "Asia",
165         "Africa_Western", "Africa",
166         "Macquarie", "Antarctica",
167         "Wake", "Pacific",
168         "Australia_Eastern", "Australia",
169         "Guyana", "America",
170         "Taipei", "Asia",
171         "Samarkand", "Asia",
172         "Mawson", "Antarctica",
173         "Africa_Eastern", "Africa",
174         "Guam", "Pacific",
175         "Kazakhstan_Western", "Asia",
176         "Aqtau", "Asia",
177         "Cook", "Pacific",
178         "Wallis", "Pacific",
179         "Irkutsk", "Asia",
180         "Africa_Southern", "Africa",
181         "French_Guiana", "America",
182         "Chatham", "Pacific",
183         "Oral", "Asia",
184         "Noronha", "America",
185         "Paraguay", "America",
186         "Moscow", "Europe",
187         "Hong_Kong", "Asia",
188         "Yerevan", "Asia",
189         "Vostok", "Antarctica",
190         "Rothera", "Antarctica",
191         "Colombia", "America",
192         "Newfoundland", "America",
193         "Hawaii_Aleutian", "Pacific",
194         "East_Timor", "Asia",
195         "GMT", "Atlantic",
196         "Indian_Ocean", "Indian",
197         "Reunion", "Indian",
198         "Vanuatu", "Pacific",
199         "Malaysia", "Asia",
200         "Kwajalein", "Pacific",
201         "Line_Islands", "Pacific",
202         "Shevchenko", "Asia",
203         "Azores", "Atlantic",
204         "Frunze", "Asia",
205         "Greenland_Eastern", "America",
206         "Hovd", "Asia",
207         "Lanka", "Asia",
208         "Almaty", "Asia",
209         "Macau", "Asia",
210         "Mongolia", "Asia",
211         "Easter", "Pacific",
212         "British", "Europe",
213         "Korea", "Asia",
214         "Papua_New_Guinea", "Pacific",
215         "Bering", "America",
216         "Cocos", "Indian",
217         "Mauritius", "Indian",
218         "Argentina", "America",
219         "Tokelau", "Pacific",
220         "America_Central", "America",
221         "Alaska", "America",
222         "Georgia", "Asia",
223         "Choibalsan", "Asia",
224         "Sakhalin", "Asia",
225         "Anadyr", "Asia",
226         "Dushanbe", "Asia",
227         "Indonesia_Eastern", "Asia",
228         "Japan", "Asia",
229         "Omsk", "Asia",
230         "Nauru", "Pacific",
231         "Cuba", "America",
232         "Iran", "Asia",
233         "Sverdlovsk", "Asia",
234         "Maldives", "Indian",
235         "Europe_Central", "Europe",
236         "Kamchatka", "Asia",
237         "Tajikistan", "Asia",
238         "Pitcairn", "Pacific",
239         "Gilbert_Islands", "Pacific",
240         "Novosibirsk", "Asia",
241         "Brunei", "Asia",
242         "Tonga", "Pacific",
243         "Changbai", "Asia",
244         "India", "Asia",
245         "Indonesia_Western", "Asia",
246         "Malaya", "Asia",
247         "Dacca", "Asia",
248         "Tashkent", "Asia",
249         "New_Zealand", "Pacific",
250         "Indonesia_Central", "Asia",
251         "Myanmar", "Asia",
252         "South_Georgia", "Atlantic",
253         "Truk", "Pacific",
254         "Pakistan", "Asia",
255         "Borneo", "Asia",
256         "DumontDUrville", "Antarctica",
257         "Argentina_Western", "America",
258         "Uruguay", "America",
259         "Dutch_Guiana", "America",
260         "Ponape", "Pacific",
261         "Gulf", "Asia",
262         "Aktyubinsk", "Asia",
263         "America_Mountain", "America",
264         "Dominican", "America",
265         "North_Mariana", "Pacific",
266         "Yukon", "America",
267         "Armenia", "Asia",
268         "Falkland", "Atlantic",
269         "Tbilisi", "Asia",
270         "Baku", "Asia",
271         "Venezuela", "America",
272         "Ashkhabad", "Asia",
273         "Cape_Verde", "Atlantic",
274         "Phoenix_Islands", "Pacific",
275         "Brasilia", "America",
276         "Marshall_Islands", "Pacific",
277         "Volgograd", "Europe",
278         "Yekaterinburg", "Asia",
279         "Kosrae", "Pacific",
280         "Tuvalu", "Pacific",
281         "Africa_Central", "Africa",
282         "Palau", "Pacific",
283         "Alaska_Hawaii", "America",
284         "Qyzylorda", "Asia",
285         "Bhutan", "Asia",
286         "Israel", "Asia",
287         "America_Eastern", "America",
288         "Nepal", "Asia",
289         "Azerbaijan", "Asia",
290         "Uralsk", "Asia",
291         "Bolivia", "America",
292         "Liberia", "Africa",
293         "Turkmenistan", "Asia",
294         "Davis", "Antarctica",
295         "Norfolk", "Pacific",
296         "Indochina", "Asia",
297         "Peru", "America",
298         "Acre", "America",
299         "China", "Asia",
300         "Chamorro", "Pacific",
301         "Atlantic", "America",
302         "Syowa", "Antarctica",
303         "Africa_FarWestern", "Africa",
304         "New_Caledonia", "Pacific",
305         "Greenland_Western", "America",
306         "Suriname", "America",
307         "Seychelles", "Indian",
308         "Christmas", "Indian",
309         "Australia_CentralWestern", "Australia",
310         "Greenland_Central", "America",
311         "French_Southern", "Indian",
312         "Australia_Central", "Australia",
313         "Australia_Western", "Australia",
314         "Magadan", "Asia",
315         "Kazakhstan_Eastern", "Asia",
316         "Goose_Bay", "America",
317         "Singapore", "Asia",
318         "Amazon", "America",
319         "Long_Shu", "Asia",
320         "Samara", "Europe",
321         "Greenland", "America",
322     };
323 
XPathToMenu()324     private XPathToMenu() {}
325 }
326