/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.security.userstore; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.google.common.base.Preconditions; import com.enonic.cms.core.security.userstore.connector.UserStoreConnector; import com.enonic.cms.core.security.userstore.connector.config.UserStoreConnectorConfig; import com.enonic.cms.core.security.userstore.connector.remote.RemoteUserStoreConnector; import com.enonic.cms.core.time.TimeService; import com.enonic.cms.store.dao.CategoryAccessDao; import com.enonic.cms.store.dao.ContentAccessDao; import com.enonic.cms.store.dao.DefaultSiteAccessDao; import com.enonic.cms.store.dao.GroupDao; import com.enonic.cms.store.dao.MenuItemAccessDao; import com.enonic.cms.store.dao.UserDao; import com.enonic.cms.store.dao.UserStoreDao; @Component public class GroupStorerFactory { @Autowired private GroupDao groupDao; @Autowired private UserDao userDao; @Autowired private UserStoreDao userStoreDao; @Autowired private MenuItemAccessDao menuItemAccessDao; @Autowired private CategoryAccessDao categoryAccessDao; @Autowired private ContentAccessDao contentAccessDao; @Autowired private DefaultSiteAccessDao defaultSiteAccessDao; @Autowired private UserStoreConnectorManager userStoreConnectorManager; @Autowired private TimeService timeService; public GroupStorer createForGlobalGroups() { GroupStorer groupStorer = new GroupStorer(); groupStorer.setGroupDao( groupDao ); groupStorer.setUserDao( userDao ); groupStorer.setMenuItemAccessDao( menuItemAccessDao ); groupStorer.setCategoryAccessDao( categoryAccessDao ); groupStorer.setContentAccessDao( contentAccessDao ); groupStorer.setDefaultSiteAccessDao( defaultSiteAccessDao ); groupStorer.setTimeService( timeService ); groupStorer.setResurrectDeletedGroups( false ); groupStorer.setGroupsStoredLocally( true ); return groupStorer; } public GroupStorer create( final UserStoreKey userStoreKey ) { Preconditions.checkArgument( userStoreKey != null, "userStoreKey not given: " + userStoreKey ); UserStoreEntity userStore = userStoreDao.findByKey( userStoreKey ); Preconditions.checkArgument( userStore != null, "user store not found: " + userStoreKey ); GroupStorer groupStorer = new GroupStorer(); groupStorer.setGroupDao( groupDao ); groupStorer.setUserDao( userDao ); groupStorer.setMenuItemAccessDao( menuItemAccessDao ); groupStorer.setCategoryAccessDao( categoryAccessDao ); groupStorer.setContentAccessDao( contentAccessDao ); groupStorer.setDefaultSiteAccessDao( defaultSiteAccessDao ); groupStorer.setTimeService( timeService ); groupStorer.setUserStore( userStore ); UserStoreConnector userStoreConnector = userStoreConnectorManager.getUserStoreConnector( userStoreKey ); if ( userStoreConnector instanceof RemoteUserStoreConnector ) { UserStoreConnectorConfig userStoreConnectorConfig = userStoreConnectorManager.getUserStoreConnectorConfig( userStoreKey ); groupStorer.setResurrectDeletedGroups( userStoreConnectorConfig.resurrectDeletedGroups() ); groupStorer.setGroupsStoredLocally( userStoreConnectorConfig.groupsStoredLocal() ); } else { groupStorer.setResurrectDeletedGroups( false ); groupStorer.setGroupsStoredLocally( true ); } return groupStorer; } }