blob: aef06254f1bf9da3a261d9c62ea5d084eeceedba [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/*
2 * Copyright 2000-2004 Sun Microsystems, Inc. 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. Sun designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22 * CA 95054 USA or visit www.sun.com if you need additional information or
23 * have any questions.
24 */
25package javax.print.attribute.standard;
26
27import javax.print.attribute.EnumSyntax;
28import javax.print.attribute.Attribute;
29
30/**
31 * Class JobStateReason is a printing attribute class, an enumeration, that
32 * provides additional information about the job's current state, i.e.,
33 * information that augments the value of the job's {@link JobState JobState}
34 * attribute. Class JobStateReason defines standard job state reason values. A
35 * Print Service implementation only needs to report those job state
36 * reasons which are appropriate for the particular implementation; it does not
37 * have to report every defined job state reason.
38 * <P>
39 * Instances of JobStateReason do not appear in a Print Job's attribute set
40 * directly. Rather, a {@link JobStateReasons JobStateReasons} attribute appears
41 * in the Print Job's attribute set. The {@link JobStateReasons JobStateReasons}
42 * attribute contains zero, one, or more than one JobStateReason objects which
43 * pertain to the Print Job's status. The printer adds a JobStateReason object
44 * to the Print Job's {@link JobStateReasons JobStateReasons} attribute when the
45 * corresponding condition becomes true of the Print Job, and the printer
46 * removes the JobStateReason object again when the corresponding condition
47 * becomes false, regardless of whether the Print Job's overall {@link JobState
48 * JobState} also changed.
49 * <P>
50 * <B>IPP Compatibility:</B> The category name returned by
51 * <CODE>getName()</CODE> is the IPP attribute name. The enumeration's
52 * integer value is the IPP enum value. The <code>toString()</code> method
53 * returns the IPP string representation of the attribute value.
54 * <P>
55 *
56 * @author Alan Kaminsky
57 */
58public class JobStateReason extends EnumSyntax implements Attribute {
59
60 private static final long serialVersionUID = -8765894420449009168L;
61
62 /**
63 * The printer has created the Print Job, but the printer has not finished
64 * accessing or accepting all the print data yet.
65 */
66 public static final JobStateReason
67 JOB_INCOMING = new JobStateReason(0);
68
69 /**
70 * The printer has created the Print Job, but the printer is expecting
71 * additional print data before it can move the job into the PROCESSING
72 * state. If a printer starts processing before it has received all data,
73 * the printer removes the JOB_DATA_INSUFFICIENT reason, but the
74 * JOB_INCOMING reason remains. If a printer starts processing after it
75 * has received all data, the printer removes the JOB_DATA_INSUFFICIENT
76 * and JOB_INCOMING reasons at the same time.
77 */
78 public static final JobStateReason
79 JOB_DATA_INSUFFICIENT = new JobStateReason(1);
80
81 /**
82 * The Printer could not access one or more documents passed by reference
83 * (i.e., the print data representation object is a URL). This reason is
84 * intended to cover any file access problem,including file does not exist
85 * and access denied because of an access control problem. Whether the
86 * printer aborts the job and moves the job to the ABORTED job state or
87 * prints all documents that are accessible and moves the job to the
88 * COMPLETED job state and adds the COMPLETED_WITH_ERRORS reason to the
89 * job's {@link JobStateReasons JobStateReasons} attribute depends on
90 * implementation and/or site policy. This value should be supported if
91 * the printer supports doc flavors with URL print data representation
92 * objects.
93 */
94 public static final JobStateReason
95 DOCUMENT_ACCESS_ERROR = new JobStateReason(2);
96
97 /**
98 * The job was not completely submitted for some unforeseen reason.
99 * Possibilities include (1) the printer has crashed before the job was
100 * fully submitted by the client, (2) the printer or the document transfer
101 * method has crashed in some non-recoverable way before the document data
102 * was entirely transferred to the printer, (3) the client crashed before
103 * the job was fully submitted.
104 */
105 public static final JobStateReason
106 SUBMISSION_INTERRUPTED = new JobStateReason(3);
107
108 /**
109 * The printer is transmitting the job to the output device.
110 */
111 public static final JobStateReason
112 JOB_OUTGOING = new JobStateReason(4);
113
114 /**
115 * The value of the job's {@link JobHoldUntil JobHoldUntil} attribute was
116 * specified with a date-time that is still in the future. The job must
117 * not be a candidate for processing until this reason is removed and
118 * there are
119 * no other reasons to hold the job. This value should be supported if the
120 * {@link JobHoldUntil JobHoldUntil} job template attribute is supported.
121 */
122 public static final JobStateReason
123 JOB_HOLD_UNTIL_SPECIFIED = new JobStateReason(5);
124
125 /**
126 * At least one of the resources needed by the job, such as media, fonts,
127 * resource objects, etc., is not ready on any of the physical printers
128 * for which the job is a candidate. This condition may be detected
129 * when the job is accepted, or subsequently while the job is pending
130 * or processing, depending on implementation.
131 * The job may remain in its current state or
132 * be moved to the PENDING_HELD state, depending on implementation and/or
133 * job scheduling policy.
134 */
135 public static final JobStateReason
136 RESOURCES_ARE_NOT_READY = new JobStateReason(6);
137
138 /**
139 * The value of the printer's {@link PrinterStateReasons
140 * PrinterStateReasons} attribute contains a {@link PrinterStateReason
141 * PrinterStateReason} value of STOPPED_PARTLY.
142 */
143 public static final JobStateReason
144 PRINTER_STOPPED_PARTLY = new JobStateReason(7);
145
146 /**
147 * The value of the printer's {@link PrinterState PrinterState} attribute
148 * ia STOPPED.
149 */
150 public static final JobStateReason
151 PRINTER_STOPPED = new JobStateReason(8);
152
153 /**
154 * The job is in the PROCESSING state, but more specifically, the printer
155 * ia interpreting the document data.
156 */
157 public static final JobStateReason
158 JOB_INTERPRETING = new JobStateReason(9);
159
160 /**
161 * The job is in the PROCESSING state, but more specifically, the printer
162 * has queued the document data.
163 */
164 public static final JobStateReason JOB_QUEUED = new JobStateReason(10);
165
166 /**
167 * The job is in the PROCESSING state, but more specifically, the printer
168 * is interpreting document data and producing another electronic
169 * representation.
170 */
171 public static final JobStateReason
172 JOB_TRANSFORMING = new JobStateReason(11);
173
174 /**
175 * The job is in the PENDING_HELD, PENDING, or PROCESSING state, but more
176 * specifically, the printer has completed enough processing of the document
177 * to be able to start marking and the job is waiting for the marker.
178 * Systems that require human intervention to release jobs put the job into
179 * the PENDING_HELD job state. Systems that automatically select a job to
180 * use the marker put the job into the PENDING job state or keep the job
181 * in the PROCESSING job state while waiting for the marker, depending on
182 * implementation. All implementations put the job into (or back into) the
183 * PROCESSING state when marking does begin.
184 */
185 public static final JobStateReason
186 JOB_QUEUED_FOR_MARKER = new JobStateReason(12);
187
188 /**
189 * The output device is marking media. This value is useful for printers
190 * which spend a great deal of time processing (1) when no marking is
191 * happening and then want to show that marking is now happening or (2) when
192 * the job is in the process of being canceled or aborted while the job
193 * remains in the PROCESSING state, but the marking has not yet stopped so
194 * that impression or sheet counts are still increasing for the job.
195 */
196 public static final JobStateReason
197 JOB_PRINTING = new JobStateReason(13);
198
199 /**
200 * The job was canceled by the owner of the job, i.e., by a user whose
201 * authenticated identity is the same as the value of the originating user
202 * that created the Print Job, or by some other authorized end-user, such as
203 * a member of the job owner's security group. This value should be
204 * supported.
205 */
206 public static final JobStateReason
207 JOB_CANCELED_BY_USER = new JobStateReason(14);
208
209 /**
210 * The job was canceled by the operator, i.e., by a user who has been
211 * authenticated as having operator privileges (whether local or remote). If
212 * the security policy is to allow anyone to cancel anyone's job, then this
213 * value may be used when the job is canceled by someone other than the
214 * owner of the job. For such a security policy, in effect, everyone is an
215 * operator as far as canceling jobs is concerned. This value should be
216 * supported if the implementation permits canceling by someone other than
217 * the owner of the job.
218 */
219 public static final JobStateReason
220 JOB_CANCELED_BY_OPERATOR = new JobStateReason(15);
221
222 /**
223 * The job was canceled by an unidentified local user, i.e., a user at a
224 * console at the device. This value should be supported if the
225 * implementation supports canceling jobs at the console.
226 */
227 public static final JobStateReason
228 JOB_CANCELED_AT_DEVICE = new JobStateReason(16);
229
230 /**
231 * The job was aborted by the system. Either the job (1) is in the process
232 * of being aborted, (2) has been aborted by the system and placed in the
233 * ABORTED state, or (3) has been aborted by the system and placed in the
234 * PENDING_HELD state, so that a user or operator can manually try the job
235 * again. This value should be supported.
236 */
237 public static final JobStateReason
238 ABORTED_BY_SYSTEM = new JobStateReason(17);
239
240 /**
241 * The job was aborted by the system because the printer determined while
242 * attempting to decompress the document's data that the compression is
243 * actually not among those supported by the printer. This value must be
244 * supported, since {@link Compression Compression} is a required doc
245 * description attribute.
246 */
247 public static final JobStateReason
248 UNSUPPORTED_COMPRESSION = new JobStateReason(18);
249
250 /**
251 * The job was aborted by the system because the printer encountered an
252 * error in the document data while decompressing it. If the printer posts
253 * this reason, the document data has already passed any tests that would
254 * have led to the UNSUPPORTED_COMPRESSION job state reason.
255 */
256 public static final JobStateReason
257 COMPRESSION_ERROR = new JobStateReason(19);
258
259 /**
260 * The job was aborted by the system because the document data's document
261 * format (doc flavor) is not among those supported by the printer. If the
262 * client specifies a doc flavor with a MIME type of
263 * <CODE>"application/octet-stream"</CODE>, the printer may abort the job if
264 * the printer cannot determine the document data's actual format through
265 * auto-sensing (even if the printer supports the document format if
266 * specified explicitly). This value must be supported, since a doc flavor
267 * is required to be specified for each doc.
268 */
269 public static final JobStateReason
270 UNSUPPORTED_DOCUMENT_FORMAT = new JobStateReason(20);
271
272 /**
273 * The job was aborted by the system because the printer encountered an
274 * error in the document data while processing it. If the printer posts this
275 * reason, the document data has already passed any tests that would have
276 * led to the UNSUPPORTED_DOCUMENT_FORMAT job state reason.
277 */
278 public static final JobStateReason
279 DOCUMENT_FORMAT_ERROR = new JobStateReason(21);
280
281 /**
282 * The requester has canceled the job or the printer has aborted the job,
283 * but the printer is still performing some actions on the job until a
284 * specified stop point occurs or job termination/cleanup is completed.
285 * <P>
286 * If the implementation requires some measurable time to cancel the job in
287 * the PROCESSING or PROCESSING_STOPPED job states, the printer must use
288 * this reason to indicate that the printer is still performing some actions
289 * on the job while the job remains in the PROCESSING or PROCESSING_STOPPED
290 * state. After all the job's job description attributes have stopped
291 * incrementing, the printer moves the job from the PROCESSING state to the
292 * CANCELED or ABORTED job states.
293 */
294 public static final JobStateReason
295 PROCESSING_TO_STOP_POINT = new JobStateReason(22);
296
297 /**
298 * The printer is off-line and accepting no jobs. All PENDING jobs are put
299 * into the PENDING_HELD state. This situation could be true if the
300 * service's or document transform's input is impaired or broken.
301 */
302 public static final JobStateReason
303 SERVICE_OFF_LINE = new JobStateReason(23);
304
305 /**
306 * The job completed successfully. This value should be supported.
307 */
308 public static final JobStateReason
309 JOB_COMPLETED_SUCCESSFULLY = new JobStateReason(24);
310
311 /**
312 * The job completed with warnings. This value should be supported if the
313 * implementation detects warnings.
314 */
315 public static final JobStateReason
316 JOB_COMPLETED_WITH_WARNINGS = new JobStateReason(25);
317
318 /**
319 * The job completed with errors (and possibly warnings too). This value
320 * should be supported if the implementation detects errors.
321 */
322 public static final JobStateReason
323 JOB_COMPLETED_WITH_ERRORS = new JobStateReason(26);
324
325 /**
326 * This job is retained and is currently able to be restarted. If
327 * JOB_RESTARTABLE is contained in the job's {@link JobStateReasons
328 * JobStateReasons} attribute, then the printer must accept a request to
329 * restart that job. This value should be supported if restarting jobs is
330 * supported. <I>[The capability for restarting jobs is not in the Java
331 * Print Service API at present.]</I>
332 */
333 public static final JobStateReason
334 JOB_RESTARTABLE = new JobStateReason(27);
335
336 /**
337 * The job has been forwarded to a device or print system that is unable to
338 * send back status. The printer sets the job's {@link JobState JobState}
339 * attribute to COMPLETED and adds the QUEUED_IN_DEVICE reason to the job's
340 * {@link JobStateReasons JobStateReasons} attribute to indicate that the
341 * printer has no additional information about the job and never will have
342 * any better information.
343 */
344 public static final JobStateReason
345 QUEUED_IN_DEVICE = new JobStateReason(28);
346
347 /**
348 * Construct a new job state reason enumeration value with the given
349 * integer value.
350 *
351 * @param value Integer value.
352 */
353 protected JobStateReason(int value) {
354 super (value);
355 }
356
357 private static final String[] myStringTable = {
358 "job-incoming",
359 "job-data-insufficient",
360 "document-access-error",
361 "submission-interrupted",
362 "job-outgoing",
363 "job-hold-until-specified",
364 "resources-are-not-ready",
365 "printer-stopped-partly",
366 "printer-stopped",
367 "job-interpreting",
368 "job-queued",
369 "job-transforming",
370 "job-queued-for-marker",
371 "job-printing",
372 "job-canceled-by-user",
373 "job-canceled-by-operator",
374 "job-canceled-at-device",
375 "aborted-by-system",
376 "unsupported-compression",
377 "compression-error",
378 "unsupported-document-format",
379 "document-format-error",
380 "processing-to-stop-point",
381 "service-off-line",
382 "job-completed-successfully",
383 "job-completed-with-warnings",
384 "job-completed-with-errors",
385 "job-restartable",
386 "queued-in-device"};
387
388 private static final JobStateReason[] myEnumValueTable = {
389 JOB_INCOMING,
390 JOB_DATA_INSUFFICIENT,
391 DOCUMENT_ACCESS_ERROR,
392 SUBMISSION_INTERRUPTED,
393 JOB_OUTGOING,
394 JOB_HOLD_UNTIL_SPECIFIED,
395 RESOURCES_ARE_NOT_READY,
396 PRINTER_STOPPED_PARTLY,
397 PRINTER_STOPPED,
398 JOB_INTERPRETING,
399 JOB_QUEUED,
400 JOB_TRANSFORMING,
401 JOB_QUEUED_FOR_MARKER,
402 JOB_PRINTING,
403 JOB_CANCELED_BY_USER,
404 JOB_CANCELED_BY_OPERATOR,
405 JOB_CANCELED_AT_DEVICE,
406 ABORTED_BY_SYSTEM,
407 UNSUPPORTED_COMPRESSION,
408 COMPRESSION_ERROR,
409 UNSUPPORTED_DOCUMENT_FORMAT,
410 DOCUMENT_FORMAT_ERROR,
411 PROCESSING_TO_STOP_POINT,
412 SERVICE_OFF_LINE,
413 JOB_COMPLETED_SUCCESSFULLY,
414 JOB_COMPLETED_WITH_WARNINGS,
415 JOB_COMPLETED_WITH_ERRORS,
416 JOB_RESTARTABLE,
417 QUEUED_IN_DEVICE};
418
419 /**
420 * Returns the string table for class JobStateReason.
421 */
422 protected String[] getStringTable() {
423 return (String[])myStringTable.clone();
424 }
425
426 /**
427 * Returns the enumeration value table for class JobStateReason.
428 */
429 protected EnumSyntax[] getEnumValueTable() {
430 return (EnumSyntax[])myEnumValueTable.clone();
431 }
432
433
434 /**
435 * Get the printing attribute class which is to be used as the "category"
436 * for this printing attribute value.
437 * <P>
438 * For class JobStateReason and any vendor-defined subclasses, the
439 * category is class JobStateReason itself.
440 *
441 * @return Printing attribute class (category), an instance of class
442 * {@link java.lang.Class java.lang.Class}.
443 */
444 public final Class<? extends Attribute> getCategory() {
445 return JobStateReason.class;
446 }
447
448 /**
449 * Get the name of the category of which this attribute value is an
450 * instance.
451 * <P>
452 * For class JobStateReason and any vendor-defined subclasses, the
453 * category name is <CODE>"job-state-reason"</CODE>.
454 *
455 * @return Attribute category name.
456 */
457 public final String getName() {
458 return "job-state-reason";
459 }
460
461}