13dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwellpackage com.android.contacts.datepicker; 23dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell 33dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwellpublic class ICU { 43dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell 53dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell /** 63dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell * This method is directly copied from {@link libcore.icu.ICU}. The method is simple enough 73dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell * that it probably won't change. 83dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell */ 93dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell public static char[] getDateFormatOrder(String pattern) { 103dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell char[] result = new char[3]; 113dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell int resultIndex = 0; 123dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell boolean sawDay = false; 133dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell boolean sawMonth = false; 143dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell boolean sawYear = false; 153dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell 163dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell for (int i = 0; i < pattern.length(); ++i) { 173dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell char ch = pattern.charAt(i); 183dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell if (ch == 'd' || ch == 'L' || ch == 'M' || ch == 'y') { 193dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell if (ch == 'd' && !sawDay) { 203dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell result[resultIndex++] = 'd'; 213dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell sawDay = true; 223dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell } else if ((ch == 'L' || ch == 'M') && !sawMonth) { 233dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell result[resultIndex++] = 'M'; 243dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell sawMonth = true; 253dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell } else if ((ch == 'y') && !sawYear) { 263dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell result[resultIndex++] = 'y'; 273dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell sawYear = true; 283dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell } 293dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell } else if (ch == 'G') { 303dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell // Ignore the era specifier, if present. 313dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell } else if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) { 323dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell throw new IllegalArgumentException("Bad pattern character '" 333dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell + ch + "' in " + pattern); 343dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell } else if (ch == '\'') { 353dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell if (i < pattern.length() - 1 && pattern.charAt(i + 1) == '\'') { 363dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell ++i; 373dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell } else { 383dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell i = pattern.indexOf('\'', i + 1); 393dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell if (i == -1) { 403dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell throw new IllegalArgumentException("Bad quoting in " + pattern); 413dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell } 423dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell ++i; 433dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell } 443dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell } else { 453dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell // Ignore spaces and punctuation. 463dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell } 473dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell } 483dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell return result; 493dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell } 503dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell 513dad9f3cdfd5d1bcdf82ac6fc0bd34f24440ab31Brian Attwell} 52