public DelegatingLdapDirectoryConfiguration toDelegatingLdapConfiguration(
      final Directory directory) {
    DelegatingLdapDirectoryConfiguration configuration = new DelegatingLdapDirectoryConfiguration();
    configuration.setDirectoryId(directory.getId() != null ? directory.getId() : 0);
    configuration.setActive(directory.isActive());
    configuration.setName(directory.getName());

    LdapDelegatingDirectoryAttributes attributes =
        LdapDelegatingDirectoryAttributes.fromAttributesMap(directory.getAttributes());
    BeanUtils.copyProperties(attributes, configuration);
    configuration.setType(attributes.getDelegatedToClass());
    final String ldapAutoAddGroups = attributes.getLdapAutoAddGroups();
    if (ldapAutoAddGroups != null) {
      configuration.setLdapAutoAddGroups(
          pipeSeparatedGroupsToCommaSeparatedGroups(ldapAutoAddGroups));
    } else {
      configuration.setLdapAutoAddGroups("");
    }

    return configuration;
  }