1603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana/* 2603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * Copyright (C) 2009 The Android Open Source Project 3603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * 4603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * Licensed under the Apache License, Version 2.0 (the "License"); 5603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * you may not use this file except in compliance with the License. 6603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * You may obtain a copy of the License at 7603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * 8603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * http://www.apache.org/licenses/LICENSE-2.0 9603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * 10603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * Unless required by applicable law or agreed to in writing, software 11603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * distributed under the License is distributed on an "AS IS" BASIS, 12603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * See the License for the specific language governing permissions and 14603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * limitations under the License. 15603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana */ 16603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana 17603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintanapackage android.accounts; 18603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana 19603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintanaimport android.os.Parcelable; 20603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintanaimport android.os.Parcel; 21a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintanaimport android.text.TextUtils; 22603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana 23603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana/** 24603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * Value type that represents an Account in the {@link AccountManager}. This object is 25603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * {@link Parcelable} and also overrides {@link #equals} and {@link #hashCode}, making it 26603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * suitable for use as the key of a {@link java.util.Map} 27603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana */ 28603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintanapublic class Account implements Parcelable { 293710f390968e683a0ad3adf0b517dfcade3564ceFred Quintana public final String name; 303710f390968e683a0ad3adf0b517dfcade3564ceFred Quintana public final String type; 31603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana 32603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana public boolean equals(Object o) { 33603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana if (o == this) return true; 34603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana if (!(o instanceof Account)) return false; 35603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana final Account other = (Account)o; 363710f390968e683a0ad3adf0b517dfcade3564ceFred Quintana return name.equals(other.name) && type.equals(other.type); 37603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana } 38603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana 39603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana public int hashCode() { 40603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana int result = 17; 413710f390968e683a0ad3adf0b517dfcade3564ceFred Quintana result = 31 * result + name.hashCode(); 423710f390968e683a0ad3adf0b517dfcade3564ceFred Quintana result = 31 * result + type.hashCode(); 43603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana return result; 44603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana } 45603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana 46603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana public Account(String name, String type) { 47a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana if (TextUtils.isEmpty(name)) { 48a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana throw new IllegalArgumentException("the name must not be empty: " + name); 49a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana } 50a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana if (TextUtils.isEmpty(type)) { 51a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana throw new IllegalArgumentException("the type must not be empty: " + type); 52a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana } 533710f390968e683a0ad3adf0b517dfcade3564ceFred Quintana this.name = name; 543710f390968e683a0ad3adf0b517dfcade3564ceFred Quintana this.type = type; 55603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana } 56603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana 57603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana public Account(Parcel in) { 583710f390968e683a0ad3adf0b517dfcade3564ceFred Quintana this.name = in.readString(); 593710f390968e683a0ad3adf0b517dfcade3564ceFred Quintana this.type = in.readString(); 60603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana } 61603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana 62603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana public int describeContents() { 63603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana return 0; 64603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana } 65603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana 66603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana public void writeToParcel(Parcel dest, int flags) { 673710f390968e683a0ad3adf0b517dfcade3564ceFred Quintana dest.writeString(name); 683710f390968e683a0ad3adf0b517dfcade3564ceFred Quintana dest.writeString(type); 69603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana } 70603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana 71603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana public static final Creator<Account> CREATOR = new Creator<Account>() { 72603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana public Account createFromParcel(Parcel source) { 73603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana return new Account(source); 74603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana } 75603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana 76603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana public Account[] newArray(int size) { 77603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana return new Account[size]; 78603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana } 79603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana }; 80603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana 81603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana public String toString() { 823710f390968e683a0ad3adf0b517dfcade3564ceFred Quintana return "Account {name=" + name + ", type=" + type + "}"; 83603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana } 84603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana} 85