Class AttributeType

  • All Implemented Interfaces:
    Serializable, Cloneable, SchemaObject

    public class AttributeType
    extends AbstractSchemaObject
    implements Cloneable
    An attributeType specification. attributeType specifications describe the nature of attributes within the directory. The attributeType specification's properties are accessible through this interface.

    According to ldapbis [MODELS]:

      4.1.2. Attribute Types
    
        Attribute Type definitions are written according to the ABNF:
    
          AttributeTypeDescription = LPAREN WSP
              numericoid                   ; object identifier
              [ SP "NAME" SP qdescrs ]     ; short names (descriptors)
              [ SP "DESC" SP qdstring ]    ; description
              [ SP "OBSOLETE" ]            ; not active
              [ SP "SUP" SP oid ]          ; supertype
              [ SP "EQUALITY" SP oid ]     ; equality matching rule
              [ SP "ORDERING" SP oid ]     ; ordering matching rule
              [ SP "SUBSTR" SP oid ]       ; substrings matching rule
              [ SP "SYNTAX" SP noidlen ]   ; value syntax
              [ SP "SINGLE-VALUE" ]        ; single-value
              [ SP "COLLECTIVE" ]          ; collective
              [ SP "NO-USER-MODIFICATION" ]; not user modifiable
              [ SP "USAGE" SP usage ]      ; usage
              extensions WSP RPAREN        ; extensions
    
          usage = "userApplications"     / ; user
                  "directoryOperation"   / ; directory operational
                  "distributedOperation" / ; DSA-shared operational
                  "dSAOperation"           ; DSA-specific operational
    
        where:
          [numericoid] is object identifier assigned to this attribute type;
          NAME [qdescrs] are short names (descriptors) identifying this
              attribute type;
          DESC [qdstring] is a short descriptive string;
          OBSOLETE indicates this attribute type is not active;
          SUP oid specifies the direct supertype of this type;
          EQUALITY, ORDERING, SUBSTRING provide the oid of the equality,
              ordering, and substrings matching rules, respectively;
          SYNTAX identifies value syntax by object identifier and may suggest
              a minimum upper bound;
          COLLECTIVE indicates this attribute type is collective [X.501];
          NO-USER-MODIFICATION indicates this attribute type is not user
              modifiable;
          USAGE indicates the application of this attribute type; and
          [extensions] describe extensions.
    
        Each attribute type description must contain at least one of the SUP
        or SYNTAX fields.
    
        Usage of userApplications, the default, indicates that attributes of
        this type represent user information.  That is, they are user
        attributes.
    
        COLLECTIVE requires usage userApplications.  Use of collective
        attribute types in LDAP is not discussed in this technical
        specification.
    
        A usage of directoryOperation, distributedOperation, or dSAOperation
        indicates that attributes of this type represent operational and/or
        administrative information.  That is, they are operational attributes.
    
        directoryOperation usage indicates that the attribute of this type is
        a directory operational attribute.  distributedOperation usage
        indicates that the attribute of this DSA-shared usage operational
        attribute.  dSAOperation usage indicates that the attribute of this
        type is a DSA-specific operational attribute.
    
        NO-USER-MODIFICATION requires an operational usage.
    
        Note that the [AttributeTypeDescription] does not list the matching
        rules which can be used with that attribute type in an extensibleMatch
        search filter.  This is done using the 'matchingRuleUse' attribute
        described in Section 4.1.4.
    
        This document refines the schema description of X.501 by requiring
        that the SYNTAX field in an [AttributeTypeDescription] be a string
        representation of an object identifier for the LDAP string syntax
        definition with an optional indication of the suggested minimum bound
        of a value of this attribute.
    
        A suggested minimum upper bound on the number of characters in a value
        with a string-based syntax, or the number of bytes in a value for all
        other syntaxes, may be indicated by appending this bound count inside
        of curly braces following the syntax's OBJECT IDENTIFIER in an
    
        Attribute Type Description.  This bound is not part of the syntax name
        itself.  For instance, "1.3.6.4.1.1466.0{64}" suggests that server
        implementations should allow a string to be 64 characters long,
        although they may allow longer strings.  Note that a single character
        of the Directory String syntax may be encoded in more than one octet
        since UTF-8 is a variable-length encoding.
     
    Author:
    Apache Directory Project
    See Also:
    RFC 2252 Section 4.2, ldapbis [MODELS], Serialized Form
    • Field Detail

      • serialVersionUID

        public static final long serialVersionUID
        The mandatory serialVersionUID
        See Also:
        Constant Field Values
      • syntaxOid

        protected String syntaxOid
        The syntax OID associated with this AttributeType
      • syntax

        protected LdapSyntax syntax
        The syntax associated with the syntaxID
      • equalityOid

        protected String equalityOid
        The equality OID associated with this AttributeType
      • equality

        protected MatchingRule equality
        The equality MatchingRule associated with the equalityID
      • substringOid

        protected String substringOid
        The substring OID associated with this AttributeType
      • substring

        protected MatchingRule substring
        The substring MatchingRule associated with the substringID
      • orderingOid

        protected String orderingOid
        The ordering OID associated with this AttributeType
      • ordering

        protected MatchingRule ordering
        The ordering MatchingRule associated with the orderingID
      • superiorOid

        protected String superiorOid
        The superior AttributeType OID
      • superior

        protected AttributeType superior
        The superior AttributeType
      • isSingleValued

        protected boolean isSingleValued
        whether or not this type is single valued
      • isCollective

        protected boolean isCollective
        whether or not this type is a collective attribute
      • canUserModify

        protected boolean canUserModify
        whether or not this type can be modified by directory users
      • usage

        protected UsageEnum usage
        the usage for this attributeType
      • syntaxLength

        protected long syntaxLength
        the length of this attribute in bytes
    • Constructor Detail

      • AttributeType

        public AttributeType​(String oid)
        Creates a AttributeType object using a unique OID.
        Parameters:
        oid - the OID for this AttributeType
    • Method Detail

      • isSingleValued

        public boolean isSingleValued()
        Gets whether or not this AttributeType is single-valued.
        Returns:
        true if only one value can exist for this AttributeType, false otherwise
      • setSingleValued

        public void setSingleValued​(boolean singleValued)
        Tells if this AttributeType is Single Valued or not
        Parameters:
        singleValued - True if the AttributeType is single-valued
      • isUserModifiable

        public boolean isUserModifiable()
        Gets whether or not this AttributeType can be modified by a user.
        Returns:
        true if users can modify it, false if only the directory can.
      • setUserModifiable

        public void setUserModifiable​(boolean userModifiable)
        Tells if this AttributeType can be modified by a user or not
        Parameters:
        userModifiable - The flag to set
      • isCollective

        public boolean isCollective()
        Gets whether or not this AttributeType is a collective attribute.
        Returns:
        true if the attribute is collective, false otherwise
      • setCollective

        public void setCollective​(boolean collective)
        Sets the collective flag
        Parameters:
        collective - The new value to set
      • isRelaxed

        public boolean isRelaxed()
        Returns:
        Tells if the AttributeType is relaxed (the SyntaxChecker will not be activated)
      • setRelaxed

        public void setRelaxed​(boolean isRelaxed)
        Set this AttributeType mode to relaxed
        Parameters:
        isRelaxed - true if the syntax checker for this AttributeType should not be activated
      • getUsage

        public UsageEnum getUsage()
        Determines the usage for this AttributeType.
        Returns:
        a type safe UsageEnum
      • setUsage

        public void setUsage​(UsageEnum usage)
        Sets the AttributeType usage, one of :
        • USER_APPLICATIONS
        • DIRECTORY_OPERATION
        • DISTRIBUTED_OPERATION
        • DSA_OPERATION
        Parameters:
        usage - The AttributeType usage
        See Also:
        UsageEnum
      • getSyntaxLength

        public long getSyntaxLength()
        Gets a length limit for this AttributeType.
        Returns:
        the length of the attribute
      • setSyntaxLength

        public void setSyntaxLength​(long length)
        Sets the length limit of this AttributeType based on its associated syntax.
        Parameters:
        length - the new length to set
      • getSuperior

        public AttributeType getSuperior()
        Gets the the superior AttributeType of this AttributeType.
        Returns:
        the superior AttributeType for this AttributeType
      • getSuperiorOid

        public String getSuperiorOid()
        Gets the OID of the superior AttributeType for this AttributeType.
        Returns:
        The OID of the superior AttributeType for this AttributeType.
      • setSuperior

        public void setSuperior​(AttributeType superior)
        Sets the superior for this AttributeType
        Parameters:
        superior - The superior for this AttributeType
      • setSuperior

        public void setSuperior​(String newSuperiorOid)
        Sets the superior oid for this AttributeType
        Parameters:
        newSuperiorOid - The superior oid for this AttributeType
      • setSuperiorOid

        public void setSuperiorOid​(String superiorOid)
        Sets the superior AttributeType OID of this AttributeType
        Parameters:
        superiorOid - The superior AttributeType OID of this AttributeType
      • getSuperiorName

        public String getSuperiorName()
        Gets the Name of the superior AttributeType for this AttributeType.
        Returns:
        The Name of the superior AttributeType for this AttributeType.
      • getSyntax

        public LdapSyntax getSyntax()
        Gets the Syntax for this AttributeType's values.
        Returns:
        the value syntax
      • setSyntax

        public void setSyntax​(LdapSyntax syntax)
        Sets the Syntax for this AttributeType
        Parameters:
        syntax - The Syntax for this AttributeType
      • getSyntaxName

        public String getSyntaxName()
        Gets the Syntax name for this AttributeType's values.
        Returns:
        the value syntax name
      • getSyntaxOid

        public String getSyntaxOid()
        Gets the Syntax OID for this AttributeType's values.
        Returns:
        the value syntax's OID
      • setSyntaxOid

        public void setSyntaxOid​(String syntaxOid)
        Sets the Syntax OID for this AttributeType
        Parameters:
        syntaxOid - The syntax OID for this AttributeType
      • getEquality

        public MatchingRule getEquality()
        Gets the MatchingRule for this AttributeType used for equality matching.
        Returns:
        the equality matching rule
      • setEquality

        public void setEquality​(MatchingRule equality)
        Sets the Equality MR for this AttributeType
        Parameters:
        equality - The Equality MR for this AttributeType
      • getEqualityOid

        public String getEqualityOid()
        Gets the Equality OID for this AttributeType's values.
        Returns:
        the value Equality's OID
      • setEqualityOid

        public void setEqualityOid​(String equalityOid)
        Sets the Equality OID for this AttributeType
        Parameters:
        equalityOid - The Equality OID for this AttributeType
      • getEqualityName

        public String getEqualityName()
        Gets the Equality Name for this AttributeType's values.
        Returns:
        the value Equality's Name
      • getOrdering

        public MatchingRule getOrdering()
        Gets the MatchingRule for this AttributeType used for Ordering matching.
        Returns:
        the Ordering matching rule
      • setOrdering

        public void setOrdering​(MatchingRule ordering)
        Sets the Ordering MR for this AttributeType
        Parameters:
        ordering - The Ordering MR for this AttributeType
      • getOrderingName

        public String getOrderingName()
        Gets the MatchingRule name for this AttributeType used for Ordering matching.
        Returns:
        the Ordering matching rule name
      • getOrderingOid

        public String getOrderingOid()
        Gets the Ordering OID for this AttributeType's values.
        Returns:
        the value Equality's OID
      • setOrderingOid

        public void setOrderingOid​(String orderingOid)
        Sets the Ordering OID for this AttributeType
        Parameters:
        orderingOid - The Ordering OID for this AttributeType
      • getSubstring

        public MatchingRule getSubstring()
        Gets the MatchingRule for this AttributeType used for Substr matching.
        Returns:
        the Substr matching rule
      • setSubstring

        public void setSubstring​(MatchingRule substring)
        Sets the Substr MR for this AttributeType
        Parameters:
        substring - The Substr MR for this AttributeType
      • getSubstringName

        public String getSubstringName()
        Gets the MatchingRule name for this AttributeType used for Substring matching.
        Returns:
        the Substring matching rule name
      • getSubstringOid

        public String getSubstringOid()
        Gets the Substr OID for this AttributeType's values.
        Returns:
        the value Substr's OID
      • setSubstringOid

        public void setSubstringOid​(String substrOid)
        Sets the Substr OID for this AttributeType
        Parameters:
        substrOid - The Substr OID for this AttributeType
      • isUser

        public boolean isUser()
        Tells if the attributeType is a USER attribute or not
        Returns:
        true if this is a USER attributeType
      • isOperational

        public boolean isOperational()
        Tells if the attributeType is an OPERATIONAL attribute or not
        Returns:
        true if this is an OPERATIONAL attributeType
      • isAncestorOf

        public boolean isAncestorOf​(AttributeType descendant)
        Checks to see if this AttributeType is the ancestor of another attributeType.
        Parameters:
        descendant - the perspective descendant to check
        Returns:
        true if the descendant is truly a derived from this AttributeType
      • isHR

        public boolean isHR()
        Tells if an AttributeType is HumanReadable or not, depending on its Syntax.
        Returns:
        true if the AttributeType is Human Readable.
      • isDescendantOf

        public boolean isDescendantOf​(AttributeType ancestor)
        Checks to see if this AttributeType is the descendant of another attributeType.
        Parameters:
        ancestor - the perspective ancestor to check
        Returns:
        true if this AttributeType truly descends from the ancestor
      • copy

        public AttributeType copy()
        Copy the current SchemaObject on place
        Specified by:
        copy in interface SchemaObject
        Returns:
        The copied SchemaObject
      • clear

        public void clear()
        Clear the current SchemaObject : remove all the references to other objects, and all the Maps.
        Specified by:
        clear in interface SchemaObject
        Overrides:
        clear in class AbstractSchemaObject