org.deduced.dynamic
Class FlyWheelDynamicPropertyController

java.lang.Object
  extended by org.deduced.AbstractPropertyCollection<K,V>
      extended by org.deduced.PropertyMap<java.lang.Object,java.lang.Object>
          extended by org.deduced.dynamic.DynamicPropertyMap
              extended by org.deduced.dynamic.FlyWheelDynamicPropertyController
All Implemented Interfaces:
java.lang.Cloneable, java.util.EventListener, PropertyController, PropertyControllerModel, ContextualPropertyCollection<java.lang.Object,java.lang.Object>, NamedPropertyCollection, PropertyCollection<java.lang.Object,java.lang.Object>, PropertyListener<java.lang.Object,java.lang.Object>

public class FlyWheelDynamicPropertyController
extends DynamicPropertyMap
implements PropertyController, PropertyListener<java.lang.Object,java.lang.Object>

Fly Wheel Dynamic Property Controller

Author:
Steve McDuff

Nested Class Summary
 
Nested classes/interfaces inherited from class org.deduced.PropertyMap
PropertyMap.PropertyIterator, PropertyMap.ValueIterator
 
Nested classes/interfaces inherited from class org.deduced.AbstractPropertyCollection
AbstractPropertyCollection.CollectionToDeleteMonitor
 
Field Summary
private  DeducedControllerLayerExtension controlLayer
          control layer
private  boolean deleted
          is this collection deleted
private  boolean initialized
          is this collection initialized
private static long serialVersionUID
          serial ID
 
Fields inherited from class org.deduced.PropertyMap
PROPERTY_MAP_TYPE
 
Fields inherited from class org.deduced.AbstractPropertyCollection
CHECK_DELETE_MODE_AUTOMATIC, CHECK_DELETE_MODE_MANUAL, COLLECTION_TO_DELETE
 
Fields inherited from interface org.deduced.controller.PropertyControllerModel
CONTROLLED_COLLECTION_INSTANCE, CONTROLLED_PROPERTY_INSTANCE_INSTANCE, CONTROLLED_PROPERTY_VALUE_TYPE_INSTANCE, IS_CHANGEABLE_INSTANCE, IS_REMOVABLE_INSTANCE, PROPERTY_CONTROLLER_MODEL_TYPE, PROPERTY_KEY_INSTANCE, PROPERTY_VALUE_INSTANCE
 
Fields inherited from interface org.deduced.NamedPropertyCollection
NAME_INSTANCE, NAMED_PROPERTY_COLLECTION_TYPE
 
Fields inherited from interface org.deduced.PropertyCollection
PROPERTY_COLLECTION_TYPE
 
Constructor Summary
FlyWheelDynamicPropertyController(PropertyCollection<?,?> setType, boolean setActivated, RuleExecutionContext setContext, DeducedControllerLayerExtension setControlLayer)
          FlyWheelDynamicPropertyController Constructor
 
Method Summary
private  void addControlledCollectionListener()
          add Controlled Collection Listener
 Task createAndSetControlledProperty(PropertyCollection<?,?> createType, boolean deletePreviousValue)
          (non-Javadoc)
protected  void deleteRemoveLocalObjectFromParent()
          (non-Javadoc)
 PropertyCollection getControlledCollection()
          (non-Javadoc)
 PropertyCollection<?,?> getControlledPropertyInstance()
          (non-Javadoc)
 PropertyCollection<?,?> getControlledPropertyValueType()
          (non-Javadoc)
 java.lang.String getName()
          (non-JSDoc)
 java.lang.Object getPropertyKey()
          (non-Javadoc)
 java.lang.Object getPropertyValue()
          (non-Javadoc)
 boolean isChangeable()
          (non-Javadoc)
 boolean isNewValueValid(java.lang.Object newValue, boolean validateParent)
          (non-Javadoc)
 boolean isRemovable()
          (non-Javadoc)
 java.lang.Object keyOnParent()
          (non-Javadoc)
 PropertyCollection<?,?> parent()
          (non-Javadoc)
 void propertyChanged(PropertyChangeEvent<?,?> event)
          (non-Javadoc)
