pl.edu.agh.cast.data.model.presentation
Class PresentationDataSet<T extends IPresentationElement<? extends IElement>>

java.lang.Object
  extended by pl.edu.agh.cast.data.model.property.PropertyContainer
      extended by pl.edu.agh.cast.data.model.AbstractDataSet<T>
          extended by pl.edu.agh.cast.data.model.presentation.PresentationDataSet<T>
Type Parameters:
T - type of presentation element which can be in specific presentation data set
All Implemented Interfaces:
Serializable, Observer, IDisposable, IValidatable, IDataSet<T>, Identifiable, IPresentationDataSet<T>, IPropertyChangeProvider, IPropertyContainer
Direct Known Subclasses:
SchemaDataSet

public abstract class PresentationDataSet<T extends IPresentationElement<? extends IElement>>
extends AbstractDataSet<T>
implements IPresentationDataSet<T>

Abstract implementation of IPresentationDataSet.

Author:
AGH CAST Team
See Also:
IPresentationDataSet, Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from interface pl.edu.agh.cast.data.model.presentation.IPresentationDataSet
IPresentationDataSet.Properties
 
Field Summary
 
Fields inherited from interface pl.edu.agh.cast.data.model.presentation.IPresentationDataSet
ACCEPTED_TYPES, CHILD_EVENT, CHILDREN_EVENT, TYPE
 
Constructor Summary
protected PresentationDataSet(PresentationDataSetDescriptor descriptor)
          Initializes data set with its descriptor and a newly created MetaPropertyManager.
protected PresentationDataSet(PresentationDataSetDescriptor descriptor, List<IDataSet<? extends IElement>> originalDataSets)
          Initializes data set with its descriptor and a newly created MetaPropertyManager.
protected PresentationDataSet(PresentationDataSetDescriptor descriptor, MetaPropertyManager metaPropertyManager)
          Initializes data set with its descriptor and MetaPropertyManager.
 
Method Summary
protected  PresentationDataSetDescriptor acquireDescriptor()
          Returns the non-null descriptor of this data set.
 void addPropertyChangeListener(PropertyChangeListener listener)
          Add a property change listener to the object.
protected  void afterAddElement(T element)
          This method is called after successfully adding the given element to the data set.
protected  void afterRemoveElement(T element)
          This method is called after successfully removing the given element from the data set.
protected  void beforeRemoveElement(T element)
          This method is called before attempting to remove the given element from the data set.
protected  PresentationDataSetDescriptor createNewDescriptor()
          Returns new, uninitialized instance of descriptor.
protected abstract  IVisualDataSet createVisualDataSet()
          Creates a new visual data set to be associated with this presentation data set.
protected  void firePropertyChange(String property, Object oldValue, Object newValue)
          Fires the property change event.
 Collection<Type> getAcceptedTypes()
          Returns collection of types of IElements this data set is able to accept.
 PresentationDataSetDescriptor getDescriptor()
          Returns the descriptor of this data set.
 List<? extends IDataSet<? extends IElement>> getOriginalDataSets()
          Returns the original data sets which are presented by this presentation data set.
<V extends IVisualDataSet<? extends IVisualElement<T>,? extends IPresentationDataSet<T>>>
V
getVisualDataSet()
          Returns the visual data set associated with this presentation element.
 boolean hasAssociatedVisualDataSet()
          Checks if any visual data set is associated with this presentation data set.
protected  boolean isDescriptorValid(DataSetDescriptor descriptor)
          Checks if the descriptor is valid for the data set.
protected  boolean isElementValid(T element)
          Checks if given element is valid for the data set.
 void removePropertyChangeListener(PropertyChangeListener listener)
          Remove a property change listener to the object.
 void setOriginalDataSets(List<? extends IDataSet<? extends IElement>> dataSets)
          Sets the original data sets which are presented by this presentation data set.
 void setSuppressAllEvents(boolean flag)
          Sets suppress all events flag.
 void setVisualDataSet(IVisualDataSet vds)
          Sets the visual data set associated with this presentation element.
 
