org.spicefactory.pimento.type
Class AbstractPropertyType

java.lang.Object
  extended by org.spicefactory.pimento.type.AbstractPropertyType
All Implemented Interfaces:
PropertyType
Direct Known Subclasses:
BooleanType, DateType, EnumType, NumberType, StringType

public abstract class AbstractPropertyType
extends Object
implements PropertyType

Base class for all simple properties.

Author:
Jens Halm

Constructor Summary
AbstractPropertyType()
           
 
Method Summary
 Object getValueForSnapshot(Object entity, Property property, IoContext context, FetchMode fetchMode)
          Reads the specified property from the given entity and returns it in a form suitable for inclusion in an entity snapshot.
 Object prepareValueFromSnapshot(Object entity, Object value, Property property, IoContext context, boolean createChangeSet)
          Prepares the specified property value, performing all necessary conversions, but without actually applying it to the specified entity.
 void setValue(Object entity, Object value, Property property)
          Sets the specified property value of the given entity.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AbstractPropertyType

public AbstractPropertyType()
Method Detail

getValueForSnapshot

public Object getValueForSnapshot(Object entity,
                                  Property property,
                                  IoContext context,
                                  FetchMode fetchMode)
Description copied from interface: PropertyType
Reads the specified property from the given entity and returns it in a form suitable for inclusion in an entity snapshot. For associations this means that non-null values should be converted to snapshots themselves, using the provided IoContext instance. Simple values could be returned as-is in most cases.

Specified by:
getValueForSnapshot in interface PropertyType
Parameters:
entity - the entity to extract the property value from
property - the property to extract
context - the active IoContext
fetchMode - the fetchMode to use if the property type is an association
Returns:
the current value of the property as a simple value, an entity snapshot or an instance of PropertyState

prepareValueFromSnapshot

public Object prepareValueFromSnapshot(Object entity,
                                       Object value,
                                       Property property,
                                       IoContext context,
                                       boolean createChangeSet)
Description copied from interface: PropertyType
Prepares the specified property value, performing all necessary conversions, but without actually applying it to the specified entity. The prepared values will be collected in a EntityUpdate instance which gets passed to any configured interceptors before the property is applied with the setValue method of this class.

Specified by:
prepareValueFromSnapshot in interface PropertyType
Parameters:
entity - the entity to prepare the property for
value - the new value for the property
property - the property to prepare
context - the active IoContext
createChangeSet - whether a change set is being created
Returns:
the (possibly converted) value of the property as it will later be applied to the entity.

setValue

public void setValue(Object entity,
                     Object value,
                     Property property)
Description copied from interface: PropertyType
Sets the specified property value of the given entity. This method can safely assume that the value has been property prepared (possibly converted) with the prepareValueFromSnapshot method of this class before this method gets invoked.

Specified by:
setValue in interface PropertyType
Parameters:
entity - the entity to set the property for
value - the new value for the property
property - the property to set