1 /* OperationsSupported.java --
2    Copyright (C) 2006 Free Software Foundation, Inc.
3 
4 This file is part of GNU Classpath.
5 
6 GNU Classpath is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
10 
11 GNU Classpath is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 General Public License for more details.
15 
16 You should have received a copy of the GNU General Public License
17 along with GNU Classpath; see the file COPYING.  If not, write to the
18 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 02110-1301 USA.
20 
21 Linking this library statically or dynamically with other modules is
22 making a combined work based on this library.  Thus, the terms and
23 conditions of the GNU General Public License cover the whole
24 combination.
25 
26 As a special exception, the copyright holders of this library give you
27 permission to link this library with independent modules to produce an
28 executable, regardless of the license terms of these independent
29 modules, and to copy and distribute the resulting executable under
30 terms of your choice, provided that you also meet, for each linked
31 independent module, the terms and conditions of the license of that
32 module.  An independent module is a module which is not derived from
33 or based on this library.  If you modify this library, you may extend
34 this exception to your version of the library, but you are not
35 obligated to do so.  If you do not wish to do so, delete this
36 exception statement from your version. */
37 
38 
39 package gnu.javax.print.ipp.attribute.supported;
40 
41 import javax.print.attribute.Attribute;
42 import javax.print.attribute.EnumSyntax;
43 import javax.print.attribute.SupportedValuesAttribute;
44 
45 /**
46  * <code>OperationsSupported</code> specifies the enums of the operations
47  * supported by a given printer or job object. The attribute is further
48  * specified in RFC 2911 section 4.4.15.
49  *
50  * @author Wolfgang Baer (WBaer@gmx.de)
51  */
52 public final class OperationsSupported extends EnumSyntax
53   implements SupportedValuesAttribute
54 {
55   /*
56    * Value               Operation Name
57      -----------------   -------------------------------------
58      0x0000              reserved, not used
59      0x0001              reserved, not used
60      0x0002              Print-Job
61      0x0003              Print-URI
62      0x0004              Validate-Job
63      0x0005              Create-Job
64      0x0006              Send-Document
65      0x0007              Send-URI
66      0x0008              Cancel-Job
67      0x0009              Get-Job-Attributes
68      0x000A              Get-Jobs
69      0x000B              Get-Printer-Attributes
70      0x000C              Hold-Job
71      0x000D              Release-Job
72      0x000E              Restart-Job
73      0x000F              reserved for a future operation
74      0x0010              Pause-Printer
75      0x0011              Resume-Printer
76      0x0012              Purge-Jobs
77      0x0013-0x3FFF       reserved for future IETF standards track operations
78      0x4000-0x8FFF       reserved for vendor extensions
79    */
80 
81   // standard ipp 1.1 operations
82 
83   /**
84    * Operation to print a job in one request/response. */
85   public static final OperationsSupported PRINT_JOB =
86     new OperationsSupported(0x02);
87 
88   /** Operation to print a document from an URI */
89   public static final OperationsSupported PRINT_URI =
90     new OperationsSupported(0x03);
91 
92   /** Operation to validate a job before submission. */
93   public static final OperationsSupported VALIDATE_JOB =
94     new OperationsSupported(0x04);
95 
96   /**
97    * Operation to create an initial job for use with multiple document per job.
98    */
99   public static final OperationsSupported CREATE_JOB =
100     new OperationsSupported(0x05);
101 
102   /**
103    * Operation to send a document to a multidoc job created via CREATE_JOB
104    */
105   public static final OperationsSupported SEND_DOCUMENT =
106     new OperationsSupported(0x06);
107 
108   /**
109    * Operation to send a document uri to a multidoc job created
110    * via CREATE_JOB. The document accessible from this URI will be printed.
111    */
112   public static final OperationsSupported SEND_URI =
113     new OperationsSupported(0x07);
114 
115   /** Operation to cancel a job by its ID or name.  */
116   public static final OperationsSupported CANCEL_JOB =
117     new OperationsSupported(0x08);
118 
119   /** Operation to get job attributes of a current job. */
120   public static final OperationsSupported GET_JOB_ATTRIBUTES =
121     new OperationsSupported(0x09);
122 
123   /** Operation to pause a printer. */
124   public static final OperationsSupported PAUSE_PRINTER =
125     new OperationsSupported(0x10);
126 
127   /** Operation to get all currently queued or processed jobs. */
128   public static final OperationsSupported GET_JOBS =
129     new OperationsSupported(0x0A);
130 
131   /** Operation to get the attributes of a printer. */
132   public static final OperationsSupported GET_PRINTER_ATTRIBUTES =
133     new OperationsSupported(0x0B);
134 
135   /** Operation to put a job on hold by its ID or name. */
136   public static final OperationsSupported HOLD_JOB =
137     new OperationsSupported(0x0C);
138 
139   /** Operation to release a job by its ID or name. */
140   public static final OperationsSupported RELEASE_JOB =
141     new OperationsSupported(0x0D);
142 
143   /** Operation to restart a job by its ID or name. */
144   public static final OperationsSupported RESTART_JOB =
145     new OperationsSupported(0x0E);
146 
147   /** Not yet an operation - reserved for futher use. */
148   public static final OperationsSupported RESERVED =
149     new OperationsSupported(0x0F);
150 
151   /** Operation to resume a printer. */
152   public static final OperationsSupported RESUME_PRINTER =
153     new OperationsSupported(0x11);
154 
155   /** Operation to remove all jobs from a printer regardless of state. */
156   public static final OperationsSupported PURGE_JOBS =
157     new OperationsSupported(0x12);
158 
159 
160   private static final String[] stringTable = { "print-job", "print-uri",
161                                                 "validate-job", "create-job",
162                                                 "send-document", "send-uri",
163                                                 "cancel-job", "get-job-attributes",
164                                                 "pause-printer", "get-jobs",
165                                                 "get-printer-attributes", "hold-job",
166                                                 "release-job", "restart-job", "reserved",
167                                                 "resume-printer", "purge-job"};
168 
169   private static final OperationsSupported[] enumValueTable =
170     { PRINT_JOB, PRINT_URI, VALIDATE_JOB, CREATE_JOB, SEND_DOCUMENT, SEND_URI,
171       CANCEL_JOB, GET_JOB_ATTRIBUTES, PAUSE_PRINTER, GET_JOBS, GET_PRINTER_ATTRIBUTES,
172       HOLD_JOB, RELEASE_JOB, RESTART_JOB, RESERVED, RESUME_PRINTER, PURGE_JOBS};
173 
174 
175   /**
176    * Constructs a <code>OperationsSupported</code> object.
177    *
178    * @param value the enum value
179    */
OperationsSupported(int value)180   protected OperationsSupported(int value)
181   {
182     super(value);
183   }
184 
185   /**
186    * Returns category of this class.
187    *
188    * @return The class <code>OperationsSupported</code> itself.
189    */
getCategory()190   public Class<? extends Attribute> getCategory()
191   {
192     return OperationsSupported.class;
193   }
194 
195   /**
196    * Returns the name of this attribute.
197    *
198    * @return The name "operations-supported".
199    */
getName()200   public String getName()
201   {
202     return "operations-supported";
203   }
204 
205   /**
206    * Returns a table with the enumeration values represented as strings
207    * for this object.
208    *
209    * @return The enumeration values as strings.
210    */
getStringTable()211   protected String[] getStringTable()
212   {
213     return stringTable;
214   }
215 
216   /**
217    * Returns a table with the enumeration values for this object.
218    *
219    * @return The enumeration values.
220    */
getEnumValueTable()221   protected EnumSyntax[] getEnumValueTable()
222   {
223     return enumValueTable;
224   }
225 
226   // we start with 2
getOffset()227   protected int getOffset()
228   {
229     return 2;
230   }
231 }
232