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