| /* | |
| * Copyright (c) 2000, 2022, Oracle and/or its affiliates. All rights reserved. | |
| * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
| * | |
| * This code is free software; you can redistribute it and/or modify it | |
| * under the terms of the GNU General Public License version 2 only, as | |
| * published by the Free Software Foundation. Oracle designates this | |
| * particular file as subject to the "Classpath" exception as provided | |
| * by Oracle in the LICENSE file that accompanied this code. | |
| * | |
| * This code is distributed in the hope that it will be useful, but WITHOUT | |
| * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
| * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
| * version 2 for more details (a copy is included in the LICENSE file that | |
| * accompanied this code). | |
| * | |
| * You should have received a copy of the GNU General Public License version | |
| * 2 along with this work; if not, write to the Free Software Foundation, | |
| * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
| * | |
| * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | |
| * or visit www.oracle.com if you need additional information or have any | |
| * questions. | |
| */ | |
| package javax.print.attribute.standard; | |
| import java.io.Serial; | |
| import javax.print.attribute.Attribute; | |
| import javax.print.attribute.EnumSyntax; | |
| /** | |
| * Class {@code JobStateReason} is a printing attribute class, an enumeration, | |
| * that provides additional information about the job's current state, i.e., | |
| * information that augments the value of the job's {@link JobState JobState} | |
| * attribute. Class {@code JobStateReason} defines standard job state reason | |
| * values. A Print Service implementation only needs to report those job state | |
| * reasons which are appropriate for the particular implementation; it does not | |
| * have to report every defined job state reason. | |
| * <p> | |
| * Instances of {@code JobStateReason} do not appear in a Print Job's attribute | |
| * set directly. Rather, a {@link JobStateReasons JobStateReasons} attribute | |
| * appears in the Print Job's attribute set. The | |
| * {@link JobStateReasons JobStateReasons} attribute contains zero, one, or more | |
| * than one {@code JobStateReason} objects which pertain to the Print Job's | |
| * status. The printer adds a JobStateReason object to the Print Job's | |
| * {@link JobStateReasons JobStateReasons} attribute when the corresponding | |
| * condition becomes true of the Print Job, and the printer removes the | |
| * {@code JobStateReason} object again when the corresponding condition becomes | |
| * false, regardless of whether the Print Job's overall | |
| * {@link JobState JobState} also changed. | |
| * <p> | |
| * <b>IPP Compatibility:</b> The category name returned by {@code getName()} is | |
| * the IPP attribute name. The enumeration's integer value is the IPP enum | |
| * value. The {@code toString()} method returns the IPP string representation of | |
| * the attribute value. | |
| * | |
| * @author Alan Kaminsky | |
| */ | |
| public class JobStateReason extends EnumSyntax implements Attribute { | |
| /** | |
| * Use serialVersionUID from JDK 1.4 for interoperability. | |
| */ | |
| @Serial | |
| private static final long serialVersionUID = -8765894420449009168L; | |
| /** | |
| * The printer has created the Print Job, but the printer has not finished | |
| * accessing or accepting all the print data yet. | |
| */ | |
| public static final JobStateReason | |
| JOB_INCOMING = new JobStateReason(0); | |
| /** | |
| * The printer has created the Print Job, but the printer is expecting | |
| * additional print data before it can move the job into the | |
| * {@code PROCESSING} state. If a printer starts processing before it has | |
| * received all data, the printer removes the {@code JOB_DATA_INSUFFICIENT} | |
| * reason, but the {@code JOB_INCOMING} reason remains. If a printer starts | |
| * processing after it has received all data, the printer removes the | |
| * {@code JOB_DATA_INSUFFICIENT} and {@code JOB_INCOMING} reasons at the | |
| * same time. | |
| */ | |
| public static final JobStateReason | |
| JOB_DATA_INSUFFICIENT = new JobStateReason(1); | |
| /** | |
| * The printer could not access one or more documents passed by reference | |
| * (i.e., the print data representation object is a {@code URL}). This | |
| * reason is intended to cover any file access problem, including file does | |
| * not exist and access denied because of an access control problem. Whether | |
| * the printer aborts the job and moves the job to the {@code ABORTED} job | |
| * state or prints all documents that are accessible and moves the job to | |
| * the {@code COMPLETED} job state and adds the | |
| * {@code COMPLETED_WITH_ERRORS} reason to the job's | |
| * {@link JobStateReasons JobStateReasons} attribute depends on | |
| * implementation and/or site policy. This value should be supported if the | |
| * printer supports doc flavors with {@code URL} print data representation | |
| * objects. | |
| */ | |
| public static final JobStateReason | |
| DOCUMENT_ACCESS_ERROR = new JobStateReason(2); | |
| /** | |
| * The job was not completely submitted for some unforeseen reason. | |
| * Possibilities include (1) the printer has crashed before the job was | |
| * fully submitted by the client, (2) the printer or the document transfer | |
| * method has crashed in some non-recoverable way before the document data | |
| * was entirely transferred to the printer, (3) the client crashed before | |
| * the job was fully submitted. | |
| */ | |
| public static final JobStateReason | |
| SUBMISSION_INTERRUPTED = new JobStateReason(3); | |
| /** | |
| * The printer is transmitting the job to the output device. | |
| */ | |
| public static final JobStateReason | |
| JOB_OUTGOING = new JobStateReason(4); | |
| /** | |
| * The value of the job's {@link JobHoldUntil JobHoldUntil} attribute was | |
| * specified with a date-time that is still in the future. The job must not | |
| * be a candidate for processing until this reason is removed and there are | |
| * no other reasons to hold the job. This value should be supported if the | |
| * {@link JobHoldUntil JobHoldUntil} job template attribute is supported. | |
| */ | |
| public static final JobStateReason | |
| JOB_HOLD_UNTIL_SPECIFIED = new JobStateReason(5); | |
| /** | |
| * At least one of the resources needed by the job, such as media, fonts, | |
| * resource objects, etc., is not ready on any of the physical printers for | |
| * which the job is a candidate. This condition may be detected when the job | |
| * is accepted, or subsequently while the job is pending or processing, | |
| * depending on implementation. The job may remain in its current state or | |
| * be moved to the {@code PENDING_HELD} state, depending on implementation | |
| * and/or job scheduling policy. | |
| */ | |
| public static final JobStateReason | |
| RESOURCES_ARE_NOT_READY = new JobStateReason(6); | |
| /** | |
| * The value of the printer's {@link PrinterStateReasons | |
| * PrinterStateReasons} attribute contains a | |
| * {@link PrinterStateReason PrinterStateReason} value of | |
| * {@code STOPPED_PARTLY}. | |
| */ | |
| public static final JobStateReason | |
| PRINTER_STOPPED_PARTLY = new JobStateReason(7); | |
| /** | |
| * The value of the printer's {@link PrinterState PrinterState} attribute ia | |
| * {@code STOPPED}. | |
| */ | |
| public static final JobStateReason | |
| PRINTER_STOPPED = new JobStateReason(8); | |
| /** | |
| * The job is in the {@code PROCESSING} state, but more specifically, the | |
| * printer ia interpreting the document data. | |
| */ | |
| public static final JobStateReason | |
| JOB_INTERPRETING = new JobStateReason(9); | |
| /** | |
| * The job is in the {@code PROCESSING} state, but more specifically, the | |
| * printer has queued the document data. | |
| */ | |
| public static final JobStateReason JOB_QUEUED = new JobStateReason(10); | |
| /** | |
| * The job is in the {@code PROCESSING} state, but more specifically, the | |
| * printer is interpreting document data and producing another electronic | |
| * representation. | |
| */ | |
| public static final JobStateReason | |
| JOB_TRANSFORMING = new JobStateReason(11); | |
| /** | |
| * The job is in the {@code PENDING_HELD}, {@code PENDING}, or | |
| * {@code PROCESSING} state, but more specifically, the printer has | |
| * completed enough processing of the document to be able to start marking | |
| * and the job is waiting for the marker. Systems that require human | |
| * intervention to release jobs put the job into the {@code PENDING_HELD} | |
| * job state. Systems that automatically select a job to use the marker put | |
| * the job into the {@code PENDING} job state or keep the job in the | |
| * {@code PROCESSING} job state while waiting for the marker, depending on | |
| * implementation. All implementations put the job into (or back into) the | |
| * {@code PROCESSING} state when marking does begin. | |
| */ | |
| public static final JobStateReason | |
| JOB_QUEUED_FOR_MARKER = new JobStateReason(12); | |
| /** | |
| * The output device is marking media. This value is useful for printers | |
| * which spend a great deal of time processing (1) when no marking is | |
| * happening and then want to show that marking is now happening or (2) when | |
| * the job is in the process of being canceled or aborted while the job | |
| * remains in the {@code PROCESSING} state, but the marking has not yet | |
| * stopped so that impression or sheet counts are still increasing for the | |
| * job. | |
| */ | |
| public static final JobStateReason | |
| JOB_PRINTING = new JobStateReason(13); | |
| /** | |
| * The job was canceled by the owner of the job, i.e., by a user whose | |
| * authenticated identity is the same as the value of the originating user | |
| * that created the Print Job, or by some other authorized end-user, such as | |
| * a member of the job owner's security group. This value should be | |
| * supported. | |
| */ | |
| public static final JobStateReason | |
| JOB_CANCELED_BY_USER = new JobStateReason(14); | |
| /** | |
| * The job was canceled by the operator, i.e., by a user who has been | |
| * authenticated as having operator privileges (whether local or remote). If | |
| * the security policy is to allow anyone to cancel anyone's job, then this | |
| * value may be used when the job is canceled by someone other than the | |
| * owner of the job. For such a security policy, in effect, everyone is an | |
| * operator as far as canceling jobs is concerned. This value should be | |
| * supported if the implementation permits canceling by someone other than | |
| * the owner of the job. | |
| */ | |
| public static final JobStateReason | |
| JOB_CANCELED_BY_OPERATOR = new JobStateReason(15); | |
| /** | |
| * The job was canceled by an unidentified local user, i.e., a user at a | |
| * console at the device. This value should be supported if the | |
| * implementation supports canceling jobs at the console. | |
| */ | |
| public static final JobStateReason | |
| JOB_CANCELED_AT_DEVICE = new JobStateReason(16); | |
| /** | |
| * The job was aborted by the system. Either the job (1) is in the process | |
| * of being aborted, (2) has been aborted by the system and placed in the | |
| * {@code ABORTED} state, or (3) has been aborted by the system and placed | |
| * in the {@code PENDING_HELD} state, so that a user or operator can | |
| * manually try the job again. This value should be supported. | |
| */ | |
| public static final JobStateReason | |
| ABORTED_BY_SYSTEM = new JobStateReason(17); | |
| /** | |
| * The job was aborted by the system because the printer determined while | |
| * attempting to decompress the document's data that the compression is | |
| * actually not among those supported by the printer. This value must be | |
| * supported, since {@link Compression Compression} is a required doc | |
| * description attribute. | |
| */ | |
| public static final JobStateReason | |
| UNSUPPORTED_COMPRESSION = new JobStateReason(18); | |
| /** | |
| * The job was aborted by the system because the printer encountered an | |
| * error in the document data while decompressing it. If the printer posts | |
| * this reason, the document data has already passed any tests that would | |
| * have led to the {@code UNSUPPORTED_COMPRESSION} job state reason. | |
| */ | |
| public static final JobStateReason | |
| COMPRESSION_ERROR = new JobStateReason(19); | |
| /** | |
| * The job was aborted by the system because the document data's document | |
| * format (doc flavor) is not among those supported by the printer. If the | |
| * client specifies a doc flavor with a MIME type of | |
| * {@code "application/octet-stream"}, the printer may abort the job if the | |
| * printer cannot determine the document data's actual format through | |
| * auto-sensing (even if the printer supports the document format if | |
| * specified explicitly). This value must be supported, since a doc flavor | |
| * is required to be specified for each doc. | |
| */ | |
| public static final JobStateReason | |
| UNSUPPORTED_DOCUMENT_FORMAT = new JobStateReason(20); | |
| /** | |
| * The job was aborted by the system because the printer encountered an | |
| * error in the document data while processing it. If the printer posts this | |
| * reason, the document data has already passed any tests that would have | |
| * led to the {@code UNSUPPORTED_DOCUMENT_FORMAT} job state reason. | |
| */ | |
| public static final JobStateReason | |
| DOCUMENT_FORMAT_ERROR = new JobStateReason(21); | |
| /** | |
| * The requester has canceled the job or the printer has aborted the job, | |
| * but the printer is still performing some actions on the job until a | |
| * specified stop point occurs or job termination/cleanup is completed. | |
| * <p> | |
| * If the implementation requires some measurable time to cancel the job in | |
| * the {@code PROCESSING} or {@code PROCESSING_STOPPED} job states, the | |
| * printer must use this reason to indicate that the printer is still | |
| * performing some actions on the job while the job remains in the | |
| * {@code PROCESSING} or {@code PROCESSING_STOPPED} state. After all the | |
| * job's job description attributes have stopped incrementing, the printer | |
| * moves the job from the PROCESSING state to the {@code CANCELED} or | |
| * {@code ABORTED} job states. | |
| */ | |
| public static final JobStateReason | |
| PROCESSING_TO_STOP_POINT = new JobStateReason(22); | |
| /** | |
| * The printer is off-line and accepting no jobs. All {@code PENDING} jobs | |
| * are put into the {@code PENDING_HELD} state. This situation could be true | |
| * if the service's or document transform's input is impaired or broken. | |
| */ | |
| public static final JobStateReason | |
| SERVICE_OFF_LINE = new JobStateReason(23); | |
| /** | |
| * The job completed successfully. This value should be supported. | |
| */ | |
| public static final JobStateReason | |
| JOB_COMPLETED_SUCCESSFULLY = new JobStateReason(24); | |
| /** | |
| * The job completed with warnings. This value should be supported if the | |
| * implementation detects warnings. | |
| */ | |
| public static final JobStateReason | |
| JOB_COMPLETED_WITH_WARNINGS = new JobStateReason(25); | |
| /** | |
| * The job completed with errors (and possibly warnings too). This value | |
| * should be supported if the implementation detects errors. | |
| */ | |
| public static final JobStateReason | |
| JOB_COMPLETED_WITH_ERRORS = new JobStateReason(26); | |
| /** | |
| * This job is retained and is currently able to be restarted. If | |
| * {@code JOB_RESTARTABLE} is contained in the job's | |
| * {@link JobStateReasons JobStateReasons} attribute, then the printer must | |
| * accept a request to restart that job. This value should be supported if | |
| * restarting jobs is supported. <i>[The capability for restarting jobs is | |
| * not in the Java Print Service API at present.]</i> | |
| */ | |
| public static final JobStateReason | |
| JOB_RESTARTABLE = new JobStateReason(27); | |
| /** | |
| * The job has been forwarded to a device or print system that is unable to | |
| * send back status. The printer sets the job's {@link JobState JobState} | |
| * attribute to {@code COMPLETED} and adds the {@code QUEUED_IN_DEVICE} | |
| * reason to the job's {@link JobStateReasons JobStateReasons} attribute to | |
| * indicate that the printer has no additional information about the job and | |
| * never will have any better information. | |
| */ | |
| public static final JobStateReason | |
| QUEUED_IN_DEVICE = new JobStateReason(28); | |
| /** | |
| * Construct a new job state reason enumeration value with the given integer | |
| * value. | |
| * | |
| * @param value Integer value | |
| */ | |
| protected JobStateReason(int value) { | |
| super (value); | |
| } | |
| /** | |
| * The string table for class {@code JobStateReason}. | |
| */ | |
| private static final String[] myStringTable = { | |
| "job-incoming", | |
| "job-data-insufficient", | |
| "document-access-error", | |
| "submission-interrupted", | |
| "job-outgoing", | |
| "job-hold-until-specified", | |
| "resources-are-not-ready", | |
| "printer-stopped-partly", | |
| "printer-stopped", | |
| "job-interpreting", | |
| "job-queued", | |
| "job-transforming", | |
| "job-queued-for-marker", | |
| "job-printing", | |
| "job-canceled-by-user", | |
| "job-canceled-by-operator", | |
| "job-canceled-at-device", | |
| "aborted-by-system", | |
| "unsupported-compression", | |
| "compression-error", | |
| "unsupported-document-format", | |
| "document-format-error", | |
| "processing-to-stop-point", | |
| "service-off-line", | |
| "job-completed-successfully", | |
| "job-completed-with-warnings", | |
| "job-completed-with-errors", | |
| "job-restartable", | |
| "queued-in-device"}; | |
| /** | |
| * The enumeration value table for class {@code JobStateReason}. | |
| */ | |
| private static final JobStateReason[] myEnumValueTable = { | |
| JOB_INCOMING, | |
| JOB_DATA_INSUFFICIENT, | |
| DOCUMENT_ACCESS_ERROR, | |
| SUBMISSION_INTERRUPTED, | |
| JOB_OUTGOING, | |
| JOB_HOLD_UNTIL_SPECIFIED, | |
| RESOURCES_ARE_NOT_READY, | |
| PRINTER_STOPPED_PARTLY, | |
| PRINTER_STOPPED, | |
| JOB_INTERPRETING, | |
| JOB_QUEUED, | |
| JOB_TRANSFORMING, | |
| JOB_QUEUED_FOR_MARKER, | |
| JOB_PRINTING, | |
| JOB_CANCELED_BY_USER, | |
| JOB_CANCELED_BY_OPERATOR, | |
| JOB_CANCELED_AT_DEVICE, | |
| ABORTED_BY_SYSTEM, | |
| UNSUPPORTED_COMPRESSION, | |
| COMPRESSION_ERROR, | |
| UNSUPPORTED_DOCUMENT_FORMAT, | |
| DOCUMENT_FORMAT_ERROR, | |
| PROCESSING_TO_STOP_POINT, | |
| SERVICE_OFF_LINE, | |
| JOB_COMPLETED_SUCCESSFULLY, | |
| JOB_COMPLETED_WITH_WARNINGS, | |
| JOB_COMPLETED_WITH_ERRORS, | |
| JOB_RESTARTABLE, | |
| QUEUED_IN_DEVICE}; | |
| /** | |
| * Returns the string table for class {@code JobStateReason}. | |
| */ | |
| protected String[] getStringTable() { | |
| return myStringTable.clone(); | |
| } | |
| /** | |
| * Returns the enumeration value table for class {@code JobStateReason}. | |
| */ | |
| protected EnumSyntax[] getEnumValueTable() { | |
| return (EnumSyntax[])myEnumValueTable.clone(); | |
| } | |
| /** | |
| * Get the printing attribute class which is to be used as the "category" | |
| * for this printing attribute value. | |
| * <p> | |
| * For class {@code JobStateReason} and any vendor-defined subclasses, the | |
| * category is class {@code JobStateReason} itself. | |
| * | |
| * @return printing attribute class (category), an instance of class | |
| * {@link Class java.lang.Class} | |
| */ | |
| public final Class<? extends Attribute> getCategory() { | |
| return JobStateReason.class; | |
| } | |
| /** | |
| * Get the name of the category of which this attribute value is an | |
| * instance. | |
| * <p> | |
| * For class {@code JobStateReason} and any vendor-defined subclasses, the | |
| * category name is {@code "job-state-reason"}. | |
| * | |
| * @return attribute category name | |
| */ | |
| public final String getName() { | |
| return "job-state-reason"; | |
| } | |
| } |