1dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com/*
2dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com * Copyright (C) 2010 Google Inc.
3dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com *
4dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com * Licensed under the Apache License, Version 2.0 (the "License");
5dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com * you may not use this file except in compliance with the License.
6dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com * You may obtain a copy of the License at
7dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com *
8dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com * http://www.apache.org/licenses/LICENSE-2.0
9dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com *
10dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com * Unless required by applicable law or agreed to in writing, software
11dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com * distributed under the License is distributed on an "AS IS" BASIS,
12dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com * See the License for the specific language governing permissions and
14dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com * limitations under the License.
15dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com */
16dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com
17dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.compackage com.android.i18n.addressinput;
18dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com
19dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.comimport java.util.HashMap;
20dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.comimport java.util.Map;
21dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com
22dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com/**
23dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com * Defines the character codes used in the metadata to specify the types of fields used in address
242c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com * formatting. Note that the metadata also has a character for newlines, which is not defined here.
25dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com */
26dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.compublic enum AddressField {
27c18e31ba9023fb443590722763c470c77e3b3272lararennie@google.com    ADMIN_AREA('S'),
28c18e31ba9023fb443590722763c470c77e3b3272lararennie@google.com    LOCALITY('C'),
29c18e31ba9023fb443590722763c470c77e3b3272lararennie@google.com    RECIPIENT('N'),
30c18e31ba9023fb443590722763c470c77e3b3272lararennie@google.com    ORGANIZATION('O'),
317ec1440a308d40ea6548625ca00ee0f6ac87a979roubert@google.com    // Deprecated - use A instead.
32c18e31ba9023fb443590722763c470c77e3b3272lararennie@google.com    ADDRESS_LINE_1('1'),
337ec1440a308d40ea6548625ca00ee0f6ac87a979roubert@google.com    // Deprecated - use A instead.
34c18e31ba9023fb443590722763c470c77e3b3272lararennie@google.com    ADDRESS_LINE_2('2'),
352c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com    DEPENDENT_LOCALITY('D'),
362c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com    POSTAL_CODE('Z'),
372c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com    SORTING_CODE('X'),
382c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com    STREET_ADDRESS('A'),
39dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com
402c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com    COUNTRY('R');
41dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com
42e35bb3be4981ebf0f3d15645f6610681dfaf4627roubert@google.com    /**
43e35bb3be4981ebf0f3d15645f6610681dfaf4627roubert@google.com     * Enum for width types of address input fields.
44e35bb3be4981ebf0f3d15645f6610681dfaf4627roubert@google.com     */
45e35bb3be4981ebf0f3d15645f6610681dfaf4627roubert@google.com    public enum WidthType {
46e35bb3be4981ebf0f3d15645f6610681dfaf4627roubert@google.com        LONG,
47e35bb3be4981ebf0f3d15645f6610681dfaf4627roubert@google.com        SHORT;
48e35bb3be4981ebf0f3d15645f6610681dfaf4627roubert@google.com    }
49e35bb3be4981ebf0f3d15645f6610681dfaf4627roubert@google.com
500dbcfb4fae3e125550c534191627574ea69ec3aflararennie@google.com    private static final Map<Character, AddressField> FIELD_MAPPING
512c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com            = new HashMap<Character, AddressField>();
52dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com
532c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com    static {
5437ea1c8bb9bf0ee18a9ce7412ace03885098e348lararennie@google.com        for (AddressField value : values()) {
550dbcfb4fae3e125550c534191627574ea69ec3aflararennie@google.com            FIELD_MAPPING.put(value.getChar(), value);
562c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com        }
57dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com    }
58dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com
5937ea1c8bb9bf0ee18a9ce7412ace03885098e348lararennie@google.com    private final char mField;
60dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com
612c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com    private AddressField(char field) {
62c18e31ba9023fb443590722763c470c77e3b3272lararennie@google.com        mField = field;
632c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com    }
64dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com
652c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com    /**
662c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com     * Gets the corresponding AddressField for the character code. Returns null if the character is
672c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com     * not recognized.
682c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com     */
69dc4cdad9dd71a57be66262d1d6d46a09c0973818lararennie@google.com    static AddressField of(char field) {
700dbcfb4fae3e125550c534191627574ea69ec3aflararennie@google.com        return FIELD_MAPPING.get(field);
712c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com    }
72dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com
732c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com    /**
742c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com     * Gets the field's identification character, as used in the metadata.
752c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com     *
762c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com     * @return identification char.
772c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com     */
78dc4cdad9dd71a57be66262d1d6d46a09c0973818lararennie@google.com    char getChar() {
7937ea1c8bb9bf0ee18a9ce7412ace03885098e348lararennie@google.com        return mField;
802c25a6f4922225b619b0e389befde8b941e78834jeanine@google.com    }
81e35bb3be4981ebf0f3d15645f6610681dfaf4627roubert@google.com
82e35bb3be4981ebf0f3d15645f6610681dfaf4627roubert@google.com    /** Returns default width type of the address field. */
83e35bb3be4981ebf0f3d15645f6610681dfaf4627roubert@google.com    WidthType getDefaulWidthType() {
84e35bb3be4981ebf0f3d15645f6610681dfaf4627roubert@google.com        return this.equals(POSTAL_CODE) || this.equals(SORTING_CODE)
85e35bb3be4981ebf0f3d15645f6610681dfaf4627roubert@google.com                ? WidthType.SHORT : WidthType.LONG;
86e35bb3be4981ebf0f3d15645f6610681dfaf4627roubert@google.com    }
87dbc178c44b05b9f764cb7a40ee28b76768bb4e9dlararennie@google.com}
88