/* * @(#)PrinterStateReasons.java 1.9 04/05/05 * * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package javax.print.attribute.standard; import java.util.AbstractSet; import java.util.Iterator; import java.util.Map; import java.util.NoSuchElementException; import java.util.HashMap; import java.util.Set; import javax.print.attribute.Attribute; import javax.print.attribute.PrintServiceAttribute; /** * Class PrinterStateReasons is a printing attribute class, a set of * enumeration values, that provides additional information about the * printer's current state, i.e., information that augments the value of the * printer's {@link PrinterState PrinterState} attribute. *
* Instances of {@link PrinterStateReason PrinterStateReason} do not appear in * a Print Service's attribute set directly. Rather, a PrinterStateReasons * attribute appears in the Print Service's attribute set. The * PrinterStateReasons attribute contains zero, one, or more than one {@link * PrinterStateReason PrinterStateReason} objects which pertain to the Print * Service's status, and each {@link PrinterStateReason PrinterStateReason} * object is associated with a {@link Severity Severity} level of REPORT * (least severe), WARNING, or ERROR (most severe). The printer adds a {@link * PrinterStateReason PrinterStateReason} object to the Print Service's * PrinterStateReasons attribute when the corresponding condition becomes true * of the printer, and the printer removes the {@link PrinterStateReason * PrinterStateReason} object again when the corresponding condition becomes * false, regardless of whether the Print Service's overall * {@link PrinterState PrinterState} also changed. *
* Class PrinterStateReasons inherits its implementation from class {@link * java.util.HashMap java.util.HashMap}. Each entry in the map consists of a * {@link PrinterStateReason PrinterStateReason} object (key) mapping to a * {@link Severity Severity} object (value): *
* Unlike most printing attributes which are immutable once constructed, class * PrinterStateReasons is designed to be mutable; you can add {@link * PrinterStateReason PrinterStateReason} objects to an existing * PrinterStateReasons object and remove them again. However, like class * {@link java.util.HashMap java.util.HashMap}, class PrinterStateReasons is * bot multiple thread safe. If a PrinterStateReasons object will be used by * multiple threads, be sure to synchronize its operations (e.g., using a * synchronized map view obtained from class {@link java.util.Collections * java.util.Collections}). *
* IPP Compatibility: The string values returned by each individual
* {@link PrinterStateReason PrinterStateReason} object's and the associated
* {@link Severity Severity} object's toString()
methods,
* concatenated
* together with a hyphen ("-"
) in between, gives the IPP keyword
* value. The category name returned by getName()
gives the IPP
* attribute name.
*
*
* @author Alan Kaminsky
*/
public final class PrinterStateReasons
extends HashMap
* For class PrinterStateReasons, the
* category is class PrinterStateReasons itself.
*
* @return Printing attribute class (category), an instance of class
* {@link java.lang.Class java.lang.Class}.
*/
public final Class extends Attribute> getCategory() {
return PrinterStateReasons.class;
}
/**
* Get the name of the category of which this attribute value is an
* instance.
*
* For class PrinterStateReasons, the
* category name is HashMap(Map)
}.
*
* @param map Map to copy.
*
* @exception NullPointerException
* (unchecked exception) Thrown if map
is null or if any
* key or value in map
is null.
* @throws ClassCastException
* (unchecked exception) Thrown if any key in map
is not
* an instance of class {@link PrinterStateReason PrinterStateReason} or
* if any value in map
is not an instance of class
* {@link Severity Severity}.
*/
public PrinterStateReasons(Mapreason
is null or
* severity
is null.
* @throws ClassCastException
* (unchecked exception) Thrown if reason
is not an
* instance of class {@link PrinterStateReason PrinterStateReason} or if
* severity
is not an instance of class {@link Severity
* Severity}.
*/
public Severity put(PrinterStateReason reason, Severity severity) {
if (reason == null) {
throw new NullPointerException("reason is null");
}
if (severity == null) {
throw new NullPointerException("severity is null");
}
return super.put((PrinterStateReason) reason,
(Severity) severity);
}
/**
* Get the printing attribute class which is to be used as the "category"
* for this printing attribute value.
* "printer-state-reasons"
.
*
* @return Attribute category name.
*/
public final String getName() {
return "printer-state-reasons";
}
/**
* Obtain an unmodifiable set view of the individual printer state reason
* attributes at the given severity level in this PrinterStateReasons
* attribute. Each element in the set view is a {@link PrinterStateReason
* PrinterStateReason} object. The only elements in the set view are the
* {@link PrinterStateReason PrinterStateReason} objects that map to the
* given severity value. The set view is backed by this
* PrinterStateReasons attribute, so changes to this PrinterStateReasons
* attribute are reflected in the set view.
* The set view does not support element insertion or
* removal. The set view's iterator does not support element removal.
*
* @param severity Severity level.
*
* @return Set view of the individual {@link PrinterStateReason
* PrinterStateReason} attributes at the given {@link Severity
* Severity} level.
*
* @exception NullPointerException
* (unchecked exception) Thrown if severity
is null.
*/
public Set