PrintJobId.java revision c43639c3067dda5df189fb3cbf14f256c17e677d
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 19c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmannimport android.annotation.NonNull; 202fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslavimport android.os.Parcel; 212fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslavimport android.os.Parcelable; 222fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslavimport android.text.TextUtils; 232fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav 242fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslavimport java.util.UUID; 252fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav 262fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav/** 272fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * This class represents the id of a print job. 282fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav */ 292fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslavpublic final class PrintJobId implements Parcelable { 302fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav private final String mValue; 312fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav 322fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav /** 332fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * Creates a new instance. 342fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * 352fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * @hide 362fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav */ 372fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav public PrintJobId() { 382fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav this(UUID.randomUUID().toString()); 392fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav } 402fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav 412fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav /** 422fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * Creates a new instance. 432fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * 442fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * @param value The internal value. 452fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * 462fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * @hide 472fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav */ 482fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav public PrintJobId(String value) { 492fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav mValue = value; 502fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav } 512fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav 522fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav @Override 532fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav public int hashCode() { 542fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav final int prime = 31; 552fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav int result = 1; 562fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav result = prime * result + ((mValue != null) ? mValue.hashCode() : 0); 572fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav return result; 582fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav } 592fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav 602fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav @Override 612fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav public boolean equals(Object obj) { 622fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav if (this == obj) { 632fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav return true; 642fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav } 652fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav if (obj == null) { 662fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav return false; 672fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav } 682fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav if (getClass() != obj.getClass()) { 692fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav return false; 702fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav } 712fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav PrintJobId other = (PrintJobId) obj; 722fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav if (!TextUtils.equals(mValue, other.mValue)) { 732fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav return false; 742fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav } 752fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav return true; 762fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav } 772fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav 782fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav @Override 792fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav public void writeToParcel(Parcel parcel, int flags) { 802fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav parcel.writeString(mValue); 812fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav } 822fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav 832fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav @Override 842fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav public int describeContents() { 852fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav return 0; 862fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav } 872fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav 882fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav /** 892fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * Flattens this id to a string. 902fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * 912fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * @return The flattened id. 922fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * 932fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * @hide 942fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav */ 95c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann public @NonNull String flattenToString() { 962fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav return mValue; 972fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav } 982fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav 992fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav /** 1002fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * Unflattens a print job id from a string. 1012fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * 102c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann * @param string The string. 1032fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * @return The unflattened id, or null if the string is malformed. 1042fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * 1052fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav * @hide 1062fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav */ 1072fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav public static PrintJobId unflattenFromString(String string) { 1082fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav return new PrintJobId(string); 1092fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav } 1102fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav 1112fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav public static final Parcelable.Creator<PrintJobId> CREATOR = 1122fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav new Parcelable.Creator<PrintJobId>() { 1132fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav @Override 1142fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav public PrintJobId createFromParcel(Parcel parcel) { 1152fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav return new PrintJobId(parcel.readString()); 1162fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav } 1172fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav 1182fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav @Override 1192fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav public PrintJobId[] newArray(int size) { 1202fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav return new PrintJobId[size]; 1212fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav } 1222fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav }; 1232fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav} 124