Module org.eclipse.persistence.core
Class CoreAttributeGroup<ATTRIBUTE_ITEM extends CoreAttributeItem,DESCRIPTOR extends CoreDescriptor>
- java.lang.Object
-
- org.eclipse.persistence.core.queries.CoreAttributeGroup<ATTRIBUTE_ITEM,DESCRIPTOR>
-
- All Implemented Interfaces:
Serializable,Cloneable
- Direct Known Subclasses:
AttributeGroup
public class CoreAttributeGroup<ATTRIBUTE_ITEM extends CoreAttributeItem,DESCRIPTOR extends CoreDescriptor> extends Object implements Serializable, Cloneable
INTERNAL Purpose: A generic super class for AttributeGroup and other subclasses- Since:
- EclipseLink 2.5
- Author:
- Matt MacIvor
- See Also:
AttributeGroup, Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected Map<Object,CoreAttributeGroup>allsubclassesThis attribute is used to store all of the classes in this hierarchy keyed by type.protected booleanisValidatedMarks this AttributeGroup as having been validated by the builder and does not require further validationprotected Map<String,ATTRIBUTE_ITEM>itemsSpecified attributes in the group mapped to their AttributeItemsprotected StringnameName of the group.protected Set<CoreAttributeGroup>subClassesThis attribute references the immediate subclass groups for this attributeGroup.protected CoreAttributeGroupsuperClassGroupTo add inheritance support the two following attrbutes are used to create a model of the inheritance tree This attribute points to the parent AttributeGroup of this attribute group.protected Class<?>typeThe class represented by this AttrbuteGroup.protected StringtypeNameThe name of the class represented by this AttrbuteGroup.
-
Constructor Summary
Constructors Constructor Description CoreAttributeGroup()CoreAttributeGroup(String name)CoreAttributeGroup(String name, Class<?> type, boolean isValidated)INTERNAL: This constructer is to only be used by EclipseLink internallyCoreAttributeGroup(String name, String type, boolean isValidated)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddAttribute(String attributeNameOrPath)Add a basic attribute or nested attribute with each String representing an attribute on the path to what needs to be included in the AttributeGroup.voidaddAttribute(String attributeNameOrPath, Collection<? extends CoreAttributeGroup> groups)Add an attribute and the corresponding list of AttributeGroups.voidaddAttribute(String attributeNameOrPath, CoreAttributeGroup group)Add a basic attribute or nested attribute with each String representing an attribute on the path to what needs to be included in the AttributeGroup.voidaddAttributeKey(String attributeNameOrPath, CoreAttributeGroup group)Add a basic attribute or nested attribute with each String representing the key of an attribute of type Map on the path to what needs to be included in the AttributeGroup.voidaddAttributes(Collection<String> attrOrPaths)Add a set of attributes to the group.CoreAttributeGroupclone()CoreAttributeGroupclone(Map<CoreAttributeGroup<ATTRIBUTE_ITEM,DESCRIPTOR>,CoreAttributeGroup<ATTRIBUTE_ITEM,DESCRIPTOR>> cloneMap)INTERNAL: This method is used internally in the clone processing.booleancontainsAttribute(String attributeNameOrPath)Return if the attribute is defined in the group.booleancontainsAttributeInternal(String attributeName)INTERNAL: Return if the attribute is defined in the group.protected String[]convert(String... nameOrPath)Convert a provided name or path which could be a single attributeName, a single string with dot separated attribute names, or an array of attribute names defining the path.voidconvertClassNamesToClasses(ClassLoader classLoader)INTERNAL: Convert all the class-name-based settings in this Descriptor to actual class-based settings.booleanequals(Object obj)CoreAttributeGroupfindGroup(DESCRIPTOR type)Map<String,ATTRIBUTE_ITEM>getAllItems()INTERNAL:Set<String>getAttributeNames()CoreAttributeGroupgetGroup(String attributeNameOrPath)Returns AttributeGroup corresponding to the passed (possibly nested) attribute.ATTRIBUTE_ITEMgetItem(String attributeNameOrPath)INTERNAL: Lookup theAttributeItemfor the provided attribute name or path.protected ATTRIBUTE_ITEMgetItem(String[] attributePath, boolean create)Locate the AttributeGroup where the leaf attribute in the path should be applied to.Map<String,ATTRIBUTE_ITEM>getItems()INTERNAL:StringgetName()Map<Object,CoreAttributeGroup>getSubClassGroups()INTERNAL:Class<?>getType()StringgetTypeName()INTERNAL: Returns the name of the type this group representsinthashCode()booleanhasInheritance()Indicates whether this group is part of an inheritance hierarchybooleanhasItems()Indicates whether the group has at least one attribute.voidinsertSubClass(CoreAttributeGroup group)INTERNAL: This method will insert the group into the entity hierarchy just below this AttributeGroup.booleanisConcurrent()INTERNAL: Only LoadGroups allow concurrency.booleanisCopyGroup()INTERNAL: This method is used internally when converting to a copy group.booleanisFetchGroup()booleanisLoadGroup()booleanisSupersetOf(CoreAttributeGroup<ATTRIBUTE_ITEM,DESCRIPTOR> anotherGroup)Return true if this AttributeGroup is a super-set of the passed in AttributeGroup.booleanisValidated()INTERNAL:protected CoreAttributeGroupnewGroup(String name, CoreAttributeGroup parent)Subclass may create different types.protected CoreAttributeItemnewItem(CoreAttributeGroup group, String attrName)Subclass may create different types.voidremoveAttribute(String attributeNameOrPath)Remove an attribute from the group.voidsetAllSubclasses(Map<Object,CoreAttributeGroup> subclasses)INTERNAL:voidsetAttributeNames(Set attributeNames)voidsetName(String name)StringtoString()protected StringtoStringAdditionalInfo()Used by toString to print additional info for derived classes.protected StringtoStringItems()Used by toString to print attribute items.protected static StringtoStringPath(String[] attributePath, int position)
-
-
-
Field Detail
-
name
protected String name
Name of the group. This is used in subclasses where the groups are stored and can be used within a query by name as with FetchGroup. For dynamic groups the name has no functional value.
-
typeName
protected String typeName
The name of the class represented by this AttrbuteGroup. Used to specify overriding groups for subclasses.
-
type
protected Class<?> type
The class represented by this AttrbuteGroup. Used to specify overriding groups for subclasses.
-
superClassGroup
protected CoreAttributeGroup superClassGroup
To add inheritance support the two following attrbutes are used to create a model of the inheritance tree This attribute points to the parent AttributeGroup of this attribute group.
-
subClasses
protected transient Set<CoreAttributeGroup> subClasses
This attribute references the immediate subclass groups for this attributeGroup. This is not required but acts as a means to support adding inheritance branches into the an established tree.
-
allsubclasses
protected Map<Object,CoreAttributeGroup> allsubclasses
This attribute is used to store all of the classes in this hierarchy keyed by type. It is used to find the correct graph for polymorphic groups.
-
items
protected Map<String,ATTRIBUTE_ITEM extends CoreAttributeItem> items
Specified attributes in the group mapped to their AttributeItems
-
isValidated
protected boolean isValidated
Marks this AttributeGroup as having been validated by the builder and does not require further validation
-
-
Method Detail
-
addAttribute
public void addAttribute(String attributeNameOrPath)
Add a basic attribute or nested attribute with each String representing an attribute on the path to what needs to be included in the AttributeGroup.Example:
group.addAttribute("firstName");
group.addAttribute("manager.address");- Parameters:
attributeNameOrPath- A simple attribute, array or attributes forming a path
-
addAttribute
public void addAttribute(String attributeNameOrPath, Collection<? extends CoreAttributeGroup> groups)
Add an attribute and the corresponding list of AttributeGroups. Multiple groups are added in the case of inheritance- Parameters:
attributeNameOrPath- A simple attribute, array or attributes forming a pathgroups- - a collection of AttributeGroups to be added.
-
addAttribute
public void addAttribute(String attributeNameOrPath, CoreAttributeGroup group)
Add a basic attribute or nested attribute with each String representing an attribute on the path to what needs to be included in the AttributeGroup.Example:
group.addAttribute("firstName", group1);Note that existing group corresponding to attributeNameOrPath will be overridden with the passed group.
group.addAttribute("manager.address", group2);- Parameters:
attributeNameOrPath- A simple attribute, array or attributes forming a pathgroup- - an AttributeGroup to be added.
-
addAttributeKey
public void addAttributeKey(String attributeNameOrPath, CoreAttributeGroup group)
Add a basic attribute or nested attribute with each String representing the key of an attribute of type Map on the path to what needs to be included in the AttributeGroup.Example:
group.addAttribute("firstName", group1);Note that existing group corresponding to attributeNameOrPath will be overridden with the passed group.
group.addAttribute("manager.address", group2);- Parameters:
attributeNameOrPath- A simple attribute, array or attributes forming a path to a Map keygroup- - an AttributeGroup to be added.
-
addAttributes
public void addAttributes(Collection<String> attrOrPaths)
Add a set of attributes to the group.
-
clone
public CoreAttributeGroup clone()
-
clone
public CoreAttributeGroup clone(Map<CoreAttributeGroup<ATTRIBUTE_ITEM,DESCRIPTOR>,CoreAttributeGroup<ATTRIBUTE_ITEM,DESCRIPTOR>> cloneMap)
INTERNAL: This method is used internally in the clone processing.
-
containsAttribute
public boolean containsAttribute(String attributeNameOrPath)
Return if the attribute is defined in the group.
-
containsAttributeInternal
public boolean containsAttributeInternal(String attributeName)
INTERNAL: Return if the attribute is defined in the group. Only local attribute names are checked.
-
convert
protected String[] convert(String... nameOrPath)
Convert a provided name or path which could be a single attributeName, a single string with dot separated attribute names, or an array of attribute names defining the path.- Throws:
IllegalArgumentException- if name is not valid attribute name or path.
-
convertClassNamesToClasses
public void convertClassNamesToClasses(ClassLoader classLoader)
INTERNAL: Convert all the class-name-based settings in this Descriptor to actual class-based settings. This method is used when converting a project that has been built with class names to a project with classes.
-
findGroup
public CoreAttributeGroup findGroup(DESCRIPTOR type)
-
getAllItems
public Map<String,ATTRIBUTE_ITEM> getAllItems()
INTERNAL:
-
getGroup
public CoreAttributeGroup getGroup(String attributeNameOrPath)
Returns AttributeGroup corresponding to the passed (possibly nested) attribute.
-
getItem
public ATTRIBUTE_ITEM getItem(String attributeNameOrPath)
INTERNAL: Lookup theAttributeItemfor the provided attribute name or path.- Returns:
- item or null
- Throws:
IllegalArgumentException- if name is not valid attribute name or path
-
getItem
protected ATTRIBUTE_ITEM getItem(String[] attributePath, boolean create)
Locate the AttributeGroup where the leaf attribute in the path should be applied to.- Parameters:
create- indicates if intermediate AttributeGroup required within the specified path should be created as needed. When checking the state of the map callers should set this to false to avoid changing the state unexpectedly
-
getItems
public Map<String,ATTRIBUTE_ITEM> getItems()
INTERNAL:- Returns:
- Non-null Map of attributes in the group mapped to their AttributeItems
-
getName
public String getName()
-
getSubClassGroups
public Map<Object,CoreAttributeGroup> getSubClassGroups()
INTERNAL:
-
getType
public Class<?> getType()
-
getTypeName
public String getTypeName()
INTERNAL: Returns the name of the type this group represents
-
hasInheritance
public boolean hasInheritance()
Indicates whether this group is part of an inheritance hierarchy
-
hasItems
public boolean hasItems()
Indicates whether the group has at least one attribute.
-
insertSubClass
public void insertSubClass(CoreAttributeGroup group)
INTERNAL: This method will insert the group into the entity hierarchy just below this AttributeGroup.
-
isConcurrent
public boolean isConcurrent()
INTERNAL: Only LoadGroups allow concurrency.
-
isCopyGroup
public boolean isCopyGroup()
INTERNAL: This method is used internally when converting to a copy group.
-
isFetchGroup
public boolean isFetchGroup()
-
isLoadGroup
public boolean isLoadGroup()
-
isSupersetOf
public boolean isSupersetOf(CoreAttributeGroup<ATTRIBUTE_ITEM,DESCRIPTOR> anotherGroup)
Return true if this AttributeGroup is a super-set of the passed in AttributeGroup.
-
isValidated
public boolean isValidated()
INTERNAL:- Returns:
- the isValidated
-
newGroup
protected CoreAttributeGroup newGroup(String name, CoreAttributeGroup parent)
Subclass may create different types.
-
newItem
protected CoreAttributeItem newItem(CoreAttributeGroup group, String attrName)
Subclass may create different types.
-
removeAttribute
public void removeAttribute(String attributeNameOrPath)
Remove an attribute from the group.
-
setAllSubclasses
public void setAllSubclasses(Map<Object,CoreAttributeGroup> subclasses)
INTERNAL:
-
setAttributeNames
public void setAttributeNames(Set attributeNames)
-
setName
public void setName(String name)
-
toStringAdditionalInfo
protected String toStringAdditionalInfo()
Used by toString to print additional info for derived classes.
-
toStringItems
protected String toStringItems()
Used by toString to print attribute items.
-
-