private  void removeControlledCollectionListener()
          remove Controlled Collection Listener
 Task removeControlledProperty(boolean deleteValue)
          (non-Javadoc)
 PropertyCollection setControlledCollection(PropertyCollection setControlledCollection)
          (non-Javadoc)
 Task setControlledProperty(java.lang.Object value, boolean deletePreviousValue)
          (non-Javadoc)
 PropertyCollection setControlledPropertyInstance(PropertyCollection setControlledPropertyInstance)
          (non-Javadoc)
 PropertyCollection setControlledPropertyValueType(PropertyCollection setControlledPropertyValueType)
          (non-Javadoc)
 boolean setIsChangeable(boolean setIsChangeable)
          (non-Javadoc)
 boolean setIsRemovable(boolean setIsRemovable)
          (non-Javadoc)
 java.lang.String setName(java.lang.String newValue)
          (non-JSDoc)
 java.lang.Object setProperty(java.lang.Object propertyKey, java.lang.Object value)
          (non-Javadoc)
 java.lang.Object setPropertyKey(java.lang.Object setPropertyKey)
          (non-Javadoc)
 java.lang.Object setPropertyValue(java.lang.Object setPropertyValue)
          (non-Javadoc)
private  void updateValue()
          update the value of the represented property
 
Methods inherited from class org.deduced.dynamic.DynamicPropertyMap
activate, activateOwnedChildCollections, activateOwnedChildCollections, addDeductionRule, attemptToCreateValue, cleanNewlyClonedValue, clone, createObjectIfBasicType, delete, deleteProperty, deletePropertyInstance, getContext, getOutputDepth, getRecursiveParentList, getRuleName, getRuleProperty, getTypeName, internalAddProperty, isActivated, isRuleApplicableToChild, isRulePropertyCreated, rebuildProperties, rebuildProperty, recursivelyOverrideChildProperties, removeDeductionRule, removeProperty, removePropertyInstance, ruleOutputMatchesReverseInstanceList, setParent, type, wasThePropertyReference
 
Methods inherited from class org.deduced.PropertyMap
addProperty, areKeysAssignedAutomatically, asKeySet, containsKey, getFixedInstance, getProperty, getPropertyValue, handleRemovedProperty, internalIsSetValueParentNecessary, internalRemoveProperty, internalSetValueParentIfNecessary, isFixedInstanceReference, iterator, iteratorByValue, putPropertyInMap, removePropertyValue, resetRemovedPropertyParent, setFixedInstance, size, validateCollectionParentBeforeAddition
 
Methods inherited from class org.deduced.AbstractPropertyCollection
addListener, asPropertyList, asPropertyMap, asValueList, asValueMap, callObjectClone, classLogger, clear, clearCollectionMonitoredForDelete, cloneCollection, containsInstance, containsValue, createUniqueID, deleteClearAllProperties, deleteClearListenerList, deleteFireDeleteEvent, deleteProcessCompletedValidation, deleteValidateEmptyListenerList, deleteValidateNoPendingReferences, equals, firePropertyChangeEvent, flushCollectionsWithNewParent, flushCollectionsWithNewParent, getActionInvoker, getCheckDeleteMode, getCheckDeleteRunner, getInstanceIdentityKey, hashCode, id, instanceKey, internalFirePropertyChangeEvent, invokeAction, isDeleteCheckedOnClearParent, isEmpty, isListenerRegistered, isParentOrKeyNull, removeListener, requiresChangeEvent, setActionInvoker, setCheckDeleteMode, setCheckDeleteRunner, setDeleteCheckedOnClearParent, toString, updateReference, updateReferenceWithReferenceFlag, validateAllPropertyInstances, validateNoListener, validateNoParentRecursion, validateParentIsNull, validateParentIsNull, valueKey
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.deduced.PropertyCollection
activate, addListener, addProperty, areKeysAssignedAutomatically, asKeySet, asPropertyList, asPropertyMap, asValueList, asValueMap, clear, clone, containsInstance, containsKey, containsValue, delete, getFixedInstance, getProperty, getPropertyValue, id, instanceKey, invokeAction, isActivated, isEmpty, isListenerRegistered, iterator, iteratorByValue, removeListener, removeProperty, removePropertyInstance, removePropertyValue, setFixedInstance, setParent, size, type, valueKey
 

Field Detail

serialVersionUID

private static final long serialVersionUID
serial ID

See Also:
Constant Field Values

controlLayer

private DeducedControllerLayerExtension controlLayer
control layer


deleted

private boolean deleted
is this collection deleted


initialized

private boolean initialized
is this collection initialized

Constructor Detail

FlyWheelDynamicPropertyController

public FlyWheelDynamicPropertyController(PropertyCollection<?,?> setType,
                                         boolean setActivated,
                                         RuleExecutionContext setContext,
                                         DeducedControllerLayerExtension setControlLayer)
FlyWheelDynamicPropertyController Constructor

