| 
WebObjects 5.2.2 | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
This interface defines a delegate to EODatabaseContext to to handle specific requests that are ordinarily handled by EODatabaseContext. The delegate can use these methods to preempt the operations, modify results, or simply track activity.
An EODatabaseContext shares its delegate with its EODatabaseChannels. These delegate methods are actually sent from EODatabaseChannel, but they're defined in EODatabaseContext for ease of access:
databaseContextDidSelectObjectsdatabaseContextShouldSelectObjectsdatabaseContextShouldUpdateCurrentSnapshotdatabaseContextShouldUsePessimisticLockThe EODatabaseContext delegate methods can be used to intervene
 when objects are created and when they're fetched from the database.
 This gives one more fine-grained control over such issues as how an
 object's primary key is generated (databaseContextNewPrimaryKey),
 how and if objects are locked
 (databaseContextShouldLockObjectWithGlobalID), what fetch
 specification is used to fetch objects
 (databaseContextShouldSelectObjects), how
 batch faulting is performed (databaseContextShouldFetchArrayFault
 and databaseContextShouldFetchObjectFault), and so on.
| Method Summary | |
 void | 
databaseContextDidFetchObjects(EODatabaseContext dbCtxt,
                               NSArray array,
                               EOFetchSpecification fetchSpec,
                               EOEditingContext ec)
Invoked from objectsWithFetchSpecification after
 fetching objects into the editing context ec using fetchSpec. | 
 void | 
databaseContextDidSelectObjects(EODatabaseContext dbCtxt,
                                EOFetchSpecification fetchSpec,
                                EODatabaseChannel dbChannel)
Invoked from the EODatabaseChannel method selectObjectsWithFetchSpecification to tell the delegate that
 dbchannel has selected the objects on behalf of dbCtxt
 as specified by fetchSpec. | 
 boolean | 
databaseContextFailedToFetchObject(EODatabaseContext dbCtxt,
                                   Object object,
                                   EOGlobalID gid)
Invoked when a to-one fault cannot find its data in the database.  | 
 NSDictionary | 
databaseContextNewPrimaryKey(EODatabaseContext dbCtxt,
                             Object object,
                             EOEntity entity)
Invoked if the newly inserted Enterprise Object object doesn't
 have a primary key set. | 
 boolean | 
databaseContextShouldFetchArrayFault(EODatabaseContext dbCtxt,
                                     Object object)
Invoked when a fault is fired, this delegate method lets you fine-tune the behavior of batch faulting.  | 
 boolean | 
databaseContextShouldFetchObjectFault(EODatabaseContext dbCtxt,
                                      Object object)
Invoked when a fault is fired, this delegate method lets you fine-tune the behavior of batch faulting.  | 
 NSArray | 
databaseContextShouldFetchObjects(EODatabaseContext dbCtxt,
                                  EOFetchSpecification fetchSpec,
                                  EOEditingContext ec)
Invoked from objectsWithFetchSpecification to give the delegate
 the opportunity to satisfy ec's fetch request (using the
 criteria specified in fetchSpec) from a local cache. | 
 boolean | 
databaseContextShouldHandleDatabaseException(EODatabaseContext dbCtxt,
                                             Throwable exception)
Invoked when an exception is thrown that might be handled by reconnecting to the database.  | 
 boolean | 
databaseContextShouldInvalidateObjectWithGlobalID(EODatabaseContext dbCtxt,
                                                  EOGlobalID gid,
                                                  NSDictionary dic)
Invoked from invalidateObjectsWithGlobalIDs . | 
 boolean | 
databaseContextShouldLockObjectWithGlobalID(EODatabaseContext dbCtxt,
                                            EOGlobalID gid,
                                            NSDictionary dic)
Invoked from lockObjectWithGlobalID. | 
 boolean | 
databaseContextShouldRaiseExceptionForLockFailure(EODatabaseContext dbCtxt,
                                                  Throwable exception)
Invoked from lockObjectWithGlobalID. | 
 boolean | 
databaseContextShouldSelectObjects(EODatabaseContext dbCtxt,
                                   EOFetchSpecification fetchSpec,
                                   EODatabaseChannel dbChannel)
Invoked from the EODatabaseChannel method selectObjectsWithFetchSpecification to tell the delegate
 that the database channel dbchannel will select objects on 
 behalf of the database context dbCtxt as specified by
 fetchSpec. | 
 NSDictionary | 
