## org.jfree.data
Class AbstractDataset

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

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

Direct Known Subclasses:
  AbstractSeriesDataset, CategoryToPieDataset, DefaultBoxAndWhiskerCategoryDataset, DefaultCategoryDataset, DefaultKeyedValueDataset, DefaultMeterDataset, DefaultPieDataset, DefaultStatisticalCategoryDataset, DefaultValueDataset, 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.
`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 dataset group.

### setGroup

    public void setGroup(DatasetGroup group)

  Sets the dataset group for the dataset.

  Specified by:
    `setGroup` in interface `Dataset`
  Parameters:
    `group` - the dataset group.

### 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.

### 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.

  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.