Documentation Archive Developer
Search
PATH  Documentation > WebObjects 4.5 > EOAccess Reference

Table of Contents

EODatabaseOperation


Inherits from: NSObject
Conforms to: NSObject
(NSObject)
Declared in: EOAccess/EODatabaseOperation.h




Class Description


An EODatabaseOperation object represents an operation-insert, update, or delete-to perform on an enterprise object and all the necessary information required to perform the operation. You don't ordinarily create instances of EODatabaseOperation; rather, the Framework automatically creates an EODatabaseOperation object for each new, updated, or deleted object in an EOEditingContext. An EODatabaseContext object analyzes a set of database operations and maps each operation to one or more adaptor operations. The adaptor operations are then performed by an EOAdaptorChannel object. You generally interact with EODatabaseOperation objects only if you need to specify the order in which a set of operations are carried out (see the description for the EODatabaseContext delegate method databaseContext:willOrderAdaptorOperationsFromDatabaseOperations:).

An EODatabaseOperation specifies an enterprise object (called "object") on which the operation is performed, the EOGlobalID for the object, and the object's entity. In addition, the database operation has a snapshot containing the last known database values for the object and a newRow dictionary of new or updated values to save in the database.




Constants


In EODatabaseOperation.h, EOAccess defines two enumeration types, EOAdaptorOperator and EODatabaseOperator, to identify the primitive database operation represented by an EOAdaptorOperation object or an EODatabaseOperation object. Their constants are:


EOAdaptorOperation Operators EODatabaseOperation Operators
EOAdaptorLockOperator EODatabaseNothingOperator
EOAdaptorInsertOperator EODatabaseInsertOperator
EOAdaptorUpdateOperator EODatabaseUpdateOperator
EOAdaptorDeleteOperator EODatabaseDeleteOperator
EOAdaptorStoredProcedureOperator  



Method Types


Creating a new EODatabaseOperation
- initWithGlobalID:object:entity:
Accessing the global ID object
- globalID
Accessing the object
- object
Accessing the entity
- entity
Accessing the operator
- setDatabaseOperator:
- databaseOperator
Accessing the database snapshot
- setDBSnapshot:
- dbSnapshot
Accessing the row
- setNewRow:
- newRow
Accessing the adaptor operations
- addAdaptorOperation:
- removeAdaptorOperation:
- adaptorOperations
Comparing new row and snapshot values
- rowDiffs
- rowDiffsForAttributes:
Working with to-many snapshots
- recordToManySnapshot:relationshipName:
- toManySnapshots


Instance Methods



adaptorOperations

- (NSArray *)adaptorOperations

Returns the EOAdaptorOperation objects that need to be performed to carry out the operation represented by the receiver.

See Also: - addAdaptorOperation:, - removeAdaptorOperation:



addAdaptorOperation:

- (void)addAdaptorOperation:(EOAdaptorOperation *)adaptorOperation

Adds adaptorOperation to the receiver's list of adaptor operations. Raises an exception if adaptorOperation is nil.

See Also: - adaptorOperations, - removeAdaptorOperation:



databaseOperator

- (EODatabaseOperator)databaseOperator

Returns the receiver's database operator.

dbSnapshot

- (NSDictionary *)dbSnapshot

Returns the database snapshot for the receiver's enterprise object. The snapshot contains the last known database values for the enterprise object. The dictionary returned from this method will be empty if the receiver's object has just been inserted into an EOEditingContext and has not yet been saved in persistent storage. For more information on EOEditingContexts, see the EOEditingContext class specification in the EOControl framework.

See Also: - setDatabaseOperator:



entity

- (EOEntity *)entity

Returns the entity that corresponds to the receiver's enterprise object.

See Also: - initWithGlobalID:object:entity:



globalID

- (EOGlobalID *)globalID

Returns the EOGlobalID object that corresponds to the receiver's enterprise object.

See Also: - initWithGlobalID:object:entity:



initWithGlobalID:object:entity:

- initWithGlobalID:(EOGlobalID *)globalID object:(id)object entity:(EOEntity *)entity

The designated initializer, this method initializes a new EODatabaseOperation instance. Sets the enterprise object to which the operation will be applied, the object's global ID, and the object's entity. Returns self.

See Also: - object, - entity



newRow

- (NSMutableDictionary *)newRow

Returns a dictionary representation of the receiver's enterprise object. In addition to all the properties of the enterprise object that are stored in the database, the dictionary contains values for the non-derived attribute's of the enterprise object's entity that aren't visible in the enterprise object. For example, primary and foreign keys aren't ordinarily properties of an enterprise object but are attributes of the object's entity.

The newRow dictionary is initialized with the values in the receiver's snapshot. New or updated values are added to the newRow dictionary (replacing out-of-date values) as the Framework maps changes in the object to an operation.



object

- (id)object

Returns the receiver's enterprise object.

See Also: - initWithGlobalID:object:entity:



primaryKeyDiffs

- (NSDictionary *)primaryKeyDiffs

Returns a dictionary that contains any primary key values in newRow that are different from those in the dbSnapshot. Returns nil if the receiver doesn't have EODatabaseUpdateOperator set as its database operator.

See Also: - setDatabaseOperator:, - newRow



recordToManySnapshot:relationshipName:

- (void)recordToManySnapshot:(NSArray *)globalIDs relationshipName:(NSString *)name

Records the objects in globalIDs. globalIDs is an array of the globalIDs that identify the objects at the destination of the to-many relationship named name; name is a property of the receiver's enterprise object.

See Also: - toManySnapshots



removeAdaptorOperation:

- (void)removeAdaptorOperation:(EOAdaptorOperation *)adaptorOperation

Removes adaptorOperation from the receiver's list of adaptor operations.

See Also: - adaptorOperations, - addAdaptorOperation:



rowDiffs

- (NSDictionary *)rowDiffs

Returns values in the receiver's newRow dictionary that are different than the corresponding values in its dbSnapshot. The dictionary returned from this method contains the new values from the enterprise object.

See Also: - primaryKeyDiffs



rowDiffsForAttributes:

- (NSDictionary *)rowDiffsForAttributes:(NSArray *)attributes

For the EOAttribute objects in attributes, this method returns values in the receiver's newRow dictionary that are different than the corresponding values in its dbSnapshot. The dictionary returned contains the new values from the enterprise object.

setDatabaseOperator:

- (void)setDatabaseOperator:(EODatabaseOperator)databaseOperator

Sets the receiver's database operator. databaseOperator can be one of the following:

setDBSnapshot:

- (void)setDBSnapshot:(NSDictionary *)dbSnapshot

Sets the snapshot for the receiver's enterprise object. If the object has just been inserted into an an EOEditingContext (EOControl), it won't have a snapshot. In this case, dbSnapshot should be an empty dictionary.

setNewRow:

- (void)setNewRow:(NSMutableDictionary *)newRow

Sets the dictionary representation of the receiver's enterprise object. newRow should contain values for all the properties of the enterprise object that are stored in the database and for the non-derived attribute's of the enterprise object's entity that aren't visible in the enterprise object.

See Also: - databaseOperator



toManySnapshots

- (NSDictionary *)toManySnapshots

Returns the NSDictionary containing the snapshots for the to-many relationships of the receiver's enterprise object.

See Also: - recordToManySnapshot:relationshipName:




Table of Contents