Class CoreAttributeGroup<ATTRIBUTE_ITEM extends CoreAttributeItem,​DESCRIPTOR extends CoreDescriptor>

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable
    Direct Known Subclasses:
    AttributeGroup

    public class CoreAttributeGroup<ATTRIBUTE_ITEM extends CoreAttributeItem,​DESCRIPTOR extends CoreDescriptor>
    extends java.lang.Object
    implements java.io.Serializable, java.lang.Cloneable
    INTERNAL Purpose: A generic super class for AttributeGroup and other subclasses
    See Also:
    AttributeGroup, Serialized Form
    Author:
    Matt MacIvor
    Since:
    EclipseLink 2.5
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected java.util.Map<java.lang.Object,​CoreAttributeGroup> allsubclasses
      This attribute is used to store all of the classes in this hierarchy keyed by type.
      protected boolean isValidated
      Marks this AttributeGroup as having been validated by the builder and does not require further validation
      protected java.util.Map<java.lang.String,​ATTRIBUTE_ITEM> items
      Specified attributes in the group mapped to their AttributeItems
      protected java.lang.String name
      Name of the group.
      protected java.util.Set<CoreAttributeGroup> subClasses
      This attribute references the immediate subclass groups for this attributeGroup.
      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.
      protected java.lang.Class type
      The class represented by this AttrbuteGroup.
      protected java.lang.String typeName
      The name of the class represented by this AttrbuteGroup.
    • Constructor Summary

      Constructors 
      Constructor Description
      CoreAttributeGroup()  
      CoreAttributeGroup​(java.lang.String name)  
      CoreAttributeGroup​(java.lang.String name, java.lang.Class type, boolean isValidated)
      INTERNAL: This constructer is to only be used by EclipseLink internally
      CoreAttributeGroup​(java.lang.String name, java.lang.String type, boolean isValidated)  
    • Field Detail

      • name

        protected java.lang.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 java.lang.String typeName
        The name of the class represented by this AttrbuteGroup. Used to specify overriding groups for subclasses.
      • type

        protected java.lang.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 java.util.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 java.util.Map<java.lang.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 java.util.Map<java.lang.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
    • Constructor Detail

      • CoreAttributeGroup

        public CoreAttributeGroup​(java.lang.String name)
      • CoreAttributeGroup

        public CoreAttributeGroup​(java.lang.String name,
                                  java.lang.String type,
                                  boolean isValidated)
      • CoreAttributeGroup

        public CoreAttributeGroup​(java.lang.String name,
                                  java.lang.Class type,
                                  boolean isValidated)
        INTERNAL: This constructer is to only be used by EclipseLink internally
        Parameters:
        name -
        type -
      • CoreAttributeGroup

        public CoreAttributeGroup()
    • Method Detail

      • addAttribute

        public void addAttribute​(java.lang.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​(java.lang.String attributeNameOrPath,
                                 java.util.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 path
        groups - - a collection of AttributeGroups to be added.
      • addAttribute

        public void addAttribute​(java.lang.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);
        group.addAttribute("manager.address", group2);
        Note that existing group corresponding to attributeNameOrPath will be overridden with the passed group.

        Parameters:
        attributeNameOrPath - A simple attribute, array or attributes forming a path
        group - - an AttributeGroup to be added.
      • addAttributeKey

        public void addAttributeKey​(java.lang.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);
        group.addAttribute("manager.address", group2);
        Note that existing group corresponding to attributeNameOrPath will be overridden with the passed group.

        Parameters:
        attributeNameOrPath - A simple attribute, array or attributes forming a path to a Map key
        group - - an AttributeGroup to be added.
      • addAttributes

        public void addAttributes​(java.util.Collection<java.lang.String> attrOrPaths)
        Add a set of attributes to the group.
      • containsAttribute

        public boolean containsAttribute​(java.lang.String attributeNameOrPath)
        Return if the attribute is defined in the group.
      • containsAttributeInternal

        public boolean containsAttributeInternal​(java.lang.String attributeName)
        INTERNAL: Return if the attribute is defined in the group. Only local attribute names are checked.
      • convert

        protected java.lang.String[] convert​(java.lang.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:
        java.lang.IllegalArgumentException - if name is not valid attribute name or path.
      • convertClassNamesToClasses

        public void convertClassNamesToClasses​(java.lang.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.
        Parameters:
        classLoader -
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • getAllItems

        public java.util.Map<java.lang.String,​ATTRIBUTE_ITEM> getAllItems()
        INTERNAL:
      • getAttributeNames

        public java.util.Set<java.lang.String> getAttributeNames()
      • getGroup

        public CoreAttributeGroup getGroup​(java.lang.String attributeNameOrPath)
        Returns AttributeGroup corresponding to the passed (possibly nested) attribute.
      • getItem

        public ATTRIBUTE_ITEM getItem​(java.lang.String attributeNameOrPath)
        INTERNAL: Lookup the AttributeItem for the provided attribute name or path.
        Returns:
        item or null
        Throws:
        java.lang.IllegalArgumentException - if name is not valid attribute name or path
      • getItem

        protected ATTRIBUTE_ITEM getItem​(java.lang.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 java.util.Map<java.lang.String,​ATTRIBUTE_ITEM> getItems()
        INTERNAL:
        Returns:
        Non-null Map of attributes in the group mapped to their AttributeItems
      • getName

        public java.lang.String getName()
      • getSubClassGroups

        public java.util.Map<java.lang.Object,​CoreAttributeGroup> getSubClassGroups()
        INTERNAL:
      • getType

        public java.lang.Class getType()
      • getTypeName

        public java.lang.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.
        Parameters:
        group -
      • 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.
        Returns:
      • isFetchGroup

        public boolean isFetchGroup()
      • isLoadGroup

        public boolean isLoadGroup()
      • isValidated

        public boolean isValidated()
        INTERNAL:
        Returns:
        the isValidated
      • removeAttribute

        public void removeAttribute​(java.lang.String attributeNameOrPath)
        Remove an attribute from the group.
      • setAllSubclasses

        public void setAllSubclasses​(java.util.Map<java.lang.Object,​CoreAttributeGroup> subclasses)
        INTERNAL:
      • setAttributeNames

        public void setAttributeNames​(java.util.Set attributeNames)
      • setName

        public void setName​(java.lang.String name)
      • toString

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

        protected java.lang.String toStringAdditionalInfo()
        Used by toString to print additional info for derived classes.
      • toStringItems

        protected java.lang.String toStringItems()
        Used by toString to print attribute items.
      • toStringPath

        protected static java.lang.String toStringPath​(java.lang.String[] attributePath,
                                                       int position)