package org.eclipse.openk.contactbasedata.service;

import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;

@Log4j2
@Service
public class SchedulingService {

    @Autowired
    LdapService ldapService;

    @Scheduled(cron = "${ldap.scheduling.cron-expression}")
    public void scheduleTaskSynchronize() {
        log.info("Executing scheduled task: Synchronizing Users");
        ldapService.synchronizeLDAP();
        log.info("Finished scheduled task: Synchronizing Users");
    }
}
