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 
26 package javax.print.attribute.standard;
27 
28 import javax.print.attribute.Attribute;
29 import javax.print.attribute.IntegerSyntax;
30 import javax.print.attribute.PrintJobAttribute;
31 
32 /**
33  * Class {@code JobKOctetsProcessed} is an integer valued printing attribute
34  * class that specifies the total number of print data octets processed so far
35  * in K octets, i.e., in units of 1024 octets. The value must be rounded up, so
36  * that a job between 1 and 1024 octets inclusive must be indicated as being 1K
37  * octets, 1025 to 2048 inclusive must be 2K, etc. For a multidoc print job (a
38  * job with multiple documents), the JobKOctetsProcessed value is computed by
39  * adding up the individual documents' number of octets processed so far, then
40  * rounding up to the next K octets value.
41  * <p>
42  * The {@code JobKOctetsProcessed} attribute describes the progress of the job.
43  * This attribute is intended to be a counter. That is, the JobKOctetsProcessed
44  * value for a job that has not started processing must be 0. When the job's
45  * {@link JobState JobState} is {@code PROCESSING} or
46  * {@code PROCESSING_STOPPED}, the {@code JobKOctetsProcessed} value is intended
47  * to increase as the job is processed; it indicates the amount of the job that
48  * has been processed at the time the Print Job's attribute set is queried or at
49  * the time a print job event is reported. When the job enters the
50  * {@code COMPLETED}, {@code CANCELED}, or {@code ABORTED} states, the
51  * {@code JobKOctetsProcessed} value is the final value for the job.
52  * <p>
53  * For implementations where multiple copies are produced by the interpreter
54  * with only a single pass over the data, the final value of the
55  * JobKOctetsProcessed attribute must be equal to the value of the
56  * {@link JobKOctets JobKOctets} attribute. For implementations where multiple
57  * copies are produced by the interpreter by processing the data for each copy,
58  * the final value must be a multiple of the value of the
59  * {@link JobKOctets JobKOctets} attribute.
60  * <p>
61  * <b>IPP Compatibility:</b> The integer value gives the IPP integer value. The
62  * category name returned by {@code getName()} gives the IPP attribute name.
63  *
64  * @author Alan Kaminsky
65  * @see JobKOctets
66  * @see JobKOctetsSupported
67  * @see JobImpressionsCompleted
68  * @see JobMediaSheetsCompleted
69  */
70 public final class JobKOctetsProcessed extends IntegerSyntax
71         implements PrintJobAttribute {
72 
73     /**
74      * Use serialVersionUID from JDK 1.4 for interoperability.
75      */
76     private static final long serialVersionUID = -6265238509657881806L;
77 
78     /**
79      * Construct a new job K octets processed attribute with the given integer
80      * value.
81      *
82      * @param  value Integer value
83      * @throws IllegalArgumentException if {@code value} is negative
84      */
JobKOctetsProcessed(int value)85     public JobKOctetsProcessed(int value) {
86         super (value, 0, Integer.MAX_VALUE);
87     }
88 
89     /**
90      * Returns whether this job K octets processed attribute is equivalent to
91      * the passed in object. To be equivalent, all of the following conditions
92      * must be true:
93      * <ol type=1>
94      *   <li>{@code object} is not {@code null}.
95      *   <li>{@code object} is an instance of class {@code JobKOctetsProcessed}.
96      *   <li>This job K octets processed attribute's value and {@code object}'s
97      *   value are equal.
98      * </ol>
99      *
100      * @param  object {@code Object} to compare to
101      * @return {@code true} if {@code object} is equivalent to this job K octets
102      *         processed attribute, {@code false} otherwise
103      */
equals(Object object)104     public boolean equals(Object object) {
105         return(super.equals (object) &&
106                object instanceof JobKOctetsProcessed);
107     }
108 
109     /**
110      * Get the printing attribute class which is to be used as the "category"
111      * for this printing attribute value.
112      * <p>
113      * For class {@code JobKOctetsProcessed}, the category is class
114      * {@code JobKOctetsProcessed} itself.
115      *
116      * @return printing attribute class (category), an instance of class
117      *         {@link Class java.lang.Class}
118      */
getCategory()119     public final Class<? extends Attribute> getCategory() {
120         return JobKOctetsProcessed.class;
121     }
122 
123     /**
124      * Get the name of the category of which this attribute value is an
125      * instance.
126      * <p>
127      * For class {@code JobKOctetsProcessed}, the category name is
128      * {@code "job-k-octets-processed"}.
129      *
130      * @return attribute category name
131      */
getName()132     public final String getName() {
133         return "job-k-octets-processed";
134     }
135 }
136