com.isode.dsapi
Class Attribute

java.lang.Object
  extended by com.isode.dsapi.Attribute
All Implemented Interfaces:
Comparable<Attribute>, Iterable<AttributeValue>
Direct Known Subclasses:
AddAttribute, DeleteAttribute, ReplaceAttribute

public class Attribute
extends Object
implements Iterable<AttributeValue>, Comparable<Attribute>

Representation of an attribute. An Attribute has an AttributeType and a collection of AttributeValues (which may be empty).


Field Summary
protected  AttributeType attrType
          Attribute type.
 
Constructor Summary
protected Attribute()
          Used by the native library when creating a new empty object
  Attribute(AttributeType attrType)
          Create an empty new Attribute object.
 
Method Summary
 void addValue(AttributeValue value)
          Add a value to the list of values for this Attribute.
 void addValue(String valueString)
          Add a value to the list of values for this attribute.
 void clearValuesList()
           
 int compareTo(Attribute oo)
          Compare this Attribute with another one, returning an ordering based on syntax-specific comparisons.
 boolean equals(Object other)
          Test whether two Attributes are equal according to syntax-specific comparisons: tests whether they have the same attribute type and all the same values (although perhaps in a different order).
 int exactCompareTo(Attribute oo)
          Compare this Attribute with another one, returning an ordering based on comparisons on the exact values (without using syntax-specific comparisons).
 boolean exactEquals(Object other)
          Test whether two Attributes are exactly equal according to matching the strings, binary values or BER values exactly: tests whether they have the same attribute type and exactly the same values (although perhaps in a different order).
protected  void finalize()
          Releases any native structures associated with this object.
 String getAttributeName()
          Returns a String representing the attribute type name.
 AttributeType getAttributeType()
          Get the attribute type.
 Attribute getNormalizedAttribute()
          Return a new Attribute containing normalized versions of all the values contained in this Attribute.
 int getSyntaxID()
          Returns the integer representing the syntax ID for this Attribute.
 String getSyntaxName()
          Returns a String representing the syntax for this object.
 AttributeValue getValue(int pos)
          Get a specific AttributeValue from the set of values associated with this Attribute.
 int getValueCount()
          Get value count.
 boolean hasAttributeType(AttributeType otherAttrType)
          Determine if this object has a particular AttributeType.
 int hashCode()
          Calculate a hash-code consistent with the equals() method.
 boolean hasSyntax(int syntax)
          Check if this Attribute has a particular syntax.
 Iterator<AttributeValue> iterator()
          Returns an iterator over the values in this Attribute
 Attribute relocate(DN... source_target_list)
          If this Attribute contains DNs, and one or more of those DNs are within one of the subtrees indicated by the arguments, then those DN are relocated to the same relative location within the corresponding 'target' subtree (using DN.getRelocatedDN()), and a new Attribute is created and returned.
 Attribute relocate(DN source, DN target)
          If this Attribute contains DNs, and one or more of those DNs are within the subtree indicated by 'source', then they are relocated to the same relative location within the 'target' subtree (using DN.getRelocatedDN()), and a new Attribute is created and returned.
 String toString()
          Return a String representation of this Attribute.
 
Methods inherited from class java.lang.Object
clone, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

attrType

protected AttributeType attrType
Attribute type.

Constructor Detail

Attribute

protected Attribute()
Used by the native library when creating a new empty object


Attribute

public Attribute(AttributeType attrType)
          throws NativeLibraryException
Create an empty new Attribute object.

Parameters:
attrType - attribute type
Throws:
NativeLibraryException - if an unrecoverable error was detected by the native library
Method Detail

finalize

protected void finalize()
                 throws Throwable
Releases any native structures associated with this object.

Overrides:
finalize in class Object
Throws:
Throwable

clearValuesList

public void clearValuesList()

getAttributeType

public AttributeType getAttributeType()
Get the attribute type.

Returns:
The attribute type.

hasAttributeType

public boolean hasAttributeType(AttributeType otherAttrType)
Determine if this object has a particular AttributeType.

Parameters:
otherAttrType - an AttributeType.
Returns:
true if of given type, false otherwise.

hasSyntax

public boolean hasSyntax(int syntax)
                  throws NativeLibraryException
Check if this Attribute has a particular syntax.

Parameters:
syntax - An integer representing a syntax id, as may be obtained from DSapi.nameToSyntaxID(String)
Returns:
true if attribute has given syntax, false if otherwise (or if syntax is an invalid syntax).
Throws:
NativeLibraryException - if an unrecoverable error was detected by the native library
See Also:
getSyntaxID()

addValue

public void addValue(AttributeValue value)
              throws BadSyntaxException,
                     NativeLibraryException
Add a value to the list of values for this Attribute.

Parameters:
value - AttributeValue to add.
Throws:
BadSyntaxException - if the syntax of value is not valid for this attribute.
NativeLibraryException - if an unrecoverable error was detected by the native library
See Also:
addValue(String)

addValue

public void addValue(String valueString)
              throws BadValueException
Add a value to the list of values for this attribute. This method creates a AttributeValue object using the appropriate AttributeType and adds it to the list of values.

Parameters:
valueString - a String representation of an attribute value
Throws:
BadValueException - if valueString is not a valid string representation for a value of this object's AttributeType.
Since:
14.6
See Also:
addValue(AttributeValue)