Methods inherited from class pl.edu.agh.cast.data.model.AbstractDataSet
addElement, addElements, addElements, addMetaPropertyManager, addMetaPropertyManager, addMetaPropertyManagersForAcceptedTypes, afterSetMetaPropertyManager, beforeAddElement, checkIfValid, equals, getAssignableElements, getCreationDate, getDescString, getElement, getElementCount, getElements, getElements, getElementTypes, getId, getMetaPropertyManager, getMetaPropertyManagers, getName, getRegisteredTypes, getType, hashCode, isValid, removeElement, removeElement, removeElements, removeElements, setCreationDate, setDescriptor, setElements, setId, setName, setType, toString
 
Methods inherited from class pl.edu.agh.cast.data.model.property.PropertyContainer
addProperty, createProperty, dispose, getCustomProperties, getMetaPropertyManager, getPermanentProperties, getProperties, getProperty, getTransientProperties, initializeProperties, matches, removeProperty, setMetaPropertyManager, setProperty, update
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface pl.edu.agh.cast.data.model.IDataSet
addElement, addElements, addElements, addMetaPropertyManager, addMetaPropertyManagersForAcceptedTypes, getAssignableElements, getCreationDate, getElement, getElementCount, getElements, getElements, getElementTypes, getMetaPropertyManager, getMetaPropertyManagers, getName, getRegisteredTypes, removeElement, removeElement, removeElements, removeElements, setCreationDate, setElements, setName
 
Methods inherited from interface pl.edu.agh.cast.data.model.Identifiable
getId, getType
 
Methods inherited from interface pl.edu.agh.cast.data.model.property.IPropertyContainer
addProperty, getCustomProperties, getMetaPropertyManager, getPermanentProperties, getProperties, getProperty, getTransientProperties, matches, removeProperty, setProperty
 
Methods inherited from interface java.util.Observer
update
 
Methods inherited from interface pl.edu.agh.cast.common.IValidatable
isValid
 
Methods inherited from interface pl.edu.agh.cast.common.IDisposable
dispose
 

Constructor Detail

PresentationDataSet

protected PresentationDataSet(PresentationDataSetDescriptor descriptor)
Initializes data set with its descriptor and a newly created MetaPropertyManager.

Parameters:
descriptor - the presentation data set descriptor
Throws:
IllegalArgumentException - if type is null

PresentationDataSet

protected PresentationDataSet(PresentationDataSetDescriptor descriptor,
                              MetaPropertyManager metaPropertyManager)
Initializes data set with its descriptor and MetaPropertyManager.

Parameters:
descriptor - the presentation data set descriptor
metaPropertyManager - manager of data set's meta properties
Throws:
IllegalArgumentException - if any of the arguments is null

PresentationDataSet

protected PresentationDataSet(PresentationDataSetDescriptor descriptor,
                              List<IDataSet<? extends IElement>> originalDataSets)
Initializes data set with its descriptor and a newly created MetaPropertyManager.

Parameters:
descriptor - the presentation data set descriptor
originalDataSets - the list of references to original data sets - if null, then empty IReferenceList instance is acquired from ReferenceUtil
Throws:
IllegalArgumentException - if type is null
Method Detail

isDescriptorValid

protected final boolean isDescriptorValid(DataSetDescriptor descriptor)
Checks if the descriptor is valid for the data set.

This method is called by the AbstractDataSet.setDescriptor(DataSetDescriptor) method. By default it always returns true, however it can be overridden in order to define new descriptor validation rules. In such case the implementation from base class should be called inside the overridden method in order to preserve data consistency.

Overrides:
isDescriptorValid in class AbstractDataSet<T extends IPresentationElement<? extends IElement>>
Parameters:
descriptor - the descriptor to validate
Returns:
true if given descriptor is valid, false otherwise
See Also:
AbstractDataSet.isDescriptorValid(pl.edu.agh.cast.data.model.DataSetDescriptor)

