Module java.desktop
Package javax.print.attribute.standard

## Class JobStateReasons

- java.lang.Object
- - java.util.AbstractCollection<E>
  - - java.util.AbstractSet<E>
    - - java.util.HashSet<JobStateReason>
      - - javax.print.attribute.standard.JobStateReasons

- All Implemented Interfaces:
    `Serializable`, `Cloneable`, `Iterable<JobStateReason>`, `Collection<JobStateReason>`, `Set<JobStateReason>`, `Attribute`, `PrintJobAttribute`

      public final class JobStateReasons
      extends HashSet<JobStateReason>
      implements PrintJobAttribute

  Class `JobStateReasons` is a printing attribute class, a set of enumeration values, that provides additional information about the job's current state, i.e., information that augments the value of the job's `JobState` attribute.

  Instances of `JobStateReason` do not appear in a Print Job's attribute set directly. Rather, a `JobStateReasons` attribute appears in the Print Job's attribute set. The `JobStateReasons` attribute contains zero, one, or more than one `JobStateReason` objects which pertain to the Print Job's status. The printer adds a `JobStateReason` object to the Print Job's JobStateReasons attribute when the corresponding condition becomes true of the Print Job, and the printer removes the `JobStateReason` object again when the corresponding condition becomes false, regardless of whether the Print Job's overall `JobState` also changed.

  Class `JobStateReasons` inherits its implementation from class `java.util.HashSet`. Unlike most printing attributes which are immutable once constructed, class `JobStateReasons` is designed to be mutable; you can add `JobStateReason` objects to an existing `JobStateReasons` object and remove them again. However, like class `java.util.HashSet`, class `JobStateReasons` is not multiple thread safe. If a `JobStateReasons` object will be used by multiple threads, be sure to synchronize its operations (e.g., using a synchronized set view obtained from class `java.util.Collections`).

  IPP Compatibility: The string value returned by each individual `JobStateReason` object's `toString()` method gives the IPP keyword value. The category name returned by `getName()` gives the IPP attribute name.

  See Also:
    Serialized Form

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `JobStateReasons()` | Construct a new, empty job state reasons attribute; the underlying hash set has the default initial capacity and load factor.
    `JobStateReasons​(int initialCapacity)` | Construct a new, empty job state reasons attribute; the underlying hash set has the given initial capacity and the default load factor.
    `JobStateReasons​(int initialCapacity, float loadFactor)` | Construct a new, empty job state reasons attribute; the underlying hash set has the given initial capacity and load factor.
    `JobStateReasons​(Collection<JobStateReason> collection)` | Construct a new job state reasons attribute that contains the same `JobStateReason` objects as the given collection.

  - ### Method Summary

    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `add​(JobStateReason o)` | Adds the specified element to this job state reasons attribute if it is not already present.
    `Class<? extends Attribute>` | `getCategory()` | Get the printing attribute class which is to be used as the "category" for this printing attribute value.
    `String` | `getName()` | Get the name of the category of which this attribute value is an instance.

    - ### Methods declared in class java.util.HashSet

      `clear, clone, contains, isEmpty, iterator, remove, size, spliterator`

    - ### Methods declared in class java.util.AbstractSet

      `equals, hashCode, removeAll`

    - ### Methods declared in class java.util.AbstractCollection

      `addAll, containsAll, retainAll, toArray, toArray, toString`

    - ### Methods declared in class java.lang.Object

      `finalize, getClass, notify, notifyAll, wait, wait, wait`

    - ### Methods declared in interface java.util.Collection

      `parallelStream, removeIf, stream, toArray`

    - ### Methods declared in interface java.lang.Iterable

      `forEach`

    - ### Methods declared in interface java.util.Set

      `addAll, containsAll, equals, hashCode, removeAll, retainAll, toArray, toArray`

- - ### Constructor Detail

    - #### JobStateReasons

          public JobStateReasons()

      Construct a new, empty job state reasons attribute; the underlying hash set has the default initial capacity and load factor.

    - #### JobStateReasons

          public JobStateReasons​(int initialCapacity)

      Construct a new, empty job state reasons attribute; the underlying hash set has the given initial capacity and the default load factor.
      Parameters:
        `initialCapacity` - initial capacity
      Throws:
        `IllegalArgumentException` - if the initial capacity is negative

    - #### JobStateReasons

          public JobStateReasons​(int initialCapacity,
                                 float loadFactor)

      Construct a new, empty job state reasons attribute; the underlying hash set has the given initial capacity and load factor.
      Parameters:
        `initialCapacity` - initial capacity
        `loadFactor` - load factor
      Throws:
        `IllegalArgumentException` - if the initial capacity is negative

    - #### JobStateReasons

          public JobStateReasons​(Collection<JobStateReason> collection)

      Construct a new job state reasons attribute that contains the same `JobStateReason` objects as the given collection. The underlying hash set's initial capacity and load factor are as specified in the superclass constructor `HashSet(Collection)`.
      Parameters:
        `collection` - collection to copy
      Throws:
        `NullPointerException` - if `collection` is `null` or if any element in `collection` is `null`
        `ClassCastException` - if any element in `collection` is not an instance of class `JobStateReason`

  - ### Method Detail

    - #### add

          public boolean add​(JobStateReason o)

      Adds the specified element to this job state reasons attribute if it is not already present. The element to be added must be an instance of class `JobStateReason`. If this job state reasons attribute already contains the specified element, the call leaves this job state reasons attribute unchanged and returns `false`.
      Specified by:
        `add` in interface `Collection<JobStateReason>`
      Specified by:
        `add` in interface `Set<JobStateReason>`
      Overrides:
        `add` in class `HashSet<JobStateReason>`
      Parameters:
        `o` - element to be added to this job state reasons attribute
      Returns:
        `true` if this job state reasons attribute did not already contain the specified element
      Throws:
        `NullPointerException` - if the specified element is `null`
        `ClassCastException` - if the specified element is not an instance of class `JobStateReason`
      Since:
        1.5

    - #### getCategory

          public final Class<? extends Attribute> getCategory()

      Get the printing attribute class which is to be used as the "category" for this printing attribute value.

      For class `JobStateReasons`, the category is class JobStateReasons itself.

      Specified by:
        `getCategory` in interface `Attribute`
      Returns:
        printing attribute class (category), an instance of class `java.lang.Class`

    - #### getName

          public final String getName()

      Get the name of the category of which this attribute value is an instance.

      For class JobStateReasons, the category name is `"job-state-reasons"`.

      Specified by:
        `getName` in interface `Attribute`
      Returns:
        attribute category name