/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.api.plugin.ext.userstore;
import java.util.Collection;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;
public class UserStoreConfig
{
private final Collection<UserStoreConfigField> userFieldConfigs = new TreeSet<UserStoreConfigField>();
public Collection<UserStoreConfigField> getUserFieldConfigs()
{
return userFieldConfigs;
}
public void addUserFieldConfig( UserStoreConfigField value )
{
userFieldConfigs.add( value );
}
public void setUserFieldConfigs( final Collection<UserStoreConfigField> value )
{
userFieldConfigs.clear();
userFieldConfigs.addAll( value );
}
public Set<UserStoreConfigField> getRemoteOnlyUserFieldConfigs()
{
return getUserFieldConfigs( true );
}
public Set<UserStoreConfigField> getLocalOnlyUserFieldConfigs()
{
return getUserFieldConfigs( false );
}
public Set<UserFieldType> getUserFieldTypes()
{
return getUserFieldTypes( null );
}
public Set<UserFieldType> getRemoteOnlyUserFieldTypes()
{
return getUserFieldTypes( true );
}
public Set<UserFieldType> getLocalOnlyUserFieldTypes()
{
return getUserFieldTypes( false );
}
public UserStoreConfigField getUserFieldConfig( UserFieldType type )
{
for ( UserStoreConfigField config : userFieldConfigs )
{
if ( config.getType().equals( type ) )
{
return config;
}
}
return null;
}
private Set<UserStoreConfigField> getUserFieldConfigs( final Boolean remoteFlagValue )
{
final Set<UserStoreConfigField> fieldConfigs = new LinkedHashSet<UserStoreConfigField>();
for ( final UserStoreConfigField userFieldConfig : userFieldConfigs )
{
if ( remoteFlagValue == null || userFieldConfig.isRemote() == remoteFlagValue )
{
fieldConfigs.add( userFieldConfig );
}
}
return fieldConfigs;
}
private Set<UserFieldType> getUserFieldTypes( final Boolean remotesOnly )
{
final Set<UserFieldType> fieldTypes = new LinkedHashSet<UserFieldType>();
for ( final UserStoreConfigField userFieldConfig : getUserFieldConfigs( remotesOnly ) )
{
fieldTypes.add( userFieldConfig.getType() );
}
return fieldTypes;
}
}