package fr.keemto.provider.exchange.importer; import fr.keemto.core.Task; import fr.keemto.provider.exchange.Email; import fr.keemto.provider.exchange.MailRepository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.List; public class MailImporterTask implements Task { private static final Logger log = LoggerFactory.getLogger(MailImporterTask.class); private final MailFinder mailFinder; private final MailRepository mailRepository; public MailImporterTask(MailFinder mailFinder, MailRepository mailRepository) { this.mailFinder = mailFinder; this.mailRepository = mailRepository; } public void importMailsNewerThan(long timestamp) { List<Email> emails = mailFinder.findEmails(timestamp); mailRepository.persist(emails); log.debug("{} emails has been imported", emails.size()); } @Override public void run() { executeNextImportIncrement(); } private void executeNextImportIncrement() { long mostRecent = mailRepository.getMostRecentMailCreationTime(); log.debug("Running incremental mail import task for mail newer than {}", mostRecent); importMailsNewerThan(mostRecent); } @Override public long getDelay() { return 300000; } @Override public String getTaskId() { return "exchange"; } }