org.datanucleus
Class FetchPlan

java.lang.Object
  extended by org.datanucleus.FetchPlan
All Implemented Interfaces:
java.io.Serializable

public class FetchPlan
extends java.lang.Object
implements java.io.Serializable

FetchPlan for fields for use internally. A FetchPlan has a series of FetchPlanForClass objects being the fetch plan for particular classes. Each FetchPlanForClass defines a series of fields of that class that are part of the fetch plan. There are two types of fetch groups under consideration here.

See Also:
Serialized Form

Field Summary
static java.lang.String ALL
          Constant defining all fields
static java.lang.String DEFAULT
          Constant defining the fields in the default fetch group.
static int DETACH_LOAD_FIELDS
          Members that are not loaded but are in the current fetch plan should be loaded before detachment.
static int DETACH_UNLOAD_FIELDS
          Members that are loaded but not in current fetch plan should be unloaded before detachment.
static int FETCH_SIZE_GREEDY
          Fetch size to load all possible.
static int FETCH_SIZE_OPTIMAL
          Fetch size for the implementation to decide how many to load.
protected static Localiser LOCALISER
          Localisation utility for output messages
static java.lang.String NONE
          Constant defing no fields.
 
Constructor Summary
FetchPlan(ExecutionContext ec, ClassLoaderResolver clr)
          Constructor.
 
Method Summary
 FetchPlan addGroup(java.lang.String grpName)
          Method to add a group to the fetch plan.
 FetchPlan clearGroups()
          Method to clear the current groups and activate the DFG.
 FetchPlan getCopy()
          Returns a copy of this FetchPlan with all settings initialized
 int getDetachmentOptions()
          Return the options to be used at detachment.
 java.lang.Class[] getDetachmentRootClasses()
          Accessor for the root classes of the detachment graph for DetachAllOnCommit.
 java.util.Collection getDetachmentRoots()
          Accessor for the roots of the detachment graph for DetachAllOnCommit.
 FetchPlanForClass getFetchPlanForClass(AbstractClassMetaData cmd)
          Access the fetch plan for the class.
 int getFetchSize()
          Accessor for the fetch size when using large result sets.
 java.util.Set<java.lang.String> getGroups()
          Accessor for the static groups for this FetchPlan.
 int getMaxFetchDepth()
          Accessor for the maximum fetch depth.
 FetchPlanForClass manageFetchPlanForClass(AbstractClassMetaData cmd)
          Manage the fetch plan for the class
 void notifyFetchGroupChange(FetchGroup group)
          Method to notify this FetchPlan that the specified FetchGroup has been updated.
 void notifyFetchGroupRemove(FetchGroup group)
          Method to notify this FetchPlan that the specified FetchGroup has been updated.
 FetchPlan removeGroup(java.lang.String grpName)
          Method to remove a group from the fetch plan.
 FetchPlan setDetachmentOptions(int options)
          Set the options to be used at detachment.
 FetchPlan setDetachmentRootClasses(java.lang.Class[] rootClasses)
          Set the classes used for roots of the detachment graph for DetachAllOnCommit.
 FetchPlan setDetachmentRoots(java.util.Collection roots)
          Set the roots for DetachAllOnCommit
 FetchPlan setFetchSize(int fetchSize)
          Method to set the fetch size when using large result sets.
 FetchPlan setGroup(java.lang.String grpName)
          Method to set the fetch group.
 FetchPlan setGroups(java.util.Collection<java.lang.String> grpNames)
          Method to set the groups of the fetch plan.
 FetchPlan setGroups(java.lang.String[] grpNames)
          Method to set the groups using an array.
 FetchPlan setMaxFetchDepth(int max)
          Mutator for the maximum fetch depth where -1 implies no restriction on the fetch depth and 0 is invalid and throws a JDOUserException.
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

LOCALISER

protected static final Localiser LOCALISER
Localisation utility for output messages


DEFAULT

public static final java.lang.String DEFAULT
Constant defining the fields in the default fetch group.

See Also:
Constant Field Values

ALL

public static final java.lang.String ALL
Constant defining all fields

See Also:
Constant Field Values

NONE

public static final java.lang.String NONE
Constant defing no fields.

See Also:
Constant Field Values

DETACH_UNLOAD_FIELDS

public static final int DETACH_UNLOAD_FIELDS
Members that are loaded but not in current fetch plan should be unloaded before detachment.

See Also:
Constant Field Values

DETACH_LOAD_FIELDS

public static final int DETACH_LOAD_FIELDS
Members that are not loaded but are in the current fetch plan should be loaded before detachment.

See Also:
Constant Field Values

FETCH_SIZE_GREEDY

public static final int FETCH_SIZE_GREEDY
Fetch size to load all possible.

See Also:
Constant Field Values

FETCH_SIZE_OPTIMAL

