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