Package jcckit.data

Class DataContainer

java.lang.Object
jcckit.data.DataContainer
Direct Known Subclasses:
DataCurve, DataPlot

public abstract class DataContainer extends Object
Abstract superclass of all data containers. A data container holds an ordered list of DataElements of the same type.

Data elements can be added, inserted, removed, or replaced. Such an action leads to a DataEvent which will be delivered to all DataListeners observing this DataContainer. If this data container also implements DataEvent (as DataCurve does) also the listeners registrated at the data container containg this container will be notified. As a consequence a DataListener must only be registered at the DataPlot instance and it will automatically also received events caused by manipulating one of its DataCurves.

Concrete subclasses have to implement isValid(jcckit.data.DataElement) which checks whether the added or inserted DataElement is of the right type. This is an application of the Template Method Design Pattern.

  • Constructor Details

    • DataContainer

      public DataContainer()
  • Method Details

    • addDataListener

      public void addDataListener(DataListener listener)
      Adds a DataListener. Does nothing if already added.
    • removeDataListener

      public void removeDataListener(DataListener listener)
      Removes a DataListener. Does nothing if already removed.
    • getNumberOfElements

      public int getNumberOfElements()
      Returns the number of elements of this container.
    • getElement

      public DataElement getElement(int index)
      Returns the element for the specified index.
    • getIndexOf

      public int getIndexOf(DataElement element)
      Returns the index of the specified element.
      Parameters:
      element - Element to be looked for.
      Returns:
      -1 if not found.
    • addElement

      public void addElement(DataElement element)
      Adds a DataElement. After the element has been successfully added all DataListeners will be informed.
      Parameters:
      element - DataElement to be added.
      Throws:
      IllegalArgumentException - if element is not of the correct type which will be checked by the method isValid(jcckit.data.DataElement).
    • insertElementAt

      public void insertElementAt(int index, DataElement element)
      Inserts a DataElement at the specified index. After the element has been successfully inserted all DataListeners will be informed.
      Parameters:
      index - Index at which element will be inserted. All elements with an index >= index will be shifted.
      element - DataElement to be added.
      Throws:
      IllegalArgumentException - if element is not of the correct type which will be checked by the method isValid(jcckit.data.DataElement).
    • removeElementAt

      public void removeElementAt(int index)
      Removes a DataElement at the specified index. After the element has been successfully removed all DataListeners will be informed.
      Parameters:
      index - Index of the element which will be removed. All elements with an index > index will be shifted.
    • replaceElementAt

      public void replaceElementAt(int index, DataElement element)
      Replaces the DataElement at the specified index. After the element has been successfully replaced all DataListeners will be informed.
      Parameters:
      index - Index of the element which will be replaced by element.
      element - The new DataElement.
      Throws:
      IllegalArgumentException - if element is not of the correct type which will be checked by the method isValid(jcckit.data.DataElement).
    • isValid

      protected abstract boolean isValid(DataElement element)
      Returns true if the specified DataElement has the correct type. Concrete subclasses have to implement this method.
      Parameters:
      element - DataElement to be checked.