/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.security.user;
import org.joda.time.DateTime;
import com.enonic.cms.core.security.group.GroupKey;
import com.enonic.cms.core.security.userstore.UserStoreEntity;
import com.enonic.cms.core.security.userstore.UserStoreKey;
import com.enonic.cms.api.plugin.ext.userstore.UserFields;
/**
* Jul 11, 2009
*/
public class UserImpl
implements User
{
private UserKey key;
private GroupKey userGroupKey;
private String uid;
private QualifiedUsername qualifiedName;
private String password;
private DateTime timestamp;
private boolean builtIn;
private boolean root = false;
private boolean enterpriseAdmin = false;
private UserStoreKey userStoreKey;
private UserType type = UserType.NORMAL;
private String displayName;
private String email;
private Boolean deleted;
private String selectedLanguageCode;
private UserFields userFields;
public String getPassword()
{
return password;
}
public String getEmail()
{
return email;
}
public void setUserStoreKey( UserStoreKey userStoreKey )
{
this.userStoreKey = userStoreKey;
}
public void setEmail( String email )
{
this.email = email;
}
public String getName()
{
return uid;
}
public String getDisplayName()
{
return displayName;
}
public UserStoreKey getUserStoreKey()
{
return userStoreKey;
}
public boolean isBuiltIn()
{
return builtIn;
}
public void setBuiltIn( boolean value )
{
this.builtIn = value;
}
public boolean isRoot()
{
return root;
}
public void setRoot( boolean value )
{
this.root = value;
}
public boolean isEnterpriseAdmin()
{
return enterpriseAdmin;
}
public void setPassword( String pwd )
{
password = pwd;
}
public void setDisplayName( final String value )
{
displayName = value;
}
public void setUID( String uid )
{
this.uid = uid;
}
public boolean isAnonymous()
{
return type == UserType.ANONYMOUS;
}
public DateTime getTimestamp()
{
return timestamp;
}
public void setTimestamp( DateTime value )
{
this.timestamp = value;
}
public void setEnterpriseAdmin( boolean ea )
{
enterpriseAdmin = ea;
if ( ea )
{
type = UserType.ADMINISTRATOR;
}
}
public UserKey getKey()
{
return key;
}
public void setKey( UserKey userKey )
{
this.key = userKey;
}
public void setType( UserType type )
{
this.type = type;
}
public UserType getType()
{
return type;
}
public QualifiedUsername getQualifiedName()
{
return qualifiedName;
}
public void setQualifiedName( QualifiedUsername value )
{
this.qualifiedName = value;
}
public GroupKey getUserGroupKey()
{
return userGroupKey;
}
public boolean hasUserGroup()
{
return userGroupKey != null;
}
public void setUserGroupKey( GroupKey value )
{
this.userGroupKey = value;
}
public boolean isDeleted()
{
return deleted;
}
public void setDeleted( Boolean deleted )
{
this.deleted = deleted;
}
public String getSelectedLanguageCode()
{
return selectedLanguageCode;
}
public void setSelectedLanguageCode( String value )
{
this.selectedLanguageCode = value;
}
public UserFields getUserFields()
{
return this.userFields;
}
public void setUserFields( UserFields userFields )
{
this.userFields = userFields;
}
@Override
public boolean equals( Object o )
{
if ( this == o )
{
return true;
}
if ( !( o instanceof User ) )
{
return false;
}
User user = (User) o;
if ( !key.equals( user.getKey() ) )
{
return false;
}
return true;
}
@Override
public int hashCode()
{
return key.hashCode();
}
public static UserImpl createFrom( UserEntity userEntity )
{
final UserStoreEntity userStore = userEntity.getUserStore();
final UserImpl user = new UserImpl();
user.setType( userEntity.getType() );
user.setEmail( userEntity.getEmail() );
user.setBuiltIn( userEntity.isBuiltIn() );
user.setRoot( userEntity.isRoot() );
user.setEnterpriseAdmin( userEntity.isEnterpriseAdmin() );
user.setDisplayName( userEntity.getDisplayName() );
user.setUID( userEntity.getName() );
user.setPassword( userEntity.getPassword() ); // is this one necessary?
user.setKey( userEntity.getKey() );
user.setQualifiedName( userEntity.getQualifiedName() );
user.setTimestamp( new DateTime( userEntity.getTimestamp() ) );
user.setUserFields( userEntity.getUserFields() );
if ( userEntity.getUserGroup() != null )
{
user.setUserGroupKey( userEntity.getUserGroup().getGroupKey() );
}
if ( userStore != null )
{
user.setUserStoreKey( userStore.getKey() );
}
return user;
}
}