/* * 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; /** * Defines the character codes used in the metadata to specify the types of fields used in address * formatting. Note that the metadata also has a character for newlines, which is not defined here. */ public enum AddressField { ADMIN_AREA('S'), LOCALITY('C'), RECIPIENT('N'), ORGANIZATION('O'), // Deprecated - use A instead. ADDRESS_LINE_1('1'), // Deprecated - use A instead. ADDRESS_LINE_2('2'), DEPENDENT_LOCALITY('D'), POSTAL_CODE('Z'), SORTING_CODE('X'), STREET_ADDRESS('A'), COUNTRY('R'); /** * Enum for width types of address input fields. */ public enum WidthType { LONG, SHORT; } private static final Map FIELD_MAPPING = new HashMap(); static { for (AddressField value : values()) { FIELD_MAPPING.put(value.getChar(), value); } } private final char mField; private AddressField(char field) { mField = field; } /** * Gets the corresponding AddressField for the character code. Returns null if the character is * not recognized. */ static AddressField of(char field) { return FIELD_MAPPING.get(field); } /** * Gets the field's identification character, as used in the metadata. * * @return identification char. */ char getChar() { return mField; } /** Returns default width type of the address field. */ WidthType getDefaulWidthType() { return this.equals(POSTAL_CODE) || this.equals(SORTING_CODE) ? WidthType.SHORT : WidthType.LONG; } }