Attribute
Recovering an attribute
The following code provides an example of recovering an attribute from a user.
public void element_getAttribute( IDirectoryModule directoryModule, IUser user ) {
// recovering an attribute of a directory element (ex. user)
IAttribute attribute = user.getAttribute( "attr-1" );
// retrieving the name
attribute.getName();
// retrieving the type
int type = attribute.getType();
switch ( type ) {
case IAttribute.IType.STRING : break;
case IAttribute.IType.INTEGER : break;
case IAttribute.IType.FLOAT : break;
case IAttribute.IType.DATE : break;
case IAttribute.IType.UNKNOWN : break;
}
// retrieving the value attribute.getValue();
}
Creating and adding an attribute
The following code shows how to create and associate an extended attribute to a user.
public void element_addAttribute( IDirectoryModule directoryModule, IUser user ) {
String attributeKey = "attr-1";
try {
// starting a transaction
directoryModule.beginTransaction( this );
// creating an attribute
IAttribute attribute = directoryModule. createAttribute( attributeKey, IAttribute.IType.STRING, "value-1" );
// association of the attribute to the directory element
user.addAttribute( attribute );
// completing the transaction
directoryModule.commitTransaction( this );
} catch( Exception e ) {
// canceling the processing in case of error
directoryModule.rollbackTransaction( this );
}
}
Search of elements by attributes
The following code uses the SearchController to perform a search for every users who have an extended attribute « attr-1 ».
public void element_useSearch( IDirectoryModule directoryModule ) throws DirectoryModuleException {
String attributeKey = "attr-1";
ISearchController searchController = directoryModule.getSearchController();
Collection<IUser> users = (Collection<IUser>)searchController. findElements( IUser.class, "attributes.contains(vAttribute) && vAttribute.key == pKey",
"vAttribute, pKey", new Object[] { "var:" + Attribute.class.getName(), attributeKey }, null );
for ( IUser aUser : users) {
System.err.println( aUser.getLogin() );
}
}