databaseContextShouldUpdateCurrentSnapshot(EODatabaseContext dbCtxt,
                                           NSDictionary dic,
                                           NSDictionary dic2,
                                           EOGlobalID gid,
                                           EODatabaseChannel dbChannel)
Invoked from the EODatabaseChannel method fetchObject when
 the database context already has a snapshot for a row fetched
 from the database. | 
 boolean | 
databaseContextShouldUsePessimisticLock(EODatabaseContext dbCtxt,
                                        EOFetchSpecification fetchSpec,
                                        EODatabaseChannel dbChannel)
Invoked from the EODatabaseChannel method selectObjectsWithFetchSpecification. | 
 void | 
databaseContextWillFireArrayFaultForGlobalID(EODatabaseContext dbCtxt,
                                             EOGlobalID gid,
                                             EORelationship rel,
                                             EOFetchSpecification fetchSpec,
                                             EOEditingContext ec)
Invoked just before the Framework-generated fetch specification, fetchSpec, is used to clear the fault for the specified
 globalID (gid) and relationship(rel). | 
 void | 
databaseContextWillFireObjectFaultForGlobalID(EODatabaseContext dbCtxt,
                                              EOGlobalID gid,
                                              EOFetchSpecification fetchSpec,
                                              EOEditingContext ec)
Invoked just before the Framework-generated fetch specification, fetchSpec, is used to clear the fault for the specified
 globalID, gid. | 
 NSArray | 
databaseContextWillOrderAdaptorOperations(EODatabaseContext dbCtxt,
                                          NSArray databaseOps)
Invoked from performChanges. | 
 NSArray | 
databaseContextWillPerformAdaptorOperations(EODatabaseContext dbCtxt,
                                            NSArray adaptorOps,
                                            EOAdaptorChannel adChannel)
Invoked from performChanges to allow the delegate 
 to send a different array of EOAdaptorOperations to be executed
 by dbCtx. | 
 boolean | 
databaseContextWillRunLoginPanelToOpenDatabaseChannel(EODatabaseContext dbCtx,
                                                      EODatabaseChannel dbChannel)
Allows the delegate to determine whether the database context dbCtx
 should run the adaptor login panel and open the adaptor channel associated with
 the database channel dbChannel, if the adaptor channel is not already open. | 
| Method Detail | 
public void databaseContextDidFetchObjects(EODatabaseContext dbCtxt,
                                           NSArray array,
                                           EOFetchSpecification fetchSpec,
                                           EOEditingContext ec)
objectsWithFetchSpecification after
 fetching objects into the editing context ec using fetchSpec.  
 The array parameter contains the fetched objects.  The delegate may take whatever 
 action is needed.
dbCtxt - The database context.array - The results of the fetch.fetchSpec - The criteria to select and order a group of database
                         records.ec - The EOEditingContext into which the objects were fetched.databaseContextShouldFetchObjects(EODatabaseContext dbCtxt,
                         EOFetchSpecification fetchSpec, EOEditingContext ec), 
databaseContextShouldFetchObjectFault(
                         EODatabaseContext dbCtxt, Object object), 
EODatabaseContext.objectsWithFetchSpecification(EOFetchSpecification
                         fetchSpecification, EOEditingContext
                         anEditingContext)
public void databaseContextDidSelectObjects(EODatabaseContext dbCtxt,
                                            EOFetchSpecification fetchSpec,
                                            EODatabaseChannel dbChannel)
selectObjectsWithFetchSpecification to tell the delegate that
 dbchannel has selected the objects on behalf of dbCtxt
 as specified by fetchSpec.  The delegate may take whatever action
 is needed.
dbCtxt - The database context.fetchSpec - The criteria to select and order a group of database
                      records.databaseContextShouldSelectObjects(
                      EODatabaseContext dbCtxt, EOFetchSpecification fetchSpec,
                      EODatabaseChannel dbChannel), 
EODatabaseChannel.selectObjectsWithFetchSpecification(
                      EOFetchSpecification fetchSpecification, EOEditingContext context)
public boolean databaseContextFailedToFetchObject(EODatabaseContext dbCtxt,
                                                  Object object,
                                                  EOGlobalID gid)