getValue

public AttributeValue getValue(int pos)
Get a specific AttributeValue from the set of values associated with this Attribute.

Parameters:
pos - Position of value in list, which is numbered starting from zero to getValueCount()-1.
Returns:
the requested AttributeValue
Throws:
ArrayIndexOutOfBoundsException - if pos is out of range.
NativeLibraryException - if an inconsistent data structure is detected.
See Also:
getValueCount()

getValueCount

public int getValueCount()
Get value count.

Returns:
count of how many values exist for this Attribute.
See Also:
getValue(int)

getAttributeName

public String getAttributeName()
                        throws NativeLibraryException
Returns a String representing the attribute type name. For example, "objectclass" or "cn".

Returns:
the type name of the Attribute
Throws:
NativeLibraryException - if an unrecoverable error was detected by the native library
See Also:
AttributeType.getAttributeTypeName(), AttributeType.getAlias(String)

getSyntaxName

public String getSyntaxName()
                     throws NativeLibraryException
Returns a String representing the syntax for this object. For example, "caseignorestring" or "GeneralizedTime"

Returns:
the syntax of the Attribute
Throws:
NativeLibraryException - if an unrecoverable error was detected by the native library.
See Also:
AttributeType.getSyntaxName(), DSapi.nameToSyntaxID(String)

getSyntaxID

public int getSyntaxID()
                throws NativeLibraryException
Returns the integer representing the syntax ID for this Attribute.

Returns:
the syntax ID of the Attribute
Throws:
NativeLibraryException - if an unrecoverable error was detected by the native library.
See Also:
AttributeType.getSyntaxID(), DSapi.syntaxIDToName(int)

getNormalizedAttribute

public Attribute getNormalizedAttribute()
                                 throws NativeLibraryException
Return a new Attribute containing normalized versions of all the values contained in this Attribute.

Throws:
NativeLibraryException
See Also:
AttributeValue.getNormalizedValue()

hashCode

public int hashCode()
Calculate a hash-code consistent with the equals() method.

Overrides:
hashCode in class Object
Since:
14.5

equals

public boolean equals(Object other)
Test whether two Attributes are equal according to syntax-specific comparisons: tests whether they have the same attribute type and all the same values (although perhaps in a different order).

Overrides:
equals in class Object
Since:
14.5

compareTo

public int compareTo(Attribute oo)
Compare this Attribute with another one, returning an ordering based on syntax-specific comparisons. The lists of values in the two Attributes are temporarily sorted before comparing them to make the results consistent. This call corresponds to the Attribute.equals() method.

Specified by:
compareTo in interface Comparable<Attribute>
Returns:
-1: this attribute comes before the argument in the sort-order, 0: the attributes are equal, 1: this attribute comes after the argument in the sort-order
Since:
14.5

exactEquals

public boolean exactEquals(Object other)
Test whether two Attributes are exactly equal according to matching the strings, binary values or BER values exactly: tests whether they have the same attribute type and exactly the same values (although perhaps in a different order).

Since:
14.5

exactCompareTo

public int exactCompareTo(Attribute oo)
Compare this Attribute with another one, returning an ordering based on comparisons on the exact values (without using syntax-specific comparisons). The lists of values in the two Attributes are temporarily sorted before comparing them to make the results consistent. This call corresponds to the Attribute.exactEquals() method.

Returns:
-1: this attribute comes before the argument in the sort-order, 0: the attributes are equal, 1: this attribute comes after the argument in the sort-order
Since:
14.5

toString

public String toString()
Return a String representation of this Attribute.

Overrides:
toString in class Object
Returns:
a String representation of the object.

iterator

public Iterator<AttributeValue> iterator()
Returns an iterator over the values in this Attribute

Specified by:
iterator in interface Iterable<AttributeValue>
Returns:
an iterator that can be used to process all the AttributeValues in this Attribute

relocate

public Attribute relocate(DN source,
                          DN target)
If this Attribute contains DNs, and one or more of those DNs are within the subtree indicated by 'source', then they are relocated to the same relative location within the 'target' subtree (using DN.getRelocatedDN()), and a new Attribute is created and returned. Otherwise the current Attribute is returned.

At the moment this only relocates DN-syntax values, but in the future it may be expanded to relocate ORNames and other types.

Parameters:
source - DN of base of source subtree
target - DN of base of target subtree
Returns:
Resulting Attribute, or this if no change was necessary
Since:
14.6

relocate

public Attribute relocate(DN... source_target_list)
If this Attribute contains DNs, and one or more of those DNs are within one of the subtrees indicated by the arguments, then those DN are relocated to the same relative location within the corresponding 'target' subtree (using DN.getRelocatedDN()), and a new Attribute is created and returned. Otherwise the current Attribute is returned.

At the moment this only relocates DN-syntax values, but in the future it may be expanded to relocate ORNames and other types.

Parameters:
source_target_list - Array of an even number of DNs, handled in pairs. Of each pair, the first is treated as a source subtree, and the second as a target subtree. The DN is matched against source DNs in the list from the start to the end, and the first pair that it matches is the relocation that is performed. If there are no matches the DN is left unchanged.
Returns:
Resulting Attribute, or this if no change was necessary
Since:
15.0


Version: 15.2v7-0

Copyright (c) 2008-2013 Isode