|
WebObjects 5.4.2 | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.webobjects.eocontrol.EOFetchSpecification
public class EOFetchSpecification
An EOFetchSpecification collects the criteria needed to select and order a group of records or enterprise objects, whether from an external repository such as a relational database or an internal store such as an EOEditingContext. An EOFetchSpecification contains these elements:
EOFetchSpecifications are most often used with the method objectsWithFetchSpecification
, defined by EOObjectStore, EOEditingContext, and EODatabaseContext. EOAdaptorChannel and EODatabaseChannel also define methods that use EOFetchSpecifications.
Nested Class Summary |
---|
Nested classes/interfaces inherited from interface com.webobjects.foundation.NSCoding |
---|
NSCoding.Support |
Nested classes/interfaces inherited from interface com.webobjects.eocontrol.EOKeyValueArchiving |
---|
EOKeyValueArchiving.Awaking, EOKeyValueArchiving.FinishInitialization, EOKeyValueArchiving.Support |
Constructor Summary | |
---|---|
EOFetchSpecification()
Creates a new EOFetchSpecification. |
|
EOFetchSpecification(String entityName,
EOQualifier qualifier,
NSArray sortOrderings)
Creates a new EOFetchSpecification with the arguments specified. |
|
EOFetchSpecification(String entityName,
EOQualifier qualifier,
NSArray sortOrderings,
boolean usesDistinct,
boolean isDeep,
NSDictionary hints)
Creates a new EOFetchSpecification with the arguments specified. |
Method Summary | |
---|---|
Class |
classForCoder()
Allows the receiver, before being encoded, to substitute a class other than its own in a coder. |
Object |
clone()
Implementation of the java.lang.Cloneable interface. |
static Object |
decodeObject(NSCoder coder)
(Re)creates an object based on type information and data stored in coder . |
static Object |
decodeWithKeyValueUnarchiver(EOKeyValueUnarchiver unarchiver)
(Re)creates an object based on information in unarchiver . |
void |
encodeWithCoder(NSCoder coder)
Archives the receiver's type information and data into coder . |
void |
encodeWithKeyValueArchiver(EOKeyValueArchiver archiver)
Archives the receiver's into archiver . |
String |
entityName()
Returns the name of the entity to be fetched. |
boolean |
fetchesRawRows()
Returns whether the rawRowKeyPaths method returns non-null . |
int |
fetchLimit()
Returns the fetch limit value which indicates the maximum number of objects to fetch. |
static EOFetchSpecification |
fetchSpecificationNamed(String name,
String entityName)
Returns the fetch specification that the entity specified by entityName associates with the fetch specification name name . |
EOFetchSpecification |
fetchSpecificationWithQualifierBindings(NSDictionary bindings)
Applies bindings from bindings to the receiver's qualifier if there is one, and returns a new fetch specification that can be used in a fetch. |
NSDictionary |
hints()
Returns the receiver's hints, which other objects can use to alter or optimize fetch operations. |
boolean |
isDeep()
Returns true if a fetch should include sub-entities of the receiver's entity, false if it shouldn't. |
boolean |
locksObjects()
Returns true if a fetch should result in the selected objects being locked in the data repository, false if it shouldn't. |
NSArray |
prefetchingRelationshipKeyPaths()
Returns an array of relationship key paths that should be prefetched along with the main fetch. |
boolean |
promptsAfterFetchLimit()
Returns whether to prompt the user after the fetch limit has been reached. |
EOQualifier |
qualifier()
Returns the EOQualifier that indicates which records or objects the receiver is to fetch. |
NSArray |
rawRowKeyPaths()
Returns an array of attribute key paths that should be fetched as raw data and returned as an array of dictionaries (instead of the normal result of full objects). |
boolean |
refreshesRefetchedObjects()
Returns true if existing objects are overwritten with fetched values when they've been updated or changed. |
boolean |
requiresAllQualifierBindingVariables()
Returns true to indicate that a missing binding will cause an exception to be raised during variable substitution. |
void |
setEntityName(String entityName)
Sets the name of the root entity to be fetched to entityName . |
void |
setFetchesRawRows(boolean fetchesRawRows)
Sets the behavior for fetching raw rows. |
void |
setFetchLimit(int fetchLimit)
Sets the fetch limit value which indicates the maximum number of objects to fetch. |
void |
setHints(NSDictionary hints)
Sets the receiver's hints to hints . |
void |
setIsDeep(boolean isDeep)
Sets whether a fetch should include sub-entities of the receiver's entity. |
void |
setLocksObjects(boolean locksObjects)
Sets whether a fetch should result in the selected objects being locked in the data repository. |
void |
setPrefetchingRelationshipKeyPaths(NSArray keyPaths)
Sets an array of relationship key paths that should be prefetched along with the main fetch. |
void |
setPromptsAfterFetchLimit(boolean value)
Sets whether or not the application's message handler is notified when the fetch limit has been reached, enabling the message handler to prompt the user whether to continue to fetch more rows. |
void |
setQualifier(EOQualifier qualifier)
Sets this fetch specification's qualifier to qualifier . |
void |
setRawRowKeyPaths(NSArray keyPaths)
Sets an array of attribute key paths that should be fetched as raw data and returned as an array of dictionaries (instead of the normal result of full objects). |
void |
setRefreshesRefetchedObjects(boolean refreshes)
Sets whether existing objects are overwritten with fetched values when they have been updated or changed. |
void |
setRequiresAllQualifierBindingVariables(boolean requires)
Sets the behavior when a missing binding is encountered during variable substitution. |
void |
setSortOrderings(NSArray sortOrderings)
Sets the receiver's array of EOSortOrderings to sortOrderings . |
void |
setUsesDistinct(boolean usesDistinct)
Sets whether duplicate objects or records are removed after fetching. |
NSArray |
sortOrderings()
Returns the receiver's array of EOSortOrderings. |
String |
toString()
Returns a String representation of the receiver. |
boolean |
usesDistinct()
Returns true if duplicate objects or records are removed after fetching, false if they aren't. |
Methods inherited from class java.lang.Object |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public EOFetchSpecification()
EOFetchSpecification.setEntityName(String)
public EOFetchSpecification(String entityName, EOQualifier qualifier, NSArray sortOrderings, boolean usesDistinct, boolean isDeep, NSDictionary hints)
qualifier
is empty, such as an EOAndQualifier or EOOrQualifier whose array of elements contains zero qualifiers, this fetch specification will have its qualifier set
to null
entityName
- the name of the entity to fetchqualifier
- the qualifier to use for fetchingsortOrderings
- the sort orderings to use for fetchingusesDistinct
- true
if the fetch specification should be distinct; false
otherwiseisDeep
- true
if the fetch specification should be deep; false
otherwisehints
- the hints to use for fetchingpublic EOFetchSpecification(String entityName, EOQualifier qualifier, NSArray sortOrderings)
qualifier
is empty, such as an EOAndQualifier or EOOrQualifier whose array
of elements contains zero qualifiers, this fetch specification will have its qualifier set to null
entityName
- the name of the entity to fetchqualifier
- the qualifier to use for fetchingsortOrderings
- the sort orderings to use for fetchingMethod Detail |
---|
public EOFetchSpecification fetchSpecificationWithQualifierBindings(NSDictionary bindings)
bindings
to the receiver's qualifier if there is one, and returns a new fetch specification that can be used in a fetch. The default behavior is to prune any nodes for which there are no bindings. You can invoke
setRequiresAllQualifierBindingVariables
with a true
argument to force an exception to be raised if a binding is missing during variable substitution.
bindings
- the bindings which are applied to the receiver's qualifier
EOFetchSpecification.setRequiresAllQualifierBindingVariables(boolean)
public static EOFetchSpecification fetchSpecificationNamed(String name, String entityName)
entityName
associates with the fetch specification name name
.
name
- the fetch specification nameentityName
- the name of an entity for which to fetch records or objects
public String entityName()
EOFetchSpecification.setEntityName(String)
,
EOFetchSpecification.isDeep()
public void setEntityName(String entityName)
entityName
.
entityName
- the name of the root entity to be fetchedEOFetchSpecification.isDeep()
,
EOFetchSpecification.entityName()
public NSArray sortOrderings()
EOFetchSpecification.setSortOrderings(NSArray)
public void setSortOrderings(NSArray sortOrderings)
sortOrderings
. When a fetch is performed with the receiver, the results are sorted by applying each EOSortOrdering in the array (serially in lowest-array-index-first order).
sortOrderings
- the array of EOSortOrderingsEOFetchSpecification.sortOrderings()
public EOQualifier qualifier()
EOFetchSpecification.setQualifier(EOQualifier)
public void setQualifier(EOQualifier qualifier)
qualifier
. If qualifier
is empty, such as an EOAndQualifier or EOOrQualifier whose array of elements contains zero qualifiers, this fetch specification will have its qualifier set to null
qualifier
- the qualifierEOFetchSpecification.qualifier()
public boolean usesDistinct()
true
if duplicate objects or records are removed after fetching, false
if they aren't. EOFetchSpecifications by default don't use distinct (that is, they return multisets).
true
if duplicate objects or records are removed; false
otherwiseEOFetchSpecification.setUsesDistinct(boolean)
public void setUsesDistinct(boolean usesDistinct)
flag
is true
they are removed (that is, proper sets are returned). If flag
is false
they aren't (multisets are returned). EOFetchSpecifications by default don't
use distinct.
usesDistinct
- true
if duplicate objects or records should be removed; false
otherwiseEOFetchSpecification.usesDistinct()
public boolean isDeep()
Returns true
if a fetch should include sub-entities of the receiver's entity, false
if it shouldn't. EOFetchSpecifications are deep by default.
For example, if you have a Person entity with two sub-entities, Employee and Customer, fetching Persons deeply also fetches all Employees and Customers matching the qualifier. Fetching Persons shallowly fetches only Persons matching the qualifier.
true
if a fetch should include sub entities of the receiver's entity; false
otherwiseEOFetchSpecification.setIsDeep(boolean)
public void setIsDeep(boolean isDeep)
Sets whether a fetch should include sub-entities of the receiver's entity. If flag
is true
, sub-entities are also fetched; if flag
is false
, they aren't. EOFetchSpecifications are deep by default.
For example, if you have a Person entity with two sub-entities and subclasses, Employee and Customer, fetching Persons deeply also fetches all Employees and Customers matching the qualifier. Fetching Persons shallowly fetches only Persons matching the qualifier.
isDeep
- true
if sub-entities should be fetched; false
otherwiseEOFetchSpecification.isDeep()
public boolean locksObjects()
true
if a fetch should result in the selected objects being locked in the data repository, false
if it shouldn't. The default is false
. Note that unnecessary locking could severely degrade the performance of certain repository operations.
true
if a fetch should result in the selected objects being locked in the data repository; false
otherwiseEOFetchSpecification.setLocksObjects(boolean)
public void setLocksObjects(boolean locksObjects)
flag
is true
it should, if flag is false
it shouldn't. The default is false
. Note that unnecessary locking could severely degrade the
performance of certain repository operations.
locksObjects
- true
if the selected objects should be locked in the data repository; false
otherwiseEOFetchSpecification.locksObjects()
public boolean refreshesRefetchedObjects()
true
if existing objects are overwritten with fetched values when they've been updated or changed. Returns false
if existing objects aren't touched when their data is refetched (the fetched data is simply discarded). The default is false
.
Note that this setting does not affect relationships.
true
if existing objects are overwritten with fetched values when they've been updated or changed; false
otherwiseEOFetchSpecification.setRefreshesRefetchedObjects(boolean)
public void setRefreshesRefetchedObjects(boolean refreshes)
Sets whether existing objects are overwritten with fetched values when they have been updated or changed. If refreshes
is true
, they are; if refreshes
is false
, they aren't (the fetched data is simply discarded). The default is
false
.
For example, suppose that an employee object is fetched and then refetched, without changing the employee between fetches. In this case you want to refresh the employee when you refetch it because another application might have updated the object since the first fetch. To keep the employee in sync with the employee data in the external repository you would need to replace the employee's outdated values with the new ones. On the other hand, if you have to fetch the employee, change it, and then refetch it, you would not want to refresh the employee. If you are to refresh it whether or not another application had changed the employee you would lose the changes that you have made to the object.
You can get finer grain control on an EODatabaseContext's refreshing behavior in the EOControl layer than you can with an EOFetchSpecification by using the delegate method databaseContextShouldUpdateCurrentSnapshot
.
refreshes
- true
if existing objects are overwritten with fetched values; false
otherwiseEOFetchSpecification.refreshesRefetchedObjects()
,
EODatabaseContext
,
EODatabaseContext.Delegate
public int fetchLimit()
promptsAfterFetchLimit
, the EODatabaseContext will either stop fetching objects when this limit is reached or it will ask the editing context's message handler to
prompt the user as to whether or not it should continue fetching. Use 0 (zero) to indicate no fetch limit. The default is 0.
EOFetchSpecification.setFetchLimit(int)
,
EOFetchSpecification.promptsAfterFetchLimit()
,
EOFetchSpecification.setPromptsAfterFetchLimit(boolean)
public void setFetchLimit(int fetchLimit)
promptsAfterFetchLimit
, the EODatabaseContext either stops fetching objects when this limit is reached or asks the editing context's message handler to prompt the user
as to whether or not it should continue fetching. Use 0 (zero) to indicate no fetch limit. The default is 0.
fetchLimit
- the fetch limit value which indicates the maximum number of objects to fetchEOFetchSpecification.fetchLimit()
,
EOFetchSpecification.promptsAfterFetchLimit()
,
EOFetchSpecification.setPromptsAfterFetchLimit(boolean)
public boolean promptsAfterFetchLimit()
false
.
true
if the user should be prompted after the fetch limit has been reached; false
if fetching should just stop at that pointEOFetchSpecification.setPromptsAfterFetchLimit(boolean)
,
EOFetchSpecification.fetchLimit()
,
EOFetchSpecification.setFetchLimit(int)
public void setPromptsAfterFetchLimit(boolean value)
value
is false
, or if the application has no message handler,
fetching stops after fetchLimit
rows have been fetched. The default is false
.
Note that only the EOInterface layer provides a built-in message handler implementation. Standard WebObjects applications must set the message handler directly and implement editingContextShouldContinueFetching
to prompt the user in an appropriate form in order to make use of
this feature.
value
- true
if the user should be prompted after the fetch limit has been reached; false
if fetching should just stop at that pointEOFetchSpecification.fetchLimit()
,
EOFetchSpecification.setFetchLimit(int)
,
EOFetchSpecification.promptsAfterFetchLimit()
,
EOEditingContext.MessageHandler.editingContextShouldContinueFetching(EOEditingContext context, int count, int originalLimit, EOObjectStore objectStore)
public boolean requiresAllQualifierBindingVariables()
true
to indicate that a missing binding will cause an exception to be raised during variable substitution. The default value is false
, which says to prune any nodes for which there are no bindings.
true
if a missing binding should cause an exception; false
otherwisepublic void setRequiresAllQualifierBindingVariables(boolean requires)
requires
is true
, then a missing binding will cause an exception to be raised during variable substitution. The default value is false
, which says to prune
any nodes for which there are no bindings.
requires
- true
if a missing binding should cause an exception; false
otherwisepublic NSArray prefetchingRelationshipKeyPaths()
EOFetchSpecification.setPrefetchingRelationshipKeyPaths(NSArray)
public void setPrefetchingRelationshipKeyPaths(NSArray keyPaths)
Sets an array of relationship key paths that should be prefetched along with the main fetch. For example, if fetching from a Movie entity, you might specify paths of the form: ("directors","roles.talent", "plotSummary").
Prefetching increases the initial fetch cost, but it can improve overall performance by reducing the number of round trips made to the database server. Assigning relationships to prefetch also has an effect on how a fetch specification refreshes.
Refreshing refers to existing objects being overwritten with fetched values. This allows the application to see changes to the database that have been made by someone else. Normally, when an EOFetchSpecification is set to refresh using setRefreshesRefetchedObjects
, it only
refreshes the objects you are fetching. For example, if you fetch employees, you do not also fetch the employees' departments. However, if you prefetch relationships, the refetch is propagated for all of the relationships specified.
keyPaths
- an array of relationship key paths to be prefetchedEOFetchSpecification.prefetchingRelationshipKeyPaths()
,
EOFetchSpecification.setRefreshesRefetchedObjects(boolean)
public NSArray rawRowKeyPaths()
null
, indicating that full objects will be returned from the fetch. An empty array may be used to indicate that the fetch should query the entity named by the fetch specification using the method attributesToFetch
. As long as the primary key attributes are
included in the raw attributes, the raw row may be used to generate a fault for the corresponding object using EOEditingContext's faultForRawRow
method.
EOFetchSpecification.setFetchesRawRows(boolean)
,
EOFetchSpecification.setRawRowKeyPaths(NSArray)
,
EOEditingContext.faultForRawRow(NSDictionary, String)
,
EOEditingContext.faultForRawRow(NSDictionary, String, EOEditingContext)
public void setRawRowKeyPaths(NSArray keyPaths)
null
, indicating that full objects will be returned from the fetch. An empty array may be used to indicate that the fetch should query the entity named by the fetch specification using the method attributesToFetch
. As long as the primary key attributes are
included in the raw attributes, the raw row may be used to generate a fault for the corresponding object using EOEditingContext's faultForRawRow
method.
keyPaths
- an array of attribute key paths to be fetched as raw dataEOFetchSpecification.rawRowKeyPaths()
,
EOFetchSpecification.setFetchesRawRows(boolean)
,
EOEditingContext.faultForRawRow(NSDictionary, String)
,
EOEditingContext.faultForRawRow(NSDictionary, String, EOEditingContext)
public boolean fetchesRawRows()
rawRowKeyPaths
method returns non-null
.
true
if rawRowKeyPaths
returns non-null
; false
otherwiseEOFetchSpecification.rawRowKeyPaths()
,
EOFetchSpecification.setFetchesRawRows(boolean)
public void setFetchesRawRows(boolean fetchesRawRows)
true
, the behavior is the same as if setRawRowKeyPaths
were called with an empty array (which causes fetchesRawRows
to return true
). If set to false
, the behavior
is as if setRawRowKeyPaths
were called with null
as the argument (which causes fetchesRawRows
to return false
). Note that if rawRowKeyPaths
has already had a value assigned to it, using this method will overwrite that
value.
fetchesRawRows
- true
if rawRowKeyPaths
returns non-null
; false
otherwiseEOFetchSpecification.rawRowKeyPaths()
,
EOFetchSpecification.fetchesRawRows()
public NSDictionary hints()
EOFetchSpecification.setHints(NSDictionary)
public void setHints(NSDictionary hints)
hints
. Any object that uses an EOFetchSpecification can define its own hints that it uses to alter or optimize fetch operations. For example, EODatabaseContext uses a hint identified by the key CustomQueryExpressionHintKey
.
EODatabaseContext is the only class in the standard Enterprise Objects Framework that defines fetch specification hints.
hints
- the receiver's hintsEOFetchSpecification.hints()
,
EODatabaseContext
public String toString()
toString
in class Object
public Class classForCoder()
classForCoder
in interface NSCoding
EOFetchSpecification.encodeWithCoder(NSCoder)
,
EOFetchSpecification.decodeObject(NSCoder)
,
NSCoding
public static Object decodeObject(NSCoder coder)
coder
.
coder
- the coder stroing object type information along with an object's data
coder
EOFetchSpecification.encodeWithCoder(NSCoder coder)
,
EOFetchSpecification.classForCoder()
,
NSCoding
public void encodeWithCoder(NSCoder coder)
coder
. The receiver can then be recreated using decodeObject
. Custom type information can be used by overriding classForCoder
.
encodeWithCoder
in interface NSCoding
coder
- the coder storing object type information along with an object's dataEOFetchSpecification.decodeObject(NSCoder)
,
EOFetchSpecification.classForCoder()
,
NSCoding
public Object clone()
java.lang.Cloneable
interface.
clone
in class Object
public void encodeWithKeyValueArchiver(EOKeyValueArchiver archiver)
archiver
. The receiver can then be recreated using decodeWithKeyValueUnarchiver
.
encodeWithKeyValueArchiver
in interface EOKeyValueArchiving
archiver
- the key-value archiver with which the receiver should be encodedEOKeyValueArchiving
public static Object decodeWithKeyValueUnarchiver(EOKeyValueUnarchiver unarchiver)
unarchiver
.
unarchiver
- the key-value unarchiver with which the receiver should be decoded
unarchiver
EOKeyValueArchiving
|
Last updated June 2008 | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |