mirror of
https://github.com/ArenMg/aren.git
synced 2024-05-18 11:04:51 +00:00
57 lines
1.8 KiB
Java
57 lines
1.8 KiB
Java
/*
|
|
* To change this license header, choose License Headers in Project Properties.
|
|
* To change this template file, choose Tools | Templates
|
|
* and open the template in the editor.
|
|
*/
|
|
package fr.lirmm.aren.servlet;
|
|
|
|
import fr.lirmm.aren.service.CommentService;
|
|
import fr.lirmm.aren.service.vm.VMSendNotificationService;
|
|
|
|
import java.util.Calendar;
|
|
import java.util.concurrent.Executors;
|
|
import java.util.concurrent.ScheduledExecutorService;
|
|
import java.util.concurrent.TimeUnit;
|
|
import javax.inject.Inject;
|
|
import javax.servlet.ServletContextEvent;
|
|
import javax.servlet.ServletContextListener;
|
|
import javax.servlet.annotation.WebListener;
|
|
|
|
/**
|
|
*
|
|
* @author florent
|
|
*/
|
|
@WebListener
|
|
public class BackgroundJobManager implements ServletContextListener {
|
|
|
|
@Inject
|
|
private CommentService commentService;
|
|
|
|
private ScheduledExecutorService scheduler;
|
|
|
|
@Override
|
|
public void contextInitialized(ServletContextEvent event) {
|
|
Calendar c = Calendar.getInstance();
|
|
c.add(Calendar.DAY_OF_MONTH, 1);
|
|
c.set(Calendar.HOUR_OF_DAY, 0);
|
|
c.set(Calendar.MINUTE, 0);
|
|
c.set(Calendar.SECOND, 0);
|
|
c.set(Calendar.MILLISECOND, 0);
|
|
long untilMidnight = (c.getTimeInMillis() - System.currentTimeMillis());
|
|
long millisInDay = 24 * 60 * 60 * 1000;
|
|
|
|
this.scheduler = Executors.newSingleThreadScheduledExecutor();
|
|
this.scheduler.scheduleAtFixedRate(() -> {
|
|
this.commentService.updateAllTags();
|
|
}, untilMidnight, millisInDay, TimeUnit.MILLISECONDS);
|
|
|
|
VMSendNotificationService sendNotificationService=new VMSendNotificationService() ;
|
|
sendNotificationService.start();
|
|
}
|
|
|
|
@Override
|
|
public void contextDestroyed(ServletContextEvent event) {
|
|
this.scheduler.shutdownNow();
|
|
}
|
|
}
|