/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.security.userstore.connector.remote; import org.springframework.util.Assert; import com.enonic.cms.core.security.group.GroupEntity; import com.enonic.cms.core.security.userstore.UserStoreEntity; import com.enonic.cms.api.plugin.ext.userstore.RemoteGroup; public class GroupSynchronizer extends AbstractBaseGroupSynchronizer { public GroupSynchronizer( final UserStoreEntity userStore, final boolean syncMemberships, final boolean syncMembers ) { super( userStore, true, syncMemberships, syncMembers ); } public void synchronize( final GroupEntity localGroup, final MemberCache memberCache ) { Assert.notNull( localGroup ); final RemoteGroup remoteGroup = remoteUserStorePlugin.getGroup( localGroup.getName() ); if ( remoteGroup == null ) { deleteGroup( localGroup ); } else if ( !remoteGroup.getSync().equals( localGroup.getSyncValue() ) ) { // No matching sync value - group no longer in userstore , we delete it deleteGroup( localGroup ); } else { resurrectGroup( localGroup ); if ( syncMembers ) { syncGroupMembers( localGroup, remoteGroup, memberCache ); } if ( syncMemberships ) { syncGroupMemberships( localGroup, remoteGroup, memberCache ); } } } private void deleteGroup( final GroupEntity localGroup ) { if ( !localGroup.isDeleted() ) { localGroup.setDeleted( 1 ); } } }