createNewDescriptor

protected final PresentationDataSetDescriptor createNewDescriptor()
Returns new, uninitialized instance of descriptor.

This method may be overridden in order to provide

Overrides:
createNewDescriptor in class AbstractDataSet<T extends IPresentationElement<? extends IElement>>
Returns:
new instance of data set descriptor
See Also:
AbstractDataSet.createNewDescriptor()

acquireDescriptor

protected final PresentationDataSetDescriptor acquireDescriptor()
Returns the non-null descriptor of this data set. If the descriptor has not been defined yet, a new instance is created and assigned to this data set.

Overrides:
acquireDescriptor in class AbstractDataSet<T extends IPresentationElement<? extends IElement>>
Returns:
the (non-null) descriptor of this data set
See Also:
AbstractDataSet.acquireDescriptor()

getDescriptor

public final PresentationDataSetDescriptor getDescriptor()
Returns the descriptor of this data set.

Specified by:
getDescriptor in interface IDataSet<T extends IPresentationElement<? extends IElement>>
Specified by:
getDescriptor in interface IPresentationDataSet<T extends IPresentationElement<? extends IElement>>
Overrides:
getDescriptor in class AbstractDataSet<T extends IPresentationElement<? extends IElement>>
Returns:
the descriptor of this data set
See Also:
AbstractDataSet.getDescriptor()

addPropertyChangeListener

public final void addPropertyChangeListener(PropertyChangeListener listener)
Add a property change listener to the object.

Specified by:
addPropertyChangeListener in interface IPropertyChangeProvider
Parameters:
listener - property change listener
See Also:
#addPropertyChangeListener(java.beans.PropertyChangeListener)

removePropertyChangeListener

public final void removePropertyChangeListener(PropertyChangeListener listener)
Remove a property change listener to the object.

Specified by:
removePropertyChangeListener in interface IPropertyChangeProvider
Parameters:
listener - property change listener
See Also:
#removePropertyChangeListener(java.beans.PropertyChangeListener)

firePropertyChange

protected final void firePropertyChange(String property,
                                        Object oldValue,
                                        Object newValue)
Fires the property change event.

Parameters:
property - the name of the property
oldValue - the old value of the property
newValue - the new value of the property
See Also:
PropertyChangeProviderHelper.firePropertyChange(java.lang.String, java.lang.Object, java.lang.Object)

setSuppressAllEvents

public void setSuppressAllEvents(boolean flag)
Sets suppress all events flag. If flag set to true all events will be ignored.

Specified by:
setSuppressAllEvents in interface IPresentationDataSet<T extends IPresentationElement<? extends IElement>>
Parameters:
flag - suppress all events flag
See Also:
IPresentationDataSet.setSuppressAllEvents(boolean)

isElementValid

protected boolean isElementValid(T element)
                          throws ModelException
Checks if given element is valid for the data set.

This method is called by the AbstractDataSet.addElement(IElement) method. By default it always returns true , however it can be overridden in order to define new validation rules. In such case the implementation from base class should be called inside the overridden method in order to preserve data consistency.

Overrides:
isElementValid in class AbstractDataSet<T extends IPresentationElement<? extends IElement>>
Parameters:
element - the element to validate
Returns:
true if the element is valid, false otherwise
Throws:
ModelException - if there is a severe validity violation
See Also:
AbstractDataSet.isElementValid(pl.edu.agh.cast.data.model.IElement)

afterAddElement

protected void afterAddElement(T element)
This method is called after successfully adding the given element to the data set.

It should be overridden by subclasses to add custom activities which should be perform after removing the given element.

Overrides:
afterAddElement in class AbstractDataSet<T extends IPresentationElement<? extends IElement>>
Parameters:
element - element which has been just removed
See Also:
AbstractDataSet.afterAddElement(pl.edu.agh.cast.data.model.IElement)

beforeRemoveElement

protected void beforeRemoveElement(T element)
This method is called before attempting to remove the given element from the data set.

