12fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav/* 22fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * Copyright (C) 2013 The Android Open Source Project 32fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * 42fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * Licensed under the Apache License, Version 2.0 (the "License"); 52fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * you may not use this file except in compliance with the License. 62fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * You may obtain a copy of the License at 72fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * 82fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * http://www.apache.org/licenses/LICENSE-2.0 92fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * 102fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * Unless required by applicable law or agreed to in writing, software 112fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * distributed under the License is distributed on an "AS IS" BASIS, 122fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * See the License for the specific language governing permissions and 142fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * limitations under the License. 152fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav */ 162fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav 172fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslavpackage android.print; 182fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav 192fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslavimport android.os.Parcel; 202fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslavimport android.os.Parcelable; 212fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslavimport android.text.TextUtils; 222fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav 232fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslavimport java.util.UUID; 242fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav 252fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav/** 262fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * This class represents the id of a print job. 272fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav */ 282fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslavpublic final class PrintJobId implements Parcelable { 292fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav private final String mValue; 302fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav 312fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav /** 322fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * Creates a new instance. 332fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * 342fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * @hide 352fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav */ 362fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav public PrintJobId() { 372fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav this(UUID.randomUUID().toString()); 382fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav } 392fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav 402fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav /** 412fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * Creates a new instance. 422fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * 432fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * @param value The internal value. 442fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * 452fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * @hide 462fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav */ 472fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav public PrintJobId(String value) { 482fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav mValue = value; 492fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav } 502fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav 512fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav @Override 522fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav public int hashCode() { 532fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav final int prime = 31; 542fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav int result = 1; 552fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav result = prime * result + ((mValue != null) ? mValue.hashCode() : 0); 562fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav return result; 572fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav } 582fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav 592fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav @Override 602fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav public boolean equals(Object obj) { 612fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav if (this == obj) { 622fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav return true; 632fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav } 642fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav if (obj == null) { 652fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav return false; 662fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav } 672fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav if (getClass() != obj.getClass()) { 682fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav return false; 692fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav } 702fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav PrintJobId other = (PrintJobId) obj; 712fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav if (!TextUtils.equals(mValue, other.mValue)) { 722fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav return false; 732fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav } 742fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav return true; 752fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav } 762fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav 772fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav @Override 782fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav public void writeToParcel(Parcel parcel, int flags) { 792fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav parcel.writeString(mValue); 802fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav } 812fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav 822fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav @Override 832fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav public int describeContents() { 842fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav return 0; 852fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav } 862fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav 872fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav /** 882fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * Flattens this id to a string. 892fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * 902fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * @return The flattened id. 912fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * 922fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * @hide 932fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav */ 942fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav public String flattenToString() { 952fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav return mValue; 962fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav } 972fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav 982fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav /** 992fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * Unflattens a print job id from a string. 1002fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * 1012fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * @string The string. 1022fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * @return The unflattened id, or null if the string is malformed. 1032fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * 1042fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * @hide 1052fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav */ 1062fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav public static PrintJobId unflattenFromString(String string) { 1072fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav return new PrintJobId(string); 1082fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav } 1092fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav 1102fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav public static final Parcelable.Creator<PrintJobId> CREATOR = 1112fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav new Parcelable.Creator<PrintJobId>() { 1122fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav @Override 1132fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav public PrintJobId createFromParcel(Parcel parcel) { 1142fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav return new PrintJobId(parcel.readString()); 1152fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav } 1162fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav 1172fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav @Override 1182fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav public PrintJobId[] newArray(int size) { 1192fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav return new PrintJobId[size]; 1202fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav } 1212fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav }; 1222fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav} 123