Home » openjdk-7 » sun.util.locale » [javadoc | source]

    1   
    2   /*
    3    * Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
    4    * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    5    *
    6    * This code is free software; you can redistribute it and/or modify it
    7    * under the terms of the GNU General Public License version 2 only, as
    8    * published by the Free Software Foundation.  Oracle designates this
    9    * particular file as subject to the "Classpath" exception as provided
   10    * by Oracle in the LICENSE file that accompanied this code.
   11    *
   12    * This code is distributed in the hope that it will be useful, but WITHOUT
   13    * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
   14    * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
   15    * version 2 for more details (a copy is included in the LICENSE file that
   16    * accompanied this code).
   17    *
   18    * You should have received a copy of the GNU General Public License version
   19    * 2 along with this work; if not, write to the Free Software Foundation,
   20    * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
   21    *
   22    * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
   23    * or visit www.oracle.com if you need additional information or have any
   24    * questions.
   25    */
   26   
   27   /*
   28    *******************************************************************************
   29    * Copyright (C) 2009-2010, International Business Machines Corporation and    *
   30    * others. All Rights Reserved.                                                *
   31    *******************************************************************************
   32    */
   33   package sun.util.locale;
   34   
   35   import java.util.Collections;
   36   import java.util.Map;
   37   import java.util.Map.Entry;
   38   import java.util.Set;
   39   import java.util.SortedMap;
   40   import java.util.SortedSet;
   41   
   42   public class UnicodeLocaleExtension extends Extension {
   43       public static final char SINGLETON = 'u';
   44   
   45       private final Set<String> attributes;
   46       private final Map<String, String> keywords;
   47   
   48       public static final UnicodeLocaleExtension CA_JAPANESE
   49           = new UnicodeLocaleExtension("ca", "japanese");
   50       public static final UnicodeLocaleExtension NU_THAI
   51           = new UnicodeLocaleExtension("nu", "thai");
   52   
   53       private UnicodeLocaleExtension(String key, String value) {
   54           super(SINGLETON, key + "-" + value);
   55           attributes = Collections.emptySet();
   56           keywords = Collections.singletonMap(key, value);
   57       }
   58   
   59       UnicodeLocaleExtension(SortedSet<String> attributes, SortedMap<String, String> keywords) {
   60           super(SINGLETON);
   61           if (attributes != null) {
   62               this.attributes = attributes;
   63           } else {
   64               this.attributes = Collections.emptySet();
   65           }
   66           if (keywords != null) {
   67               this.keywords = keywords;
   68           } else {
   69               this.keywords = Collections.emptyMap();
   70           }
   71   
   72           if (!this.attributes.isEmpty() || !this.keywords.isEmpty()) {
   73               StringBuilder sb = new StringBuilder();
   74               for (String attribute : this.attributes) {
   75                   sb.append(LanguageTag.SEP).append(attribute);
   76               }
   77               for (Entry<String, String> keyword : this.keywords.entrySet()) {
   78                   String key = keyword.getKey();
   79                   String value = keyword.getValue();
   80   
   81                   sb.append(LanguageTag.SEP).append(key);
   82                   if (value.length() > 0) {
   83                       sb.append(LanguageTag.SEP).append(value);
   84                   }
   85               }
   86               setValue(sb.substring(1));   // skip leading '-'
   87           }
   88       }
   89   
   90       public Set<String> getUnicodeLocaleAttributes() {
   91           if (attributes == Collections.EMPTY_SET) {
   92               return attributes;
   93           }
   94           return Collections.unmodifiableSet(attributes);
   95       }
   96   
   97       public Set<String> getUnicodeLocaleKeys() {
   98           if (keywords == Collections.EMPTY_MAP) {
   99               return Collections.emptySet();
  100           }
  101           return Collections.unmodifiableSet(keywords.keySet());
  102       }
  103   
  104       public String getUnicodeLocaleType(String unicodeLocaleKey) {
  105           return keywords.get(unicodeLocaleKey);
  106       }
  107   
  108       public static boolean isSingletonChar(char c) {
  109           return (SINGLETON == LocaleUtils.toLower(c));
  110       }
  111   
  112       public static boolean isAttribute(String s) {
  113           // 3*8alphanum
  114           int len = s.length();
  115           return (len >= 3) && (len <= 8) && LocaleUtils.isAlphaNumericString(s);
  116       }
  117   
  118       public static boolean isKey(String s) {
  119           // 2alphanum
  120           return (s.length() == 2) && LocaleUtils.isAlphaNumericString(s);
  121       }
  122   
  123       public static boolean isTypeSubtag(String s) {
  124           // 3*8alphanum
  125           int len = s.length();
  126           return (len >= 3) && (len <= 8) && LocaleUtils.isAlphaNumericString(s);
  127       }
  128   }

Home » openjdk-7 » sun.util.locale » [javadoc | source]