org.jfree.data.general

## Class Series

- java.lang.Object
- - org.jfree.data.general.Series

- All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable
  Direct Known Subclasses:
    XYSeries

      public abstract class Series
      extends java.lang.Object
      implements java.lang.Cloneable, java.io.Serializable

  Base class representing a data series. Subclasses are left to implement the actual data structures.

  The series has two properties ("Key" and "Description") for which you can register a `PropertyChangeListener`.

  You can also register a `SeriesChangeListener` to receive notification of changes to the series data.

  See Also:
    Serialized Form

- - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `Series(java.lang.Comparable key)` Creates a new series with the specified key.
    `protected` | `Series(java.lang.Comparable key, java.lang.String description)` Creates a new series with the specified key and description.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addChangeListener(SeriesChangeListener listener)` Registers an object with this series, to receive notification whenever the series changes.
    `void` | `addPropertyChangeListener(java.beans.PropertyChangeListener listener)` Adds a property change listener to the series.
    `void` | `addVetoableChangeListener(java.beans.VetoableChangeListener listener)` Adds a vetoable property change listener to the series.
    `java.lang.Object` | `clone()` Returns a clone of the series.
    `boolean` | `equals(java.lang.Object obj)` Tests the series for equality with another object.
    `protected void` | `firePropertyChange(java.lang.String property, java.lang.Object oldValue, java.lang.Object newValue)` Fires a property change event.
    `void` | `fireSeriesChanged()` General method for signalling to registered listeners that the series has been changed.
    `protected void` | `fireVetoableChange(java.lang.String property, java.lang.Object oldValue, java.lang.Object newValue)` Fires a vetoable property change event.
    `java.lang.String` | `getDescription()` Returns a description of the series.
    `abstract int` | `getItemCount()` Returns the number of data items in the series.
    `java.lang.Comparable` | `getKey()` Returns the key for the series.
    `boolean` | `getNotify()` Returns the flag that controls whether or not change events are sent to registered listeners.
    `int` | `hashCode()` Returns a hash code.
    `boolean` | `isEmpty()` Returns `true` if the series contains no data items, and `false` otherwise.
    `protected void` | `notifyListeners(SeriesChangeEvent event)` Sends a change event to all registered listeners.
    `void` | `removeChangeListener(SeriesChangeListener listener)` Deregisters an object, so that it not longer receives notification whenever the series changes.
    `void` | `removePropertyChangeListener(java.beans.PropertyChangeListener listener)` Removes a property change listener from the series.
    `void` | `removeVetoableChangeListener(java.beans.VetoableChangeListener listener)` Removes a vetoable property change listener from the series.
    `void` | `setDescription(java.lang.String description)` Sets the description of the series and sends a `PropertyChangeEvent` to all registered listeners.
    `void` | `setKey(java.lang.Comparable key)` Sets the key for the series and sends a `VetoableChangeEvent` (with the property name "Key") to all registered listeners.
    `void` | `setNotify(boolean notify)` Sets the flag that controls whether or not change events are sent to registered listeners.

    - ### Methods inherited from class java.lang.Object

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

- - ### Constructor Detail

    - #### Series

          protected Series(java.lang.Comparable key)

      Creates a new series with the specified key.
      Parameters:
        `key` - the series key (`null` not permitted).

    - #### Series

          protected Series(java.lang.Comparable key,
                           java.lang.String description)

      Creates a new series with the specified key and description.
      Parameters:
        `key` - the series key (`null` NOT permitted).
        `description` - the series description (`null` permitted).

  - ### Method Detail

    - #### getKey

          public java.lang.Comparable getKey()

      Returns the key for the series.
      Returns:
        The series key (never `null`).
      See Also:
        `setKey(Comparable)`

    - #### setKey

          public void setKey(java.lang.Comparable key)

      Sets the key for the series and sends a `VetoableChangeEvent` (with the property name "Key") to all registered listeners. For backwards compatibility, this method also fires a regular `PropertyChangeEvent`. If the key change is vetoed this method will throw an IllegalArgumentException.
      Parameters:
        `key` - the key (`null` not permitted).
      See Also:
        `getKey()`

    - #### getDescription

          public java.lang.String getDescription()

      Returns a description of the series.
      Returns:
        The series description (possibly `null`).
      See Also:
        `setDescription(String)`

    - #### setDescription

          public void setDescription(java.lang.String description)

      Sets the description of the series and sends a `PropertyChangeEvent` to all registered listeners.
      Parameters:
        `description` - the description (`null` permitted).
      See Also:
        `getDescription()`

    - #### getNotify

          public boolean getNotify()

      Returns the flag that controls whether or not change events are sent to registered listeners.
      Returns:
        A boolean.
      See Also:
        `setNotify(boolean)`

    - #### setNotify

          public void setNotify(boolean notify)

      Sets the flag that controls whether or not change events are sent to registered listeners.
      Parameters:
        `notify` - the new value of the flag.
      See Also:
        `getNotify()`

    - #### isEmpty

          public boolean isEmpty()

      Returns `true` if the series contains no data items, and `false` otherwise.
      Returns:
        A boolean.
      Since:
        1.0.7

    - #### getItemCount

          public abstract int getItemCount()

      Returns the number of data items in the series.
      Returns:
        The number of data items in the series.

    - #### clone

          public java.lang.Object clone()
                                 throws java.lang.CloneNotSupportedException

      Returns a clone of the series.

      Notes:

      - No need to clone the name or description, since String object is immutable.
      - We set the listener list to empty, since the listeners did not register with the clone.
      - Same applies to the PropertyChangeSupport instance.
      Overrides:
        `clone` in class `java.lang.Object`
      Returns:
        A clone of the series.
      Throws:
        `java.lang.CloneNotSupportedException` - not thrown by this class, but subclasses may differ.

    - #### equals

          public boolean equals(java.lang.Object obj)

      Tests the series for equality with another object.
      Overrides:
        `equals` in class `java.lang.Object`
      Parameters:
        `obj` - the object (`null` permitted).
      Returns:
        `true` or `false`.

    - #### hashCode

          public int hashCode()

      Returns a hash code.
      Overrides:
        `hashCode` in class `java.lang.Object`
      Returns:
        A hash code.

    - #### addChangeListener

          public void addChangeListener(SeriesChangeListener listener)

      Registers an object with this series, to receive notification whenever the series changes.

      Objects being registered must implement the `SeriesChangeListener` interface.

      Parameters:
        `listener` - the listener to register.

    - #### removeChangeListener

          public void removeChangeListener(SeriesChangeListener listener)

      Deregisters an object, so that it not longer receives notification whenever the series changes.
      Parameters:
        `listener` - the listener to deregister.

    - #### fireSeriesChanged

          public void fireSeriesChanged()

      General method for signalling to registered listeners that the series has been changed.

    - #### notifyListeners

          protected void notifyListeners(SeriesChangeEvent event)

      Sends a change event to all registered listeners.
      Parameters:
        `event` - contains information about the event that triggered the notification.

    - #### addPropertyChangeListener

          public void addPropertyChangeListener(java.beans.PropertyChangeListener listener)

      Adds a property change listener to the series.
      Parameters:
        `listener` - the listener.

    - #### removePropertyChangeListener

          public void removePropertyChangeListener(java.beans.PropertyChangeListener listener)

      Removes a property change listener from the series.
      Parameters:
        `listener` - the listener.

    - #### firePropertyChange

          protected void firePropertyChange(java.lang.String property,
                                            java.lang.Object oldValue,
                                            java.lang.Object newValue)

      Fires a property change event.
      Parameters:
        `property` - the property key.
        `oldValue` - the old value.
        `newValue` - the new value.

    - #### addVetoableChangeListener

          public void addVetoableChangeListener(java.beans.VetoableChangeListener listener)

      Adds a vetoable property change listener to the series.
      Parameters:
        `listener` - the listener.
      Since:
        1.0.14

    - #### removeVetoableChangeListener

          public void removeVetoableChangeListener(java.beans.VetoableChangeListener listener)

      Removes a vetoable property change listener from the series.
      Parameters:
        `listener` - the listener.
      Since:
        1.0.14

    - #### fireVetoableChange

          protected void fireVetoableChange(java.lang.String property,
                                            java.lang.Object oldValue,
                                            java.lang.Object newValue)
                                     throws java.beans.PropertyVetoException

      Fires a vetoable property change event.
      Parameters:
        `property` - the property key.
        `oldValue` - the old value.
        `newValue` - the new value.
      Throws:
        `java.beans.PropertyVetoException` - if the change was vetoed.