/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.security.user;
import org.apache.commons.lang.StringUtils;
import com.enonic.cms.api.plugin.ext.userstore.UserStoreConfig;
import com.enonic.cms.api.plugin.ext.userstore.UserFields;
/**
* Created by rmy - Date: Sep 18, 2009
*/
public class UsernameResolver
extends AbstractUserPropertyResolver
{
public UsernameResolver( UserStoreConfig userStoreConfig )
{
super( userStoreConfig );
}
public String resolveUsername( final StoreNewUserCommand command )
{
userName = command.getUsername();
displayName = command.getDisplayName();
UserFields userFields = command.getUserFields();
if ( userFields != null )
{
setUserInfoFields( userFields );
}
String resolvedUsername = doResolve();
if ( StringUtils.isBlank( resolvedUsername ) )
{
throw new IllegalArgumentException( "Could not resolve user name" );
}
return stripBlankspaces( resolvedUsername );
}
private static String stripBlankspaces( String resolvedUsername )
{
return resolvedUsername.replaceAll( "\\s+", "" );
}
private String doResolve()
{
// Check existing display name - use it if valid
String displayName = this.displayName;
if ( displayName != null && displayName.trim().length() > 0 )
{
return displayName.trim();
}
// Resolve display name from prefix, firstName, middleName, lastName, suffix - use it if valid
displayName = resolveFrom( prefix, firstName, middleName, lastName, suffix );
if ( displayName.length() > 0 )
{
return displayName;
}
// Resolve display name from nickName - use it if valid
displayName = resolveFrom( nickName );
if ( displayName.length() > 0 )
{
return displayName;
}
// Resolve display name from initials - use it if valid
displayName = resolveFrom( initials );
if ( displayName.length() > 0 )
{
return displayName;
}
// Resolve display name from uid - use it if valid
displayName = userName;
if ( displayName != null && displayName.trim().length() > 0 )
{
return displayName.trim();
}
return null;
}
}