001 package org.apache.myfaces.tobago.util;
002
003 /*
004 * Licensed to the Apache Software Foundation (ASF) under one or more
005 * contributor license agreements. See the NOTICE file distributed with
006 * this work for additional information regarding copyright ownership.
007 * The ASF licenses this file to You under the Apache License, Version 2.0
008 * (the "License"); you may not use this file except in compliance with
009 * the License. You may obtain a copy of the License at
010 *
011 * http://www.apache.org/licenses/LICENSE-2.0
012 *
013 * Unless required by applicable law or agreed to in writing, software
014 * distributed under the License is distributed on an "AS IS" BASIS,
015 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
016 * See the License for the specific language governing permissions and
017 * limitations under the License.
018 */
019
020 import org.apache.commons.lang.StringUtils;
021
022 import java.util.ArrayList;
023 import java.util.List;
024 import java.util.Locale;
025
026 public class LocaleUtil {
027
028 private LocaleUtil() {
029 }
030
031 public static Locale createLocale(String value) {
032 Locale locale = null;
033 String[] strings = StringUtils.split(value, "_");
034 switch (strings.length) {
035 case 1:
036 locale = new Locale(strings[0]);
037 break;
038 case 2:
039 locale = new Locale(strings[0], strings[1]);
040 break;
041 case 3:
042 locale = new Locale(strings[0], strings[1], strings[2]);
043 break;
044 default:
045 // TODO
046 }
047 return locale;
048 }
049
050 public static List<Locale> getLocaleList(Locale locale) {
051
052 String string = locale.toString();
053 List<Locale> locales = new ArrayList<Locale>(3);
054 locales.add(locale);
055 int underscore;
056 while ((underscore = string.lastIndexOf('_')) > 0) {
057 string = string.substring(0, underscore);
058 locales.add(createLocale(string));
059 }
060
061 return locales;
062 }
063 }