/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.store.dao;
import com.enonic.cms.core.security.group.GroupEntity;
import com.enonic.cms.core.security.group.GroupKey;
import com.enonic.cms.core.security.group.GroupSpecification;
import com.enonic.cms.core.security.group.GroupType;
import com.enonic.cms.core.security.userstore.UserStoreKey;
import com.enonic.cms.store.support.EntityPageList;
import java.util.Collection;
import java.util.List;
public interface GroupDao
extends EntityDao<GroupEntity>
{
void invalidateCachedKeys();
GroupEntity find( String groupKey );
GroupEntity findByKey( GroupKey groupKey );
Collection<GroupEntity> findAll( boolean includeDeleted );
List<GroupEntity> findBySpecification( GroupSpecification specification );
GroupEntity findBuiltInEnterpriseAdministrator();
GroupEntity findBuiltInAdministrator();
GroupEntity findBuiltInDeveloper();
GroupEntity findBuiltInExpertContributor();
GroupEntity findBuiltInContributor();
GroupEntity findBuiltInAnonymous();
GroupEntity findBuiltInUserStoreAdministrator( UserStoreKey userStoreKey );
GroupEntity findBuiltInAuthenticatedUsers( UserStoreKey userStoreKey );
GroupEntity findSingleBySpecification( GroupSpecification specification );
Collection<GroupEntity> findByUserstore( UserStoreKey userStoreKey, boolean includeDeleted );
List<GroupEntity> findByUserStoreKeyAndGroupname( UserStoreKey userStoreKey, String groupName, boolean includeDeleted );
GroupEntity findSingleUndeletedByUserStoreKeyAndGroupname( UserStoreKey userStoreKey, String groupName );
GroupEntity findSingleByGroupType( GroupType groupType );
GroupEntity findSingleByGroupTypeAndUserStore( GroupType groupType, UserStoreKey userStoreKey );
GroupEntity findGlobalGroupByName( String name, boolean includeDeleted );
List<GroupEntity> findByQuery( GroupQuery spec );
GroupEntity findByUserStoreKeyAndSyncValue( UserStoreKey userStoreKey, String syncValue, boolean includeDeleted );
EntityPageList<GroupEntity> findAll( int index, int count );
}