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() );
	}
}