PrintJob.java revision 4b9a4d16872bbb50712e007b419ac0b35ff1582d
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 Ganov
204b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov/**
214b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * This class represents a print job from the perspective of
224b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * an application.
234b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */
244b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovpublic final class PrintJob {
254b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov
264b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov    private final int mId;
274b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov
284b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov    private final PrintManager mPrintManager;
294b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov
304b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov    private PrintJobInfo mCachedInfo;
314b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov
324b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov    PrintJob(PrintJobInfo info, PrintManager printManager) {
334b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov        mCachedInfo = info;
344b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov        mPrintManager = printManager;
354b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov        mId = info.getId();
364b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov    }
374b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov
384b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov    /**
394b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov     * Gets the unique print job id.
404b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov     *
414b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov     * @return The id.
424b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov     */
434b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov    public int getId() {
444b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov        return mId;
454b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov    }
464b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov
474b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov    /**
484b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov     * Gets the {@link PrintJobInfo} that describes this job.
494b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov     * <p>
504b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov     * <strong>Node:</strong>The returned info object is a snapshot of the
514b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov     * current print job state. Every call to this method returns a fresh
524b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov     * info object that reflects the current print job state.
534b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov     * </p>
544b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov     *
554b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov     * @return The print job info.
564b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov     */
574b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov    public PrintJobInfo getInfo() {
584b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov        PrintJobInfo info = mPrintManager.getPrintJob(mId);
594b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov        if (info != null) {
604b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov            mCachedInfo = info;
614b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov        }
624b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov        return mCachedInfo;
634b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov    }
644b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov
654b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov    /**
664b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov     * Cancels this print job.
674b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov     */
684b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov    public void cancel() {
694b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov        mPrintManager.cancelPrintJob(mId);
704b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov    }
714b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov
724b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov    @Override
734b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov    public boolean equals(Object obj) {
744b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov        if (this == obj) {
754b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov            return true;
764b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov        }
774b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov        if (obj == null) {
784b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov            return false;
794b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov        }
804b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov        if (getClass() != obj.getClass()) {
814b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov            return false;
824b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov        }
834b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov        PrintJob other = (PrintJob) obj;
844b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov        return mId == other.mId;
854b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov    }
864b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov
874b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov    @Override
884b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov    public int hashCode() {
894b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov        return mId;
904b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov    }
914b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov}
92