Parameters:
setType - type of this collection
setActivated - option to activate this collection
setContext - the rule execution context
setControlLayer - the control layer to use
Method Detail

createAndSetControlledProperty

public Task createAndSetControlledProperty(PropertyCollection<?,?> createType,
                                           boolean deletePreviousValue)
(non-Javadoc)

Specified by:
createAndSetControlledProperty in interface PropertyController
Parameters:
createType - the created object type
deletePreviousValue - option to delete the previous value in the property. This option only has effect if the property contains a property collection and the property isn't a reference. It will call delete on the previous value.
Returns:
a task used to monitor the change request
See Also:
PropertyController.createAndSetControlledProperty(org.deduced.PropertyCollection, boolean)

getControlledPropertyInstance

public PropertyCollection<?,?> getControlledPropertyInstance()
(non-Javadoc)

Specified by:
getControlledPropertyInstance in interface PropertyControllerModel
Returns:
controlled property instance
See Also:
PropertyControllerModel.getControlledPropertyInstance()

getControlledPropertyValueType

public PropertyCollection<?,?> getControlledPropertyValueType()
(non-Javadoc)

Specified by:
getControlledPropertyValueType in interface PropertyControllerModel
Returns:
controlled property value type
See Also:
PropertyControllerModel.getControlledPropertyValueType()

removeControlledProperty

public Task removeControlledProperty(boolean deleteValue)
(non-Javadoc)

Specified by:
removeControlledProperty in interface PropertyController
Parameters:
deleteValue - option to delete the value in the property. This option only has effect if the property contains a property collection and the property isn't a reference. It will call delete on the previous value.
Returns:
a task used to monitor the change request
See Also:
PropertyController.removeControlledProperty(boolean)

setControlledProperty

public Task setControlledProperty(java.lang.Object value,
                                  boolean deletePreviousValue)
(non-Javadoc)

Specified by:
setControlledProperty in interface PropertyController
Parameters:
value - the new value
deletePreviousValue - option to delete the previous value in the property. This option only has effect if the property contains a property collection and the property isn't a reference. It will call delete on the previous value.
Returns:
a task used to monitor the change request
See Also:
PropertyController.setControlledProperty(java.lang.Object, boolean)

getControlledCollection

public PropertyCollection getControlledCollection()
(non-Javadoc)

Specified by:
getControlledCollection in interface PropertyControllerModel
Returns:
controlled collection
See Also:
PropertyControllerModel.getControlledCollection()

getPropertyKey

public java.lang.Object getPropertyKey()
(non-Javadoc)

Specified by:
getPropertyKey in interface PropertyControllerModel
Returns:
property key
See Also:
PropertyControllerModel.getPropertyKey()

getPropertyValue

public java.lang.Object getPropertyValue()
(non-Javadoc)

Specified by:
getPropertyValue in interface PropertyControllerModel
Returns:
property value
See Also:
PropertyControllerModel.getPropertyValue()

isChangeable

public boolean isChangeable()
(non-Javadoc)

Specified by:
isChangeable in interface PropertyControllerModel
Returns:
is changeable
See Also:
PropertyControllerModel.isChangeable()

isRemovable

public boolean isRemovable()
(non-Javadoc)

Specified by:
isRemovable in interface PropertyControllerModel
Returns:
is removable
See Also:
PropertyControllerModel.isRemovable()

setControlledCollection

public PropertyCollection setControlledCollection(PropertyCollection setControlledCollection)
(non-Javadoc)

Specified by:
setControlledCollection in interface PropertyControllerModel
Parameters:
setControlledCollection - new controlled collection
Returns:
controlled collection value after the change
See Also:
PropertyControllerModel.setControlledCollection(org.deduced.PropertyCollection)

setControlledPropertyInstance

public PropertyCollection setControlledPropertyInstance(PropertyCollection setControlledPropertyInstance)
(non-Javadoc)

Specified by:
setControlledPropertyInstance in interface PropertyControllerModel
Parameters:
setControlledPropertyInstance - new controlled property instance
Returns:
controlled property instance value after the change
See Also:
PropertyControllerModel.setControlledPropertyInstance(org.deduced.PropertyCollection)

setControlledPropertyValueType

public PropertyCollection setControlledPropertyValueType(PropertyCollection setControlledPropertyValueType)
(non-Javadoc)

Specified by:
setControlledPropertyValueType in interface PropertyControllerModel
Parameters:
setControlledPropertyValueType - new controlled property value type
Returns:
controlled property value type value after the change
See Also:
PropertyControllerModel.setControlledPropertyValueType(org.deduced.PropertyCollection)

