/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.server.service.admin.ajax; import java.util.HashMap; import com.enonic.cms.core.security.userstore.connector.synchronize.SynchronizeUserStoreJobFactory; import com.enonic.cms.server.service.admin.ajax.dto.SynchronizeStatusDto; public final class SyncUserStoreExecutorManager { private final SynchronizeUserStoreJobFactory factory; private final HashMap<String, SyncUserStoreExecutor> executorMap; public SyncUserStoreExecutorManager( SynchronizeUserStoreJobFactory factory ) { this.factory = factory; this.executorMap = new HashMap<String, SyncUserStoreExecutor>(); } public SynchronizeStatusDto getStatus( final String userStoreKey, final String languageCode ) { SyncUserStoreExecutor executor = getExecutor( userStoreKey, false ); return executor != null ? executor.getStatus( languageCode ) : new SynchronizeStatusDto( userStoreKey ); } public boolean start( String userStoreKey, boolean users, boolean groups, int batchSize ) { SyncUserStoreExecutor executor = getExecutor( userStoreKey, true ); return executor.start( users, groups, batchSize ); } private synchronized SyncUserStoreExecutor getExecutor( String userStoreKey, boolean createIfNeeded ) { SyncUserStoreExecutor executor = this.executorMap.get( userStoreKey ); if ( executor == null && createIfNeeded ) { executor = new SyncUserStoreExecutor( userStoreKey, this.factory ); this.executorMap.put( userStoreKey, executor ); } return executor; } }