/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.web.portal;
import java.util.Date;
import java.util.List;
import org.joda.time.DateTime;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.HibernateTemplate;
import com.enonic.cms.core.language.LanguageEntity;
import com.enonic.cms.core.language.LanguageKey;
import com.enonic.cms.core.security.group.GroupEntity;
import com.enonic.cms.core.security.group.GroupType;
import com.enonic.cms.core.security.user.UserEntity;
import com.enonic.cms.core.security.user.UserKey;
import com.enonic.cms.core.security.user.UserType;
import com.enonic.cms.core.security.userstore.UserStoreEntity;
import com.enonic.cms.core.security.userstore.UserStoreKey;
public abstract class AbstractControllerTest
{
private static int lastUsedId = -1;
@Autowired
protected HibernateTemplate hibernateTemplate;
protected void initSystemData()
{
hibernateTemplate.save( createLanguage( "en" ) );
hibernateTemplate.save( createUserStore( "testuserstore" ) );
hibernateTemplate.save( createGroup( "ENTADM", GroupType.ENTERPRISE_ADMINS.getName(), GroupType.ENTERPRISE_ADMINS ) );
hibernateTemplate.save( createGroupInUserstore( "AUTHUSERS", GroupType.AUTHENTICATED_USERS.getName(), GroupType.AUTHENTICATED_USERS,
"testuserstore" ) );
hibernateTemplate.save( createUser( "ANON", "anonymous", "Anonmymous User", UserType.ANONYMOUS, "testuserstore" ) );
hibernateTemplate.save( createUserGroup( "GROUPANON", "anonymous", GroupType.ANONYMOUS ) );
}
private LanguageEntity createLanguage( String code )
{
LanguageEntity language = new LanguageEntity();
language.setKey( new LanguageKey( ++lastUsedId ) );
language.setCode( code );
language.setTimestamp( new Date() );
return language;
}
private UserStoreEntity createUserStore( String name )
{
UserStoreEntity userStore = new UserStoreEntity();
userStore.setKey( new UserStoreKey( ++lastUsedId ) );
userStore.setName( name );
return userStore;
}
private UserEntity createUser( String key, String uid, String fullName, UserType type, String userStoreName )
{
UserEntity user = new UserEntity();
user.setKey( new UserKey( key ) );
user.setName( uid );
user.setDisplayName( fullName );
user.setSyncValue( uid );
user.setTimestamp( new DateTime() );
user.setType( type );
user.setDeleted( 0 );
if ( userStoreName != null )
{
user.setUserStore( findUserStoreByName( userStoreName ) );
}
return user;
}
private GroupEntity createGroup( String key, String name, GroupType groupType )
{
GroupEntity group = new GroupEntity();
group.setKey( key );
group.setName( name );
group.setSyncValue( "sync_" + name );
group.setDeleted( 0 );
group.setType( groupType );
return group;
}
private GroupEntity createGroupInUserstore( String key, String name, GroupType groupType, String userstoreName )
{
GroupEntity group = new GroupEntity();
group.setKey( key );
group.setName( name );
group.setSyncValue( "sync_" + name );
group.setDeleted( 0 );
group.setType( groupType );
group.setUserStore( findUserStoreByName( userstoreName ) );
return group;
}
private GroupEntity createUserGroup( String key, String username, GroupType groupType )
{
GroupEntity group = new GroupEntity();
group.setKey( key );
group.setName( "userGroup_" + username );
final UserEntity user = findUserByName( username );
if ( user != null )
{
group.setUser( user );
}
group.setSyncValue( "userGroup_" + username );
group.setDeleted( 0 );
group.setType( groupType );
return group;
}
private UserStoreEntity findUserStoreByName( String userStoreName )
{
UserStoreEntity example = new UserStoreEntity();
example.setName( userStoreName );
return (UserStoreEntity) findFirstByExample( example );
}
private UserEntity findUserByName( String value )
{
UserEntity example = new UserEntity();
example.setName( value );
return (UserEntity) findFirstByExample( example );
}
private Object findFirstByExample( Object example )
{
List list = hibernateTemplate.findByExample( example );
if ( list.isEmpty() )
{
return null;
}
return list.get( 0 );
}
}