private void readUserAttributes()
        throws EFapsException
    {
        // if the MAPPER is empty it must be initialized
        if (UserAttributesSet.MAPPER.isEmpty()) {
            UserAttributesSet.UserAttributesDefinition.values();
        }

        final Set<Type> types = CIAdminUser.AttributeAbstract.getType().getChildTypes();
        for (final Type type : types) {
            if (UserAttributesSet.MAPPER.containsKey(type.getName())) {
                final UserAttributesDefinition definition = UserAttributesSet.MAPPER.get(type.getName());
                final QueryBuilder queryBldr = new QueryBuilder(Type.get(definition.name));
                queryBldr.addWhereAttrEqValue("UserLink", this.userId);
                final MultiPrintQuery multi = queryBldr.getPrint();
                multi.addAttribute(definition.valueAttribute);
                if (definition.keyAttribute != null) {
                    multi.addAttribute(definition.keyAttribute);
                }
                multi.executeWithoutAccessCheck();
                while (multi.next()) {
                    final String key;
                    if (definition.keyAttribute == null) {
                        key = definition.name;
                    } else {
                        key = multi.getAttribute(definition.keyAttribute).toString().trim();
                    }
                    this.attributes.put(key,
                                    new UserAttribute(definition.name, multi.getAttribute(definition.valueAttribute)
                                                    .toString().trim(), false));
                }
            }
        }
    }
private void readUserAttributes ( ) throws EFapsException { if ( UserAttributesSet . MAPPER . isEmpty ( ) ) { UserAttributesSet . UserAttributesDefinition . values ( ) ; } final Set < Type > types = CIAdminUser . AttributeAbstract . getType ( ) . getChildTypes ( ) ; for ( final Type type : types ) { if ( UserAttributesSet . MAPPER . containsKey ( type . getName ( ) ) ) { final UserAttributesDefinition definition = UserAttributesSet . MAPPER . get ( type . getName ( ) ) ; final QueryBuilder queryBldr = new QueryBuilder ( Type . get ( definition . name ) ) ; queryBldr . addWhereAttrEqValue ( "UserLink" , this . userId ) ; final MultiPrintQuery multi = queryBldr . getPrint ( ) ; multi . addAttribute ( definition . valueAttribute ) ; if ( definition . keyAttribute != null ) { multi . addAttribute ( definition . keyAttribute ) ; } multi . executeWithoutAccessCheck ( ) ; while ( multi . next ( ) ) { final String key ; if ( definition . keyAttribute == null ) { key = definition . name ; } else { key = multi . getAttribute ( definition . keyAttribute ) . toString ( ) . trim ( ) ; } this . attributes . put ( key , new UserAttribute ( definition . name , multi . getAttribute ( definition . valueAttribute ) . toString ( ) . trim ( ) , false ) ) ; } } } }
Reads all {@link UserAttribute user attributes} from the eFaps database
which belong to the user this user attribute set is read to and caches
them in a map for fast access.

@see #UserAttribute
@throws EFapsException if attributes could not be read from eFaps