blob: 77c9a0176cc2dae23079ce8c69319e413fc9f487 [file] [log] [blame]
/*
* Copyright (C) 2010 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.i18n.addressinput;
import java.util.HashMap;
import java.util.Map;
/**
* Enumerates all the data fields found in the JSON-format address property
* data.
*/
public enum AddressDataKey {
/**
* Identifies the countries for which data is provided.
*/
COUNTRIES,
/**
* Is present with the value "rtl" for countries where the dominant
* writing system is right-to-left.
*/
DIR,
/**
* Is present with the value "true" for disputed regions within a country.
* Some clients may wish to not show data for these regions.
*/
DISPUTED,
/**
* The standard format string. This identifies which fields can be used in
* the address, along with their order. This also carries additional
* information for use in formatting the fields into multiple lines.
*/
FMT,
/**
* Indicates additional limitations on the data for address fields, based
* upon the enumerated character sets.
*/
FMTCHARSETS,
/**
* Is present with the value "true" for countries that have disputed regions.
*/
HASDISPUTED,
/**
* The unique id of the region, in the form of a path from parent ids to the
* key.
*/
ID,
/**
* The local (country-specific) ISO 3166-2 ID for this region, if there is
* one. This value must be present.
*/
ISOID,
/**
* The key of the region, unique to its parent. This is the name, if name
* is not present, or the short name, if name is present. This value must
* be present.
*/
KEY,
/**
* The langauge of this data, if known.
*/
LANG,
/**
* The languages used by children of this region, if known.
*/
LANGUAGES,
/**
* The latin format string {@link #FMT} used when a country defines an
* alternative format for use with the latin script.
*/
LFMT,
/**
* The full latin name {@link #LNAME} present when the latin name has been
* shortened for length reasons (for example, names of Chinese minority groups
* are omitted from the lname).
*/
LFNAME,
/**
* The latin name {@link #LFMT} used to present the latin version of the
* region.
*/
LNAME,
/**
* The local name of the region. This name is present if different from the
* key.
*/
NAME,
/**
* Common prefix for postal code (hints that it is not to be entered).
*/
POSTPREFIX,
/**
* A URL to the country's postal address lookup page, if available.
*/
POSTURL,
/**
* Indicates which fields must be present in a valid address.
*/
REQUIRE,
/**
* Indicates the type of the name used for the state (administrative area)
* field.
*/
STATE_NAME_TYPE,
/**
* Encodes the {@link #DISPUTED} value of all the children of this region.
* Used by the GWT UI widget.
*/
SUB_DISPUTEDS,
/**
* Encodes the {@link #ISOID} value of all the children of this region.
* Used by the GWT UI widget.
*/
SUB_ISOIDS,
/**
* Encodes the {@link #KEY} value of all the children of this region.
* Used by the GWT UI widget.
*/
SUB_KEYS,
/**
* Encodes the {@link #LFNAME} value of all the children of this region.
* Used by the GWT UI widget.
*/
SUB_LFNAMES,
/**
* Encodes the {@link #LNAME} value of all the children of this region.
* Used by the GWT UI widget.
*/
SUB_LNAMES,
/**
* Indicates, for each child of this region, whether that child has
* additional children.
* Used by the GWT UI widget.
*/
SUB_MORES,
/**
* Encodes the {@link #NAME} value of all the children of this region.
* Used by the GWT UI widget.
*/
SUB_NAMES,
/**
* Encodes the {@link #XREQUIRE} value of all the children of this region.
* Used by the GWT UI widget.
*/
SUB_XREQUIRES,
/**
* Encodes the {@link #XZIP} value of all the children of this region.
* Used by the GWT UI widget.
*/
SUB_XZIPS,
/**
* Encodes the {@link #ZIP} value of all the children of this region.
* Used by the GWT UI widget.
*/
SUB_ZIPS,
/**
* Encodes the {@link #ZIPEX} value of all the children of this region.
* Used by the GWT UI widget.
*/
SUB_ZIPEXS,
/**
* Encodes which fields of the address should be in upper case, according
* the the country's postal office.
*/
UPPER,
/**
* Encodes the {@link #REQUIRE} value for the subtree beneath this region.
*/
XREQUIRE,
/**
* Encodes the {@link #ZIP} value for the subtree beneath this region.
*/
XZIP,
/**
* Encodes the postal code pattern if at the country level, and the
* postal code prefix if at a level below country.
*/
ZIP,
/**
* Lists example postal codes for this country/region.
*/
ZIPEX,
/**
* Indicates the type of the name used for the zip (postal code)
* field.
*/
ZIP_NAME_TYPE;
/**
* Returns a field based on its keyname (value in the JSON-format file), or
* null if no field matches.
*/
public static AddressDataKey get(String keyname) {
return map.get(keyname.toLowerCase());
}
private static final Map<String, AddressDataKey> map =
new HashMap<String, AddressDataKey>();
static {
for (AddressDataKey f : values()) {
map.put(f.toString().toLowerCase(), f);
}
}
}