/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.security.userstore.connector.synchronize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.enonic.cms.core.security.userstore.UserStoreConnectorManager; import com.enonic.cms.core.security.userstore.UserStoreKey; import com.enonic.cms.core.security.userstore.UserStoreService; import com.enonic.cms.core.security.userstore.connector.remote.RemoteUserStoreConnector; @Component public class SynchronizeUserStoreJobFactory { @Autowired private UserStoreService userStoreService; @Autowired private UserStoreConnectorManager userStoreConnectorManager; public SynchronizeUserStoreJob createSynchronizeUserStoreJob( final UserStoreKey userStoreKey, final SynchronizeUserStoreType type, final int batchSize ) { final RemoteUserStoreConnector connector = userStoreConnectorManager.getRemoteUserStoreConnector( userStoreKey ); if ( connector == null ) { throw new IllegalStateException( "Can't perform synchronize with this userstore connector" ); } if ( ( type == SynchronizeUserStoreType.GROUPS_ONLY || type == SynchronizeUserStoreType.USERS_AND_GROUPS ) && !connector.canReadGroup() ) { throw new IllegalStateException( "Can't synchronize groups with this userstore connector" ); } final SynchronizeUserStoreJobImpl job = new SynchronizeUserStoreJobImpl( userStoreKey, type, batchSize ); job.setUserStoreService( userStoreService ); job.setUserStoreConnector( connector ); return job; } }