1/*
2 * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.  Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26package javax.print.attribute.standard;
27
28import javax.print.attribute.Attribute;
29import javax.print.attribute.IntegerSyntax;
30import javax.print.attribute.PrintServiceAttribute;
31
32/**
33 * Class {@code QueuedJobCount} is an integer valued printing attribute that
34 * indicates the number of jobs in the printer whose {@link JobState JobState}
35 * is either {@code PENDING}, {@code PENDING_HELD}, {@code PROCESSING}, or
36 * {@code PROCESSING_STOPPED}.
37 * <p>
38 * <b>IPP Compatibility:</b> The integer value gives the IPP integer value. The
39 * category name returned by {@code getName()} gives the IPP attribute name.
40 *
41 * @author Alan Kaminsky
42 */
43public final class QueuedJobCount extends IntegerSyntax
44    implements PrintServiceAttribute {
45
46    /**
47     * Use serialVersionUID from JDK 1.4 for interoperability.
48     */
49    private static final long serialVersionUID = 7499723077864047742L;
50
51    /**
52     * Construct a new queued job count attribute with the given integer value.
53     *
54     * @param  value Integer value
55     * @throws IllegalArgumentException if {@code value} is negative
56     */
57    public QueuedJobCount(int value) {
58        super (value, 0, Integer.MAX_VALUE);
59    }
60
61    /**
62     * Returns whether this queued job count attribute is equivalent to the
63     * passed in object. To be equivalent, all of the following conditions mus
64     * be true:
65     * <ol type=1>
66     *   <li>{@code object} is not {@code null}.
67     *   <li>{@code object} is an instance of class {@code QueuedJobCount}.
68     *   <li>This queued job count attribute's value and {@code object}'s value
69     *   are equal.
70     * </ol>
71     *
72     * @param  object {@code Object} to compare to
73     * @return {@code true} if {@code object} is equivalent to this queued job
74     *         count attribute, {@code false} otherwise
75     */
76    public boolean equals(Object object) {
77        return (super.equals (object) &&
78               object instanceof QueuedJobCount);
79    }
80
81    /**
82     * Get the printing attribute class which is to be used as the "category"
83     * for this printing attribute value.
84     * <p>
85     * For class {@code QueuedJobCount}, the category is class
86     * {@code QueuedJobCount} itself.
87     *
88     * @return printing attribute class (category), an instance of class
89     *         {@link Class java.lang.Class}
90     */
91    public final Class<? extends Attribute> getCategory() {
92        return QueuedJobCount.class;
93    }
94
95    /**
96     * Get the name of the category of which this attribute value is an
97     * instance.
98     * <p>
99     * For class {@code QueuedJobCount}, the category name is
100     * {@code "queued-job-count"}.
101     *
102     * @return attribute category name
103     */
104    public final String getName() {
105        return "queued-job-count";
106    }
107}
108