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