object is a cleared fault identified by the globalID gid.
 If this method returns true, dbCtxt assumes
 that the delegate set the information into the object, and created a snapshot of it,
 correcting the problem.
  If the delegate returns false or if the delegate method is not
 implemented, dbCtxt tracks the gid of the offending
 object. If the tracked gid is in the list of updated objects
 when changes to the editing context are saved, the database context
 throws an exception.  The method missingObjectGlobalIDs can be used
 to get a list of objects that failed to fetch.
dbCtxt - The database context.object - A cleared fault.gid - The globalID that identifies object.
true if the faulting problem
                  has been handled, false otherwise.EODatabaseContext.missingObjectGlobalIDs(), 
EODatabaseContext.prepareForSaveWithCoordinator(EOObjectStoreCoordinator
                  coordinator, EOEditingContext editingContext)
public NSDictionary databaseContextNewPrimaryKey(EODatabaseContext dbCtxt,
                                                 Object object,
                                                 EOEntity entity)
object doesn't
 have a primary key set. The delegate can implement custom primary key generation, 
 or return null, in which case the database context dbCtxt will
 send a primaryKeyForNewRowWithEntity message to an EOAdaptorChannel 
 to generate the key. 
 Should return a dictionary containing the attribute or attributes (if object has a 
 compound primary key) that make up object's primary key, or null to have the
 database context generate the primary key.
dbCtxt - The database context.object - A newly inserted Enterprise Object.entity - The EOEntity object for primary key generation.
null.EOAdaptorChannel.primaryKeyForNewRowWithEntity(
                         EOEntity entity)
public boolean databaseContextShouldFetchArrayFault(EODatabaseContext dbCtxt,
                                                    Object object)
batchFetchRelationship)
 and return false, or return true to allow the
 database context to do the fetch itself. If dbCtxt performs the
 fetch, it will batch fault according to the batch count on the relationship
 being fetched.
dbCtxt - The database context.object - The array fault to be fetched.
true to permit the database context
                         to fetch the array fault, false otherwise.databaseContextShouldFetchObjectFault(EODatabaseContext dbCtxt, Object object)
public boolean databaseContextShouldFetchObjectFault(EODatabaseContext dbCtxt,
                                                     Object object)
objectsWithFetchSpecification ) and return false,
 or return true to allow dbCtxt to fetch the fault.
 If the database context performs the fetch, it will batch fault according to the
 batch count on the entity being fetched.
dbCtxt - The database context.object - The fault to be fetched.
true to permit the database context
                   to fetch the fault, false otherwise.databaseContextShouldFetchArrayFault(
                   EODatabaseContext dbCtxt, Object object), 
EODatabaseContext.objectsWithFetchSpecification(EOFetchSpecification
                   fetchSpecification, EOEditingContext anEditingContext)
public NSArray databaseContextShouldFetchObjects(EODatabaseContext dbCtxt,
                                                 EOFetchSpecification fetchSpec,
                                                 EOEditingContext ec)
objectsWithFetchSpecification to give the delegate
 the opportunity to satisfy ec's fetch request (using the
 criteria specified in fetchSpec) from a local cache.
 If the delegate returns null, dbCtxt performs
 the fetch. Otherwise, the returned array is returned as the
 fetch result.
dbCtxt - The database context.fetchSpec - The criteria to select and order a group of database
                      records.ec - The EOEditingContext into which to fetch objects.
fetchSpec,
                      or null.databaseContextDidFetchObjects(EODatabaseContext dbCtxt,
                      NSArray array, EOFetchSpecification fetchSpec, EOEditingContext ec), 
EODatabaseContext.objectsWithFetchSpecification(EOFetchSpecification
                      fetchSpecification, EOEditingContext anEditingContext)
public boolean databaseContextShouldHandleDatabaseException(EODatabaseContext dbCtxt,
                                                            Throwable exception)
true to permit the database context to handle the
 exception by automatically trying to reconnect to the database, for example, if the delegate
 determines that the exception was due to a dropped connection.  
  The delegate should return false to handle the exception itself with a
 reconnection strategy appropriate to the exception and application.  In this case, the
 database context assumes that all reconnection and associated clean-up have been performed
 by the delegate and it immediately retries the operation that generated the original exception.
 If exception is not one that can be handled by
 reconnecting to the database, the delegate should simply re-throw it.  If this method
 is not implemented, reconnection will be handled by the response of the adaptor to
 isDroppedConnectionException.
dbCtxt - The database context.exception - An exception thrown during database operations.
true to permit the
                   database context to handle 
                   excpetion, false to 
                   have the delegate evaluate and handle it.