public static final int FETCH_SIZE_OPTIMAL
Fetch size for the implementation to decide how many to load.

See Also:
Constant Field Values
Constructor Detail

FetchPlan

public FetchPlan(ExecutionContext ec,
                 ClassLoaderResolver clr)
Constructor. Initially has the default fetch group.

Parameters:
ec - execution context
clr - ClassLoader Resolver
Method Detail

manageFetchPlanForClass

public FetchPlanForClass manageFetchPlanForClass(AbstractClassMetaData cmd)
Manage the fetch plan for the class

Parameters:
cmd - MetaData for the class to manage
Returns:
the FetchPlanForClass

getFetchPlanForClass

public FetchPlanForClass getFetchPlanForClass(AbstractClassMetaData cmd)
Access the fetch plan for the class.

Parameters:
cmd - metadata for the class
Returns:
the FetchPlanForClass

addGroup

public FetchPlan addGroup(java.lang.String grpName)
Method to add a group to the fetch plan.

Parameters:
grpName - The fetch group to add
Returns:
Updated Fetch Plan

removeGroup

public FetchPlan removeGroup(java.lang.String grpName)
Method to remove a group from the fetch plan.

Parameters:
grpName - The fetch group to remove
Returns:
Updated Fetch Plan

clearGroups

public FetchPlan clearGroups()
Method to clear the current groups and activate the DFG.

Returns:
The FetchPlan

getGroups

public java.util.Set<java.lang.String> getGroups()
Accessor for the static groups for this FetchPlan. Doesn't return the dynamic groups.

Returns:
The fetch plan groups (unmodifiable)

setGroups

public FetchPlan setGroups(java.util.Collection<java.lang.String> grpNames)
Method to set the groups of the fetch plan.

Parameters:
grpNames - Names of the groups
Returns:
Updated Fetch Plan

setGroups

public FetchPlan setGroups(java.lang.String[] grpNames)
Method to set the groups using an array.

Parameters:
grpNames - Names of the groups
Returns:
The Fetch Plan

setGroup

public FetchPlan setGroup(java.lang.String grpName)
Method to set the fetch group.

Parameters:
grpName - Name of the group
Returns:
The Fetch Plan

notifyFetchGroupChange

public void notifyFetchGroupChange(FetchGroup group)
Method to notify this FetchPlan that the specified FetchGroup has been updated. dynamic fetch groups extension

Parameters:
group - The dynamic FetchGroup

notifyFetchGroupRemove

public void notifyFetchGroupRemove(FetchGroup group)
Method to notify this FetchPlan that the specified FetchGroup has been updated. dynamic fetch groups extension

Parameters:
group - The dynamic FetchGroup

setDetachmentRoots

public FetchPlan setDetachmentRoots(java.util.Collection roots)
Set the roots for DetachAllOnCommit

Parameters:
roots - The roots of the detachment graph.
Returns:
The fetch plan with these roots

getDetachmentRoots

public java.util.Collection getDetachmentRoots()
Accessor for the roots of the detachment graph for DetachAllOnCommit.

Returns:
The roots of the detachment graph.

setDetachmentRootClasses

public FetchPlan setDetachmentRootClasses(java.lang.Class[] rootClasses)
Set the classes used for roots of the detachment graph for DetachAllOnCommit.

Parameters:
rootClasses - Classes to be used as roots of the detachment graph
Returns:
The fetch plan with these roots

getDetachmentRootClasses

public java.lang.Class[] getDetachmentRootClasses()
Accessor for the root classes of the detachment graph for DetachAllOnCommit.

Returns:
The classes to be used as the root of the detachment graph.

setMaxFetchDepth

public FetchPlan setMaxFetchDepth(int max)
Mutator for the maximum fetch depth where -1 implies no restriction on the fetch depth and 0 is invalid and throws a JDOUserException.

Parameters:
max - The maximum fetch depth to fetch to

getMaxFetchDepth

public int getMaxFetchDepth()
Accessor for the maximum fetch depth.

Returns:
The maximum fetch depth

setFetchSize

public FetchPlan setFetchSize(int fetchSize)
Method to set the fetch size when using large result sets.

Parameters:
fetchSize - the size
Returns:
Updated Fetch Plan

getFetchSize

public int getFetchSize()
Accessor for the fetch size when using large result sets.

Returns:
The size

getDetachmentOptions

public int getDetachmentOptions()
Return the options to be used at detachment.

Returns:
Detachment options

setDetachmentOptions

public FetchPlan setDetachmentOptions(int options)
Set the options to be used at detachment.

Parameters:
options - The options
Returns:
The updated fetch plan.

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

getCopy

public FetchPlan getCopy()
Returns a copy of this FetchPlan with all settings initialized

Returns:
the FetchPlan


Copyright © 2011. All Rights Reserved.