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.EnumSyntax; 30 import javax.print.attribute.PrintJobAttribute; 31 32 /** 33 * {@code JobState} is a printing attribute class, an enumeration, that 34 * identifies the current state of a print job. Class {@code JobState} defines 35 * standard job state values. A Print Service implementation only needs to 36 * report those job states which are appropriate for the particular 37 * implementation; it does not have to report every defined job state. The 38 * {@link JobStateReasons JobStateReasons} attribute augments the 39 * {@code JobState} attribute to give more detailed information about the job in 40 * the given job state. 41 * <p> 42 * <b>IPP Compatibility:</b> The category name returned by {@code getName()} is 43 * the IPP attribute name. The enumeration's integer value is the IPP enum 44 * value. The {@code toString()} method returns the IPP string representation of 45 * the attribute value. 46 * 47 * @author Alan Kaminsky 48 */ 49 public class JobState extends EnumSyntax implements PrintJobAttribute { 50 51 /** 52 * Use serialVersionUID from JDK 1.4 for interoperability. 53 */ 54 private static final long serialVersionUID = 400465010094018920L; 55 56 /** 57 * The job state is unknown. 58 */ 59 public static final JobState UNKNOWN = new JobState(0); 60 61 /** 62 * The job is a candidate to start processing, but is not yet processing. 63 */ 64 public static final JobState PENDING = new JobState(3); 65 66 /** 67 * The job is not a candidate for processing for any number of reasons but 68 * will return to the {@code PENDING} state as soon as the reasons are no 69 * longer present. The job's {@link JobStateReasons JobStateReasons} 70 * attribute must indicate why the job is no longer a candidate for 71 * processing. 72 */ 73 public static final JobState PENDING_HELD = new JobState(4); 74 75 /** 76 * The job is processing. One or more of the following activities is 77 * occurring: 78 * <ol type=1> 79 * <li>The job is using, or is attempting to use, one or more purely 80 * software processes that are analyzing, creating, or interpreting a PDL, 81 * etc. 82 * <li>The job is using, or is attempting to use, one or more hardware 83 * devices that are interpreting a PDL, making marks on a medium, and/or 84 * performing finishing, such as stapling, etc. 85 * <li>The printer has made the job ready for printing, but the output 86 * device is not yet printing it, either because the job hasn't reached 87 * the output device or because the job is queued in the output device or 88 * some other spooler, awaiting the output device to print it. 89 * </ol> 90 * When the job is in the {@code PROCESSING} state, the entire job state 91 * includes the detailed status represented in the printer's 92 * {@link PrinterState PrinterState} and 93 * {@link PrinterStateReasons PrinterStateReasons} attributes. 94 * <p> 95 * Implementations may, though they need not, include additional values in 96 * the job's {@link JobStateReasons JobStateReasons} attribute to indicate 97 * the progress of the job, such as adding the {@code JOB_PRINTING} value to 98 * indicate when the output device is actually making marks on paper and/or 99 * the {@code PROCESSING_TO_STOP_POINT} value to indicate that the printer 100 * is in the process of canceling or aborting the job. 101 */ 102 public static final JobState PROCESSING = new JobState (5); 103 104 /** 105 * The job has stopped while processing for any number of reasons and will 106 * return to the {@code PROCESSING} state as soon as the reasons are no 107 * longer present. 108 * <p> 109 * The job's {@link JobStateReasons JobStateReasons} attribute may indicate 110 * why the job has stopped processing. For example, if the output device is 111 * stopped, the {@code PRINTER_STOPPED} value may be included in the job's 112 * {@link JobStateReasons JobStateReasons} attribute. 113 * <p> 114 * <i>Note:</i> When an output device is stopped, the device usually 115 * indicates its condition in human readable form locally at the device. A 116 * client can obtain more complete device status remotely by querying the 117 * printer's {@link PrinterState PrinterState} and 118 * {@link PrinterStateReasons PrinterStateReasons} attributes. 119 */ 120 public static final JobState PROCESSING_STOPPED = new JobState (6); 121 122 /** 123 * The job has been canceled by some human agency, the printer has completed 124 * canceling the job, and all job status attributes have reached their final 125 * values for the job. While the printer is canceling the job, the job 126 * remains in its current state, but the job's {@link JobStateReasons 127 * JobStateReasons} attribute should contain the 128 * {@code PROCESSING_TO_STOP_POINT} value and one of the 129 * {@code CANCELED_BY_USER}, {@code CANCELED_BY_OPERATOR}, or 130 * {@code CANCELED_AT_DEVICE} values. When the job moves to the 131 * {@code CANCELED} state, the {@code PROCESSING_TO_STOP_POINT} value, if 132 * present, must be removed, but the CANCELED_BY_<i>xxx</i> value, if 133 * present, must remain. 134 */ 135 public static final JobState CANCELED = new JobState (7); 136 137 /** 138 * The job has been aborted by the system (usually while the job was in the 139 * {@code PROCESSING} or {@code PROCESSING_STOPPED} state), the printer has 140 * completed aborting the job, and all job status attributes have reached 141 * their final values for the job. While the printer is aborting the job, 142 * the job remains in its current state, but the job's 143 * {@link JobStateReasons JobStateReasons} attribute should contain the 144 * {@code PROCESSING_TO_STOP_POINT} and {@code ABORTED_BY_SYSTEM} values. 145 * When the job moves to the {@code ABORTED} state, the 146 * {@code PROCESSING_TO_STOP_POINT} value, if present, must be removed, but 147 * the {@code ABORTED_BY_SYSTEM} value, if present, must remain. 148 */ 149 public static final JobState ABORTED = new JobState (8); 150 151 /** 152 * The job has completed successfully or with warnings or errors after 153 * processing, all of the job media sheets have been successfully stacked in 154 * the appropriate output bin(s), and all job status attributes have reached 155 * their final values for the job. The job's 156 * {@link JobStateReasons JobStateReasons} attribute should contain one of 157 * these values: {@code COMPLETED_SUCCESSFULLY}, 158 * {@code COMPLETED_WITH_WARNINGS}, or {@code COMPLETED_WITH_ERRORS}. 159 */ 160 public static final JobState COMPLETED = new JobState (9); 161 162 // Hidden constructors. 163 164 /** 165 * Construct a new job state enumeration value with the given integer value. 166 * 167 * @param value Integer value 168 */ 169 protected JobState(int value) { 170 super (value); 171 } 172 173 /** 174 * The string table for class {@code JobState}. 175 */ 176 private static final String[] myStringTable = 177 {"unknown", 178 null, 179 null, 180 "pending", 181 "pending-held", 182 "processing", 183 "processing-stopped", 184 "canceled", 185 "aborted", 186 "completed"}; 187 188 /** 189 * The enumeration value table for class {@code JobState}. 190 */ 191 private static final JobState[] myEnumValueTable = 192 {UNKNOWN, 193 null, 194 null, 195 PENDING, 196 PENDING_HELD, 197 PROCESSING, 198 PROCESSING_STOPPED, 199 CANCELED, 200 ABORTED, 201 COMPLETED}; 202 203 /** 204 * Returns the string table for class {@code JobState}. 205 */ 206 protected String[] getStringTable() { 207 return myStringTable; 208 } 209 210 /** 211 * Returns the enumeration value table for class {@code JobState}. 212 */ 213 protected EnumSyntax[] getEnumValueTable() { 214 return myEnumValueTable; 215 } 216 217 /** 218 * Get the printing attribute class which is to be used as the "category" 219 * for this printing attribute value. 220 * <p> 221 * For class {@code JobState} and any vendor-defined subclasses, the 222 * category is class {@code JobState} itself. 223 * 224 * @return printing attribute class (category), an instance of class 225 * {@link Class java.lang.Class} 226 */ 227 public final Class<? extends Attribute> getCategory() { 228 return JobState.class; 229 } 230 231 /** 232 * Get the name of the category of which this attribute value is an 233 * instance. 234 * <p> 235 * For class {@code JobState} and any vendor-defined subclasses, the 236 * category name is {@code "job-state"}. 237 * 238 * @return attribute category name 239 */ 240 public final String getName() { 241 return "job-state"; 242 } 243 }