/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.security.group;
import org.springframework.core.style.ToStringCreator;
import com.enonic.cms.core.security.userstore.UserStoreKey;
/**
* Jun 29, 2009
*/
public class GroupSpecification
{
public static GroupSpecification usingKey( GroupKey key )
{
GroupSpecification spec = new GroupSpecification();
spec.setKey( key );
return spec;
}
public enum DeletedState
{
NOT_DELETED,
DELETED
}
private UserStoreKey userStoreKey;
private GroupKey key;
private String name;
private DeletedState deletedState;
private String syncValue;
private GroupType type;
public GroupKey getKey()
{
return key;
}
public void setKey( GroupKey key )
{
this.key = key;
}
public UserStoreKey getUserStoreKey()
{
return userStoreKey;
}
public void setUserStoreKey( UserStoreKey value )
{
this.userStoreKey = value;
}
public String getName()
{
return name;
}
public void setName( String name )
{
this.name = name;
}
public DeletedState getDeletedState()
{
return deletedState;
}
public void setDeletedState( DeletedState value )
{
this.deletedState = value;
}
public String getSyncValue()
{
return syncValue;
}
public void setSyncValue( String syncValue )
{
this.syncValue = syncValue;
}
public GroupType getType()
{
return type;
}
public void setType( GroupType type )
{
this.type = type;
}
public String toString()
{
ToStringCreator builder = new ToStringCreator( this );
builder.append( "key", key );
builder.append( "userStoreKey", userStoreKey );
builder.append( "name", name );
builder.append( "deletedState", deletedState );
builder.append( "syncValue", syncValue );
builder.append( "type", type );
return builder.toString();
}
public boolean isSatisfiedBy( final GroupEntity group )
{
if ( userStoreKey != null && !userStoreKey.equals( group.getUserStoreKey() ) )
{
return false;
}
if ( key != null && !key.equals( group.getGroupKey() ) )
{
return false;
}
if ( name != null && !name.equals( group.getName() ) )
{
return false;
}
if ( deletedState != null )
{
if ( deletedState == DeletedState.DELETED && !group.isDeleted() )
{
return false;
}
if ( deletedState == DeletedState.NOT_DELETED && group.isDeleted() )
{
return false;
}
}
if ( syncValue != null && !syncValue.equals( group.getSyncValue() ) )
{
return false;
}
if ( type != null && type != group.getType() )
{
return false;
}
return true;
}
}