public boolean databaseContextShouldInvalidateObjectWithGlobalID(EODatabaseContext dbCtxt,
                                                                 EOGlobalID gid,
                                                                 NSDictionary dic)
invalidateObjectsWithGlobalIDs . The delegate 
 should return false to prevent the object as identified by 
 gid from being invalidated, and its snapshot from being cleared.
dbCtxt - The database context.gid - The globalID identifying an object to be invalidated.dic - The snapshot of an object to be invalidated.
false to prevent invalidation of the object identified
                       by gid, true to permit invalidation.EODatabaseContext.invalidateObjectsWithGlobalIDs(NSArray globalIDs)
public boolean databaseContextShouldLockObjectWithGlobalID(EODatabaseContext dbCtxt,
                                                           EOGlobalID gid,
                                                           NSDictionary dic)
lockObjectWithGlobalID. The delegate should
 return true to proceed to lock the object identified by gid,
 false to cause lockObjectWithGlobalID to return without 
 locking. 
  Delegates can override the locking mechanism by implementing their own locking 
 procedure and returning false. Values from dic can be used
 to create a qualifier from the attributes used for locking specified
 for the object's entity. If custom locking is implemented, the delegate should 
 throw an exception if it fails to lock exactly one object.
dbCtxt - The database contextgid - The globalID that identifies the object to lock.dic - The current snapshot of the object identified by gid
                         which may be used to supply attributes to implement custom locking.
true to have the database context lock the object,
                         false to implement custom locking by the delegate, or to 
                         return without locking the object.EODatabaseContext.lockObjectWithGlobalID(EOGlobalID gid,
                         EOEditingContext ec)
public boolean databaseContextShouldRaiseExceptionForLockFailure(EODatabaseContext dbCtxt,
                                                                 Throwable exception)
lockObjectWithGlobalID. This method allows the delegate to
 suppress exception that was thrown during dbCtxt's attempt
 to lock the object.
dbCtxt - The database context.exception - A exception thrown due to locking failure.
true to allow exception
                         to be thrown, false to suppress it.EODatabaseContext.lockObjectWithGlobalID(EOGlobalID globalID,
                          EOEditingContext anEditingContext)
public boolean databaseContextShouldSelectObjects(EODatabaseContext dbCtxt,
                                                  EOFetchSpecification fetchSpec,
                                                  EODatabaseChannel dbChannel)
selectObjectsWithFetchSpecification to tell the delegate
 that the database channel dbchannel will select objects on 
 behalf of the database context dbCtxt as specified by
 fetchSpec.  If the delegate returns true,
 the channel will proceed to select the object. If the delegate
 returns false (possibly after issuing custom
 SQL against the adaptor) the channel will skip the select and return immediately.
  The delegate should not modify fetchSpec's qualifier or fetch order.
dbCtxt - The database context.fetchSpec - The criteria to select and order a group of database
                         records.dbChannel - The database channel.
true to allow the select to proceed, 
                         false to cause dbChannel to return immediately.EODatabaseChannel.selectObjectsWithFetchSpecification(
                         EOFetchSpecification fetchSpecification, EOEditingContext context)
public NSDictionary databaseContextShouldUpdateCurrentSnapshot(EODatabaseContext dbCtxt,
                                                               NSDictionary dic,
                                                               NSDictionary dic2,
                                                               EOGlobalID gid,
                                                               EODatabaseChannel dbChannel)
fetchObject when
 the database context already has a snapshot for a row fetched
 from the database. This method is invoked without first checking
 whether the current snapshot dic and new snapshot dic2
 are equivalent. 
 The default behavior is not  to update the current snapshot
 with the new snapshot. The delegate can override this behavior by returning
 dic2, or some other snapshot, to be recorded as the 
 updated snapshot for the object, which is identified by the globalID gid. 
 In this case, dbCtxt broadcasts an ObjectsChangedInStoreNotification,
 indicating that all objects corresponding to this globalID are now invalid.
Returning either dic or null prevents the current snapshot
 from being replaced.
dbCtxt - The database context.dic - The current snapshot for the object identified by gid.dic2 - The new snapshot for the object identified by gid.gid - The globalID identifying the fetched object for which dic
                         is the current snapshot.dbChannel - The database channel.
dic2 or some other snapshot with which to 
                         update the snapshot recorded for gid; dic or 
                         null to leave the currently recorded snapshot unmodified.EODatabaseChannel.fetchObject()