It should be overridden by subclasses to add custom activities which should be perform after removing the given element.

Overrides:
beforeRemoveElement in class AbstractDataSet<T extends IPresentationElement<? extends IElement>>
Parameters:
element - element which is to be removed
See Also:
AbstractDataSet.beforeRemoveElement(pl.edu.agh.cast.data.model.IElement)

afterRemoveElement

protected void afterRemoveElement(T element)
Description copied from class: AbstractDataSet
This method is called after successfully removing the given element from the data set.

It should be overridden by subclasses to add custom activities which should be perform after removing the given element.

Overrides:
afterRemoveElement in class AbstractDataSet<T extends IPresentationElement<? extends IElement>>
Parameters:
element - element which has been just removed

getAcceptedTypes

public Collection<Type> getAcceptedTypes()
Returns collection of types of IElements this data set is able to accept.

This method should be overridden by all concrete subclasses.

Returns collection of types of elements this data set is able to accept.

Specified by:
getAcceptedTypes in interface IDataSet<T extends IPresentationElement<? extends IElement>>
Overrides:
getAcceptedTypes in class AbstractDataSet<T extends IPresentationElement<? extends IElement>>
Returns:
collection of element types this data set is able to accept
See Also:
AbstractDataSet.getAcceptedTypes()

getVisualDataSet

public final <V extends IVisualDataSet<? extends IVisualElement<T>,? extends IPresentationDataSet<T>>> V getVisualDataSet()
Returns the visual data set associated with this presentation element.

Specified by:
getVisualDataSet in interface IPresentationDataSet<T extends IPresentationElement<? extends IElement>>
Type Parameters:
V - the type of expected visual data set
Returns:
the associated visual data set or null
See Also:
IPresentationDataSet.getVisualDataSet()

setVisualDataSet

public final void setVisualDataSet(IVisualDataSet vds)
Sets the visual data set associated with this presentation element.

Specified by:
setVisualDataSet in interface IPresentationDataSet<T extends IPresentationElement<? extends IElement>>
Parameters:
vds - the associated visual data set (null value is allowed)
See Also:
#setVisualDataSet(pl.edu.agh.cast.data.model.visual.IVisualDataSet)

getOriginalDataSets

public final List<? extends IDataSet<? extends IElement>> getOriginalDataSets()
Returns the original data sets which are presented by this presentation data set.

Specified by:
getOriginalDataSets in interface IPresentationDataSet<T extends IPresentationElement<? extends IElement>>
Returns:
a list of original data sets
See Also:
IPresentationDataSet.getOriginalDataSets()

setOriginalDataSets

public final void setOriginalDataSets(List<? extends IDataSet<? extends IElement>> dataSets)
Sets the original data sets which are presented by this presentation data set. If the given list is null then if no other list has been set yet an empty instance is acquired via ReferenceUtil, else the list is cleared. If the given list is an instance of IReferenceList then it is used else all elements from the list are added to the internal list.

Specified by:
setOriginalDataSets in interface IPresentationDataSet<T extends IPresentationElement<? extends IElement>>
Parameters:
dataSets - a list of original data sets presented by this presentation data set
See Also:
IPresentationDataSet.setOriginalDataSets(java.util.List)

hasAssociatedVisualDataSet

public final boolean hasAssociatedVisualDataSet()
Checks if any visual data set is associated with this presentation data set.

Specified by:
hasAssociatedVisualDataSet in interface IPresentationDataSet<T extends IPresentationElement<? extends IElement>>
Returns:
true if an associated visual data set is present
See Also:
IPresentationDataSet.hasAssociatedVisualDataSet()

createVisualDataSet

protected abstract IVisualDataSet createVisualDataSet()
Creates a new visual data set to be associated with this presentation data set.

This method should be implemented in each concrete subclass of PresentationDataSet.

Returns:
a new instance of visual data set to be associated with this instance


Copyright © 2007-2009 IISG AGH-UST Krakow, Poland. All Rights Reserved.