PrinterId.java revision 8c43376ea83a67414bd6823a472b76d41160239e
14b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov/* 24b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Copyright (C) 2013 The Android Open Source Project 34b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 44b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Licensed under the Apache License, Version 2.0 (the "License"); 54b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * you may not use this file except in compliance with the License. 64b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * You may obtain a copy of the License at 74b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 84b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * http://www.apache.org/licenses/LICENSE-2.0 94b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 104b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Unless required by applicable law or agreed to in writing, software 114b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * distributed under the License is distributed on an "AS IS" BASIS, 124b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * See the License for the specific language governing permissions and 144b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * limitations under the License. 154b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 164b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 174b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovpackage android.print; 184b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 194b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.content.ComponentName; 204b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.os.Parcel; 214b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.os.Parcelable; 2255b409a97cf6376399a0940313ea852368727d6fSvetoslav Ganovimport android.text.TextUtils; 234b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 244b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov/** 254b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * This class represents the unique id of a printer. 264b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 274b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovpublic final class PrinterId implements Parcelable { 284b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 298c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov private final ComponentName mServiceName; 304b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 318c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov private final String mPrinterName; 324b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 334b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 344b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Creates a new instance. 354b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 368c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov * @param serviceName The managing print service. 378c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov * @param printerName The unique name within the managing service. 384b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 394b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @hide 404b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 418c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov public PrinterId(ComponentName serviceName, String printerName) { 428c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov mServiceName = serviceName; 438c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov mPrinterName = printerName; 444b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 454b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 464b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov private PrinterId(Parcel parcel) { 478c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov mServiceName = parcel.readParcelable(null); 488c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov mPrinterName = parcel.readString(); 494b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 504b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 514b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 524b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * The id of the print service this printer is managed by. 534b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 544b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @return The print service component name. 554b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 564b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @hide 574b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 588c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov public ComponentName getServiceName() { 598c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov return mServiceName; 604b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 614b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 624b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 638c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov * Gets the name of this printer which is unique in the context 644b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * of the print service that manages it. 654b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 668c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov * @return The printer name. 674b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 688c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov public String getPrinterName() { 698c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov return mPrinterName; 704b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 714b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 724b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov @Override 734b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public int describeContents() { 744b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return 0; 754b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 764b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 774b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov @Override 784b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public void writeToParcel(Parcel parcel, int flags) { 798c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov parcel.writeParcelable(mServiceName, flags); 808c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov parcel.writeString(mPrinterName); 814b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 824b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 834b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov @Override 844b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public boolean equals(Object object) { 854b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov if (this == object) { 864b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return true; 874b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 884b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov if (object == null) { 894b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return false; 904b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 914b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov if (getClass() != object.getClass()) { 924b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return false; 934b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 944b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov PrinterId other = (PrinterId) object; 958c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov if (mServiceName == null) { 968c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov if (other.mServiceName != null) { 974b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return false; 984b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 998c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov } else if (!mServiceName.equals(other.mServiceName)) { 1004b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return false; 1014b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 1028c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov if (!TextUtils.equals(mPrinterName, other.mPrinterName)) { 1034b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return false; 1044b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 1054b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return true; 1064b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 1074b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 1084b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov @Override 1094b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public int hashCode() { 1104b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov final int prime = 31; 1114b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov int hashCode = 1; 1128c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov hashCode = prime * hashCode + ((mServiceName != null) 1138c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov ? mServiceName.hashCode() : 1); 1148c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov hashCode = prime * hashCode + mPrinterName.hashCode(); 1154b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return hashCode; 1164b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 1174b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 1184b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov @Override 1194b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public String toString() { 1204b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov StringBuilder builder = new StringBuilder(); 1214b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov builder.append("PrinterId{"); 1228c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov builder.append(mServiceName.flattenToString()); 1234b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov builder.append(":"); 1248c43376ea83a67414bd6823a472b76d41160239eSvetoslav Ganov builder.append(mPrinterName); 1254b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov builder.append('}'); 1264b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return builder.toString(); 1274b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 1284b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 1294b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public static final Parcelable.Creator<PrinterId> CREATOR = 1304b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov new Creator<PrinterId>() { 1314b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov @Override 1324b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public PrinterId createFromParcel(Parcel parcel) { 1334b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return new PrinterId(parcel); 1344b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 1354b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 1364b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov @Override 1374b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public PrinterId[] newArray(int size) { 1384b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return new PrinterId[size]; 1394b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 1404b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov }; 1414b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov} 142