1607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com/* 2607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * Copyright (C) 2010 Google Inc. 3607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * 4607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * Licensed under the Apache License, Version 2.0 (the "License"); 5607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * you may not use this file except in compliance with the License. 6607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * You may obtain a copy of the License at 7607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * 8607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * http://www.apache.org/licenses/LICENSE-2.0 9607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * 10607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * Unless required by applicable law or agreed to in writing, software 11607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * distributed under the License is distributed on an "AS IS" BASIS, 12607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * See the License for the specific language governing permissions and 14607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * limitations under the License. 158a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com */ 16607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 17607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.compackage com.android.i18n.addressinput; 18607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 19607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com/** 20607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * A simple class to hold region data. Instances of this class are immutable. 21607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com */ 22607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.comclass RegionData { 23607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 24607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com private String mKey; 25607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com private String mName; 26607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 27607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com /** 28607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * Create a new RegionData object. 29607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com */ 30607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com private RegionData() { 31607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com } 32607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 33607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com /** 34607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * Copy constructor. data should not be null. 35607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * 36607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * @param data A populated instance of RegionData 37607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com */ 38607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com private RegionData(RegionData data) { 39607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com Util.checkNotNull(data); 40607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com mKey = data.mKey; 41607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com mName = data.mName; 42607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com } 43607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 44607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com /** 458a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com * Gets the key of the region. For example, California's key is "CA". 46607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com */ 47607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com String getKey() { 48607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com return mKey; 498a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com } 508a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com 518a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com /** 528a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com * Gets the name. Returns null if not specified. 53607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com */ 54607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com String getName() { 55607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com return mName; 56607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com } 57607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 58607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com /** 59607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * Gets the best display name. Returns the name if this is not null, otherwise the key. 60607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com */ 61607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com public String getDisplayName() { 62607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com return (mName != null) ? mName : mKey; 63607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com } 64607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 65607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com /** 66607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * Checks if the input subkey is the name (in Latin or local script) of the region. Returns 67607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * false if subkey is not a valid name for the region, or the input subkey is null. 68607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * 69607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * @param subkey a string that refers to the name of a geo location. Like "California", "CA", or 70607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * "Mountain View". Names in the local script are also supported. 71607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com */ 72607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com boolean isValidName(String subkey) { 73607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com if (subkey == null) { 74607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com return false; 75607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com } 76607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com if (subkey.equalsIgnoreCase(mKey) || subkey.equalsIgnoreCase(mName)) { 77607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com return true; 78607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com } 79607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com return false; 80607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com } 81607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 8297cee9735350cb472249ce1a827ba1aa6b2a5f59chudy@google.com /** 83607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * A builder class to facilitate the creation of RegionData objects. 84607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com */ 85607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com static class Builder { 86607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com RegionData mData = new RegionData(); 87607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 88607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com RegionData build() { 89607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com return new RegionData(mData); 90607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com } 91607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 92607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com Builder setKey(String key) { 93607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com Util.checkNotNull(key, "Key should not be null."); 94607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com mData.mKey = key; 95607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com return this; 96607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com } 97607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 98607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com /** 99607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * Sets name of the region. For example, "California". If the name is an empty string, sets 100607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * it to null. 101607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com */ 102607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com Builder setName(String name) { 103607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com mData.mName = Util.trimToNull(name); 104607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com return this; 105607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com } 106607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com } 107607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com} 108607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com