f268bffe183f0c5006ee547fe687da94f4421a5c
[mediacube.git] /
1 package hu.user.mcvodsync.service.schedule;
2
3 import hu.user.mcvodsync.db.UploadFile;
4 import hu.user.mcvodsync.db.repository.UploadFileRepository;
5 import hu.user.mcvodsync.service.event.ImportCompletedEvent;
6 import hu.user.mcvodsync.service.event.ImportStartedEvent;
7 import hu.user.mcvodsync.service.in.ImportSummary;
8 import hu.user.mcvodsync.service.in.VodXlsProcessor;
9 import lombok.extern.log4j.Log4j2;
10 import org.springframework.beans.factory.annotation.Autowired;
11 import org.springframework.context.ApplicationEventPublisher;
12 import org.springframework.stereotype.Component;
13
14 import java.util.Optional;
15
16 @Log4j2
17 @Component
18 public class ScheduledImport implements Runnable {
19     @Autowired
20     private ApplicationEventPublisher applicationEventPublisher;
21
22     @Autowired
23     private UploadFileRepository uploadFileRepository;
24
25     @Autowired
26     private VodXlsProcessor vodXlsProcessor;
27
28     @Override
29     public void run() {
30         ImportSummary summary = null;
31         try {
32             Optional<UploadFile> opUploadFile = uploadFileRepository.findFirstByOrderByCreatedDesc();
33             if (opUploadFile.isPresent()) {
34                 log.info("ScheduledImport started from {}", opUploadFile.get().getName());
35                 applicationEventPublisher.publishEvent(new ImportStartedEvent(this, opUploadFile.get().getName()));
36                 summary = vodXlsProcessor.process(opUploadFile.get().getName(), opUploadFile.get().getFile());
37             }
38         } catch (Exception e) {
39             log.error("ScheduledImport error!", e);
40         } finally {
41             applicationEventPublisher.publishEvent(new ImportCompletedEvent(this, summary));
42             log.info("ScheduledImport finished");
43         }
44
45     }
46 }