Adobe® Flex® 4 Language Reference
Hide Packages and Classes List |  Packages  |  Classes  |  Index  |  Appendixes
mx.data 
ConflictDetector 
Packagemx.data
Classpublic class ConflictDetector
InheritanceConflictDetector Inheritance Object

Language Version: ActionScript 3.0
Product Version: LiveCycle Data Services 3
Runtime Versions: Flash Player 9, AIR 1.1

A DataService instance uses a ConflictDetector instance to determine when a conflict occurs for an operation pushed from a remote destination.

It has three methods that are used to determine if a conflict exists when processing a pushed operation, checkCreate(), checkDelete(), and checkUpdate(). Each of these methods is called for the corresponding operation with two parameters, the local and the remote change.

If you want to customize how conflicts are detected on the client, you can extend this class and augment the behavior as needed to match remote assembler logic.

The following code provides examples of how these methods can be used to indicate a conflict has occurred. Conflicts are always indicated on the remoteChange.

View the examples



Public Properties
 PropertyDefined By
 Inheritedconstructor : Object
A reference to the class object or constructor function for a given object instance.
Object
 Inheritedprototype : Object
[static] A reference to the prototype object of a class or function object.
Object
Public Methods
 MethodDefined By
  
ConflictDetector(dataService:ConcreteDataService)
Constructs an instance of the default conflict detection mechanism.
ConflictDetector
  
checkCreate(remoteChange:IChangeObject, localChange:IChangeObject):void
Called by the DataService when a create operation is pushed/processed from the remote destination.
ConflictDetector
  
checkDelete(remoteChange:IChangeObject, localChange:IChangeObject):void
Called by the DataService when a delete operation is pushed/processed from the remote destination.
ConflictDetector
  
checkRemoveFromFill(localChange:IChangeObject, fillParameters:Object):void
Called by the DataService when a remove from fill operation is pushed/processed from the remote destination.
ConflictDetector
  
checkUpdate(remoteChange:IChangeObject, localChange:IChangeObject):void
Called by the DataService when an update operation is pushed/processed from the remote destination.
ConflictDetector
 Inherited
Indicates whether an object has a specified property defined.
Object
 Inherited
Indicates whether an instance of the Object class is in the prototype chain of the object specified as the parameter.
Object
 Inherited
Indicates whether the specified property exists and is enumerable.
Object
 Inherited
Sets the availability of a dynamic property for loop operations.
Object
 Inherited
Returns the string representation of this object, formatted according to locale-specific conventions.
Object
 Inherited
Returns the string representation of the specified object.
Object
 Inherited
Returns the primitive value of the specified object.
Object
Constructor Detail

ConflictDetector

()Constructor
public function ConflictDetector(dataService:ConcreteDataService)

Language Version: ActionScript 3.0
Product Version: LiveCycle Data Services 3
Runtime Versions: Flash Player 9, AIR 1.1

Constructs an instance of the default conflict detection mechanism.

Parameters
dataService:ConcreteDataService — ConcreteDataService reference to the data service that will use this conflict detector.
Method Detail

checkCreate

()method
public function checkCreate(remoteChange:IChangeObject, localChange:IChangeObject):void

Language Version: ActionScript 3.0
Product Version: LiveCycle Data Services 3
Runtime Versions: Flash Player 9, AIR 1.1

Called by the DataService when a create operation is pushed/processed from the remote destination.

Parameters

remoteChange:IChangeObject — IChangeObject representing the remote change being processed.
 
localChange:IChangeObject — IChangeObject representing any local changes made to the same object referenced by the remoteChange parameter. This value can be null if no local changes have been made to the item represented by the remoteChange parameter.

checkDelete

()method 
public function checkDelete(remoteChange:IChangeObject, localChange:IChangeObject):void

Language Version: ActionScript 3.0
Product Version: LiveCycle Data Services 3
Runtime Versions: Flash Player 9, AIR 1.1

Called by the DataService when a delete operation is pushed/processed from the remote destination.

Parameters

remoteChange:IChangeObject — IChangeObject representing the remote change being processed.
 
localChange:IChangeObject — IChangeObject representing any local changes made to the same object referenced by the remoteChange parameter. This value can be null if no local changes have been made to the item represented by the remoteChange parameter.

checkRemoveFromFill

()method 
public function checkRemoveFromFill(localChange:IChangeObject, fillParameters:Object):void

Language Version: ActionScript 3.0
Product Version: LiveCycle Data Services 3
Runtime Versions: Flash Player 9, AIR 1.1

Called by the DataService when a remove from fill operation is pushed/processed from the remote destination.

Parameters

localChange:IChangeObject — IChangeObject representing the local version of the item that the server is telling us to remove from the specified dill
 
fillParameters:Object — fill parameters identifying the fill from which the item is to be removed.

checkUpdate

()method 
public function checkUpdate(remoteChange:IChangeObject, localChange:IChangeObject):void

Language Version: ActionScript 3.0
Product Version: LiveCycle Data Services 3
Runtime Versions: Flash Player 9, AIR 1.1

Called by the DataService when an update operation is pushed/processed from the remote destination.

Parameters

remoteChange:IChangeObject — IChangeObject representing the remote change being processed.
 
localChange:IChangeObject — IChangeObject representing any local changes made to the same object referenced by the remoteChange parameter. This value can be null if no local changes have been made to the item represented by the remoteChange parameter.

 override public function checkCreate(remoteChange:IChangeObject,
                                      localChange:IChangeObject):void
 {
     // if we have created a local item that is the same item as the remote 
     // change then we have a conflict
     if (localChange != null && 
         ObjectUtil.compare(remoteChange.identity, localChange.identity) == 0)
     {
         remoteChange.conflict("Local created item is in conflict with remotely created item",
                               localChange.changedPropertyNames);
     }
 }
 
 override public function checkDelete(remoteChange:IChangeObject,
                                      localChange:IChangeObject):void
 {
     // if we have an update locally for an item that was deleted remotely
     // that is considered a conflict.
     if (localChange != null)
     {
         if (localChange.isUpdate())
         {
             remoteChange.conflict("Local item was updated and is in conflict with pushed delete.",
                                   localChange.changedPropertyNames);
         }
     }
 }
 
 override public function checkUpdate(remoteChange:IChangeObject,
                                      localChange:IChangeObject):void
 {
     // get a list of all of the changed properties
     var changes:Array = remoteChange.changedPropertyNames;
     // get the remote state of the item's properties
     var newVersion:Object = remoteChange.newVersion;
     var prevVersion:Object = localChange.previousVersion;
     // properties will be in conflict if the old value of a property on the 
     // local item is different from the same property value of the new version
     // of the remote item.
     var conflictingProps:Array = [];
     for (var i:int=0; i<changes.length; i++)
     {
         var prop:Object = changes[i]; // could be a String or QName
         if (ObjectUtil.compare(prevVersion[prop], newVersion[prop]) != 0)
         {
             conflictingProps.push(prop);
         }
     }
 
     if (conflictingProps.length > 0)
     {
         remoteChange.conflict("Local item has changes to properties that conflict with remote change.",
                               conflictingProps);
     }
 }