001/* JobState.java --
002   Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
003
004This file is part of GNU Classpath.
005
006GNU Classpath is free software; you can redistribute it and/or modify
007it under the terms of the GNU General Public License as published by
008the Free Software Foundation; either version 2, or (at your option)
009any later version.
010
011GNU Classpath is distributed in the hope that it will be useful, but
012WITHOUT ANY WARRANTY; without even the implied warranty of
013MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
014General Public License for more details.
015
016You should have received a copy of the GNU General Public License
017along with GNU Classpath; see the file COPYING.  If not, write to the
018Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
01902110-1301 USA.
020
021Linking this library statically or dynamically with other modules is
022making a combined work based on this library.  Thus, the terms and
023conditions of the GNU General Public License cover the whole
024combination.
025
026As a special exception, the copyright holders of this library give you
027permission to link this library with independent modules to produce an
028executable, regardless of the license terms of these independent
029modules, and to copy and distribute the resulting executable under
030terms of your choice, provided that you also meet, for each linked
031independent module, the terms and conditions of the license of that
032module.  An independent module is a module which is not derived from
033or based on this library.  If you modify this library, you may extend
034this exception to your version of the library, but you are not
035obligated to do so.  If you do not wish to do so, delete this
036exception statement from your version. */
037
038package javax.print.attribute.standard;
039
040import javax.print.attribute.Attribute;
041import javax.print.attribute.EnumSyntax;
042import javax.print.attribute.PrintJobAttribute;
043
044
045/**
046 * The <code>JobState</code> printing attribute reports
047 * the current state of a job.
048 * <p>
049 * The {@link javax.print.attribute.standard.JobStateReasons}
050 * attribute provides further detailed information about
051 * the given job state. Detailed information about the job
052 * state and job state reasons can be found in the RFC 2911.
053 * </p>
054 * <p>
055 * <b>IPP Compatibility:</b> JobState is an IPP 1.1 attribute.
056 * </p>
057 *
058 * @author Michael Koch (konqueror@gmx.de)
059 * @author Wolfgang Baer (WBaer@gmx.de)
060 */
061public class JobState extends EnumSyntax
062  implements PrintJobAttribute
063{
064  private static final long serialVersionUID = 400465010094018920L;
065
066  /**
067   * The job state is currently unknown.
068   */
069  public static final JobState UNKNOWN = new JobState(0);
070
071  /**
072   * The job is pending processing.
073   */
074  public static final JobState PENDING = new JobState(3);
075
076  /**
077   * The job is currently not a candidate for printing because
078   * of reasons reported by the job-state-reasons attribute. If
079   * the reasons are no longer present it will return to the
080   * pending state.
081   */
082  public static final JobState PENDING_HELD = new JobState(4);
083
084  /**
085   * The job is currently processed.
086   */
087  public static final JobState PROCESSING = new JobState(5);
088
089  /**
090   * The job's processing has stopped. The job-state-reasons
091   * attribute may indicate the reason(s). The job will return
092   * to the processing state if the reasons are no longer present.
093   */
094  public static final JobState PROCESSING_STOPPED = new JobState(6);
095
096  /**
097   * The job has been canceled by the client.
098   */
099  public static final JobState CANCELED = new JobState(7);
100
101  /**
102   * The job has been aborted by the system.
103   */
104  public static final JobState ABORTED = new JobState(8);
105
106  /**
107   * The job has completed successfully.
108   */
109  public static final JobState COMPLETED = new JobState(9);
110
111
112  private static final String[] stringTable = { "unknown", null, null,
113                                                "pending", "pending-held",
114                                                "processing",
115                                                "processing-stopped",
116                                                "canceled", "aborted",
117                                                "completed"};
118
119  private static final JobState[] enumValueTable = { UNKNOWN, null, null,
120                                                     PENDING, PENDING_HELD,
121                                                     PROCESSING,
122                                                     PROCESSING_STOPPED,
123                                                     CANCELED, ABORTED,
124                                                     COMPLETED };
125
126  /**
127   * Constructs a <code>JobState</code> object.
128   *
129   * @param value the enum value.
130   */
131  protected JobState(int value)
132  {
133    super(value);
134  }
135
136  /**
137   * Returns category of this class.
138   *
139   * @return The class <code>JobState</code> itself.
140   */
141  public Class< ? extends Attribute> getCategory()
142  {
143    return JobState.class;
144  }
145
146  /**
147   * Returns the name of this attribute.
148   *
149   * @return The name "job-state".
150   */
151  public final String getName()
152  {
153    return "job-state";
154  }
155
156  /**
157   * Returns a table with the enumeration values represented as strings
158   * for this object.
159   *
160   * @return The enumeration values as strings.
161   */
162  protected String[] getStringTable()
163  {
164    return stringTable;
165  }
166
167  /**
168   * Returns a table with the enumeration values for this object.
169   *
170   * @return The enumeration values.
171   */
172  protected EnumSyntax[] getEnumValueTable()
173  {
174    return enumValueTable;
175  }
176}