public boolean databaseContextShouldUsePessimisticLock(EODatabaseContext dbCtxt,
                                                       EOFetchSpecification fetchSpec,
                                                       EODatabaseChannel dbChannel)
selectObjectsWithFetchSpecification.
 If the delegate returns true, the channel locks the rows being selected. 
 If the delegate returns false, the channel selects the rows without locking.
  The delegate should not modify fetchSpec's qualifier or fetch order.
dbCtxt - The database context.fetchSpec - The criteria to select and order a group of database
                      records.dbChannel - The database channel.
true to instruct dbChannel 
                      to lock selected database rows, false to select without locking.EODatabaseChannel.selectObjectsWithFetchSpecification(
                      EOFetchSpecification fetchSpecification, EOEditingContext context)
public void databaseContextWillFireArrayFaultForGlobalID(EODatabaseContext dbCtxt,
                                                         EOGlobalID gid,
                                                         EORelationship rel,
                                                         EOFetchSpecification fetchSpec,
                                                         EOEditingContext ec)
fetchSpec, is used to clear the fault for the specified
 globalID (gid) and relationship(rel). The delegate 
 can take whatever action is needed.
 
 Note: It is very dangerous to modify the fetch specification.
dbCtxt - The database context.gid - The globalID identifying the array fault to be cleared.rel - The name of the relationship associated with the array fault gid.fetchSpec - The criteria to select and order a group of database
                         records.ec - The EOEditingContext.
public void databaseContextWillFireObjectFaultForGlobalID(EODatabaseContext dbCtxt,
                                                          EOGlobalID gid,
                                                          EOFetchSpecification fetchSpec,
                                                          EOEditingContext ec)
fetchSpec, is used to clear the fault for the specified
 globalID, gid.  The delegate can take whatever action is needed.
 Note: It is very dangerous to modify the fetch specification.
dbCtxt - The database context.gid - The globalID identifying the fault to be cleared.fetchSpec - The criteria to select and order a group of database
                         records.ec - The EOEditingContext.
public NSArray databaseContextWillOrderAdaptorOperations(EODatabaseContext dbCtxt,
                                                         NSArray databaseOps)
performChanges. If the delegate responds to this 
 message, it must return an array of EOAdaptorOperations that the database context
 can submit to an EOAdaptorChannel for execution. The delegate can
 fabricate its own array by asking each of the EODatabaseOperation objects in
 databaseOps for its list of EOAdaptorOperations, and adding them 
 to the array which will eventually be returned by this method. 
 The delegate may optimize, order, or transform the list in any way it deems necessary. This is useful for applications that need a special ordering of the EOAdaptorOperations so as not to violate any database referential integrity constraints.
dbCtxt - The database context.databaseOps - An array of EODatabaseOperation objects.
EODatabaseContext.performChanges(), 
EOAdaptorOperation, 
EODatabaseOperation
public NSArray databaseContextWillPerformAdaptorOperations(EODatabaseContext dbCtxt,
                                                           NSArray adaptorOps,
                                                           EOAdaptorChannel adChannel)
performChanges to allow the delegate 
 to send a different array of EOAdaptorOperations to be executed
 by dbCtx.  The delegate may return adaptorOps 
 unchanged. 
 This method is useful for applications that need a special ordering of the EOAdaptorOperations so as not to violate any database referential integrity constraints.
dbCtxt - The database context.adaptorOps - The array of adaptor operations that will be executed by default.adChannel - An adaptor channel.
adaptorOps.EODatabaseContext.performChanges(), 
EOAdaptorOperation, 
EOAdaptorChannel
public boolean databaseContextWillRunLoginPanelToOpenDatabaseChannel(EODatabaseContext dbCtx,
                                                                     EODatabaseChannel dbChannel)
dbCtx
 should run the adaptor login panel and open the adaptor channel associated with
 the database channel dbChannel, if the adaptor channel is not already open.
 The delegate should return true to permit the database context to run
 the login panel, false to prevent it.  If the delegate returns 
 false, it is responsible for opening the adaptor channel itself.
dbCtx - The database context.dbChannel - The database channel.
true to permit 
                         to run the adaptor login panel and open the adaptor channel,
                         false to prevent it.- See Also:
 EOAdaptorChannel.openChannel()
  | 
Last updated Mon Oct 13 15:42:52 PDT 2003. | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||