setIsChangeable

public boolean setIsChangeable(boolean setIsChangeable)
(non-Javadoc)

Specified by:
setIsChangeable in interface PropertyControllerModel
Parameters:
setIsChangeable - new is changeable
Returns:
is changeable value after the change
See Also:
PropertyControllerModel.setIsChangeable(boolean)

setIsRemovable

public boolean setIsRemovable(boolean setIsRemovable)
(non-Javadoc)

Specified by:
setIsRemovable in interface PropertyControllerModel
Parameters:
setIsRemovable - new is removable
Returns:
is removable value after the change
See Also:
PropertyControllerModel.setIsRemovable(boolean)

setPropertyKey

public java.lang.Object setPropertyKey(java.lang.Object setPropertyKey)
(non-Javadoc)

Specified by:
setPropertyKey in interface PropertyControllerModel
Parameters:
setPropertyKey - new property key
Returns:
property key value after the change
See Also:
PropertyControllerModel.setPropertyKey(java.lang.Object)

setPropertyValue

public java.lang.Object setPropertyValue(java.lang.Object setPropertyValue)
(non-Javadoc)

Specified by:
setPropertyValue in interface PropertyControllerModel
Parameters:
setPropertyValue - new property value
Returns:
property value value after the change
See Also:
PropertyControllerModel.setPropertyValue(java.lang.Object)

setProperty

public java.lang.Object setProperty(java.lang.Object propertyKey,
                                    java.lang.Object value)
(non-Javadoc)

Specified by:
setProperty in interface PropertyCollection<java.lang.Object,java.lang.Object>
Overrides:
setProperty in class DynamicPropertyMap
Parameters:
propertyKey - the key of the property
value - the new value of the property. If the property is a collection that is not by reference, this method requires that the passed collection has a parent set to null since it will reset the parent.
Returns:
the added value instance
See Also:
DynamicPropertyMap.setProperty(java.lang.Object, java.lang.Object)

propertyChanged

public void propertyChanged(PropertyChangeEvent<?,?> event)
(non-Javadoc)

Specified by:
propertyChanged in interface PropertyListener<java.lang.Object,java.lang.Object>
Parameters:
event - the event that was generated
See Also:
PropertyListener.propertyChanged(org.deduced.PropertyChangeEvent)

updateValue

private void updateValue()
update the value of the represented property


addControlledCollectionListener

private void addControlledCollectionListener()
add Controlled Collection Listener


removeControlledCollectionListener

private void removeControlledCollectionListener()
remove Controlled Collection Listener


parent

public PropertyCollection<?,?> parent()
(non-Javadoc)

Specified by:
parent in interface PropertyCollection<java.lang.Object,java.lang.Object>
Overrides:
parent in class AbstractPropertyCollection<java.lang.Object,java.lang.Object>
Returns:
Returns the parent.
See Also:
AbstractPropertyCollection.parent()

keyOnParent

public java.lang.Object keyOnParent()
(non-Javadoc)

Specified by:
keyOnParent in interface PropertyCollection<java.lang.Object,java.lang.Object>
Overrides:
keyOnParent in class AbstractPropertyCollection<java.lang.Object,java.lang.Object>
Returns:
the key on the parent
See Also:
AbstractPropertyCollection.keyOnParent()

isNewValueValid

public boolean isNewValueValid(java.lang.Object newValue,
                               boolean validateParent)
(non-Javadoc)

Specified by:
isNewValueValid in interface PropertyController
Parameters:
newValue - the new value
validateParent - option to validate the parent of the value as well. If true, then the parent must be null for all properties by value to be valid. If false, then the parent isn't validated.
Returns:
true if the new value is valid, false otherwise.
See Also:
PropertyController.isNewValueValid(Object, boolean)

deleteRemoveLocalObjectFromParent

protected void deleteRemoveLocalObjectFromParent()
(non-Javadoc)

Overrides:
deleteRemoveLocalObjectFromParent in class AbstractPropertyCollection<java.lang.Object,java.lang.Object>
See Also:
AbstractPropertyCollection.deleteRemoveLocalObjectFromParent()

getName

public java.lang.String getName()
(non-JSDoc)

Specified by:
getName in interface NamedPropertyCollection
Returns:
name
See Also:
NamedPropertyCollection.getName()

setName

public java.lang.String setName(java.lang.String newValue)
(non-JSDoc)

Specified by:
setName in interface NamedPropertyCollection
Parameters:
newValue - new name
Returns:
name value after the change
See Also:
NamedPropertyCollection.setName(java.lang.String)