## org.jfree.data.general
Class AbstractDataset

    java.lang.Object
      org.jfree.data.general.AbstractDataset

All Implemented Interfaces:
  java.io.ObjectInputValidation, java.io.Serializable, java.lang.Cloneable, Dataset

Direct Known Subclasses:
  AbstractSeriesDataset, CategoryToPieDataset, DefaultBoxAndWhiskerCategoryDataset, DefaultCategoryDataset, DefaultKeyedValueDataset, DefaultMultiValueCategoryDataset, DefaultPieDataset, DefaultStatisticalCategoryDataset, DefaultValueDataset, SlidingCategoryDataset, SlidingGanttCategoryDataset, WaferMapDataset

    public abstract class AbstractDataset

extends java.lang.Object
implements Dataset, java.lang.Cloneable, java.io.Serializable, java.io.ObjectInputValidation

An abstract implementation of the `Dataset` interface, containing a mechanism for registering change listeners.

See Also:
  Serialized Form

Constructor Summary
`protected` `AbstractDataset()` Constructs a dataset.

Method Summary
`void` `addChangeListener(DatasetChangeListener listener)` Registers an object to receive notification of changes to the dataset.
`java.lang.Object` `clone()` Returns a clone of the dataset.
`protected void` `fireDatasetChanged()` Notifies all registered listeners that the dataset has changed.
`DatasetGroup` `getGroup()` Returns the dataset group for the dataset.
`boolean` `hasListener(java.util.EventListener listener)` Returns `true` if the specified object is registered with the dataset as a listener.
`protected void` `notifyListeners(DatasetChangeEvent event)` Notifies all registered listeners that the dataset has changed.
`void` `removeChangeListener(DatasetChangeListener listener)` Deregisters an object so that it no longer receives notification of changes to the dataset.
`void` `setGroup(DatasetGroup group)` Sets the dataset group for the dataset.
`void` `validateObject()` Validates the object.

Methods inherited from class java.lang.Object
`equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### AbstractDataset

    protected AbstractDataset()

  Constructs a dataset. By default, the dataset is assigned to its own group.

Method Detail

### getGroup

    public DatasetGroup getGroup()

  Returns the dataset group for the dataset.

  Specified by:
    `getGroup` in interface `Dataset`
  Returns:
    The group.

### setGroup

    public void setGroup(DatasetGroup group)

  Sets the dataset group for the dataset.

  Specified by:
    `setGroup` in interface `Dataset`
  Parameters:
    `group` - the group (`null` not permitted).

### addChangeListener

    public void addChangeListener(DatasetChangeListener listener)

  Registers an object to receive notification of changes to the dataset.

  Specified by:
    `addChangeListener` in interface `Dataset`
  Parameters:
    `listener` - the object to register.

### removeChangeListener

    public void removeChangeListener(DatasetChangeListener listener)

  Deregisters an object so that it no longer receives notification of changes to the dataset.

  Specified by:
    `removeChangeListener` in interface `Dataset`
  Parameters:
    `listener` - the object to deregister.

### hasListener

    public boolean hasListener(java.util.EventListener listener)

  Returns `true` if the specified object is registered with the dataset as a listener. Most applications won't need to call this method, it exists mainly for use by unit testing code.

  Parameters:
    `listener` - the listener.
  Returns:
    A boolean.

### fireDatasetChanged

    protected void fireDatasetChanged()

  Notifies all registered listeners that the dataset has changed.

### notifyListeners

    protected void notifyListeners(DatasetChangeEvent event)

  Notifies all registered listeners that the dataset has changed.

  Parameters:
    `event` - contains information about the event that triggered the notification.

### clone

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

  Returns a clone of the dataset. The cloned dataset will NOT include the `DatasetChangeListener` references that have been registered with this dataset.

  Overrides:
    `clone` in class `java.lang.Object`
  Returns:
    A clone.
  Throws:
    `java.lang.CloneNotSupportedException` - if the dataset does not support cloning.

### validateObject

    public void validateObject()
                        throws java.io.InvalidObjectException

  Validates the object. We use this opportunity to call listeners who have registered during the deserialization process, as listeners are not serialized. This method is called by the serialization system after the entire graph is read. This object has registered itself to the system with a priority of 10. Other callbacks may register with a higher priority number to be called before this object, or with a lower priority number to be called after the listeners were notified. All listeners are supposed to have register by now, either in their readObject or validateObject methods. Notify them that this dataset has changed.

  Specified by:
    `validateObject` in interface `java.io.ObjectInputValidation`
  Throws:
    `java.io.InvalidObjectException` - If the object cannot validate itself.