* @param id
*/
@Override
public void scheduleTask(String id, int initialDelay)
{
RunnableTaskDescriptor descriptor = tasks.get(id);
// Si no està activa no es fa res
if(descriptor==null || !descriptor.isActive()){
log.info("No es planifica tasca inactiva: {}", id);
return;
}
log.info("Planificant tasca: {} amb execució {}/{} min.",
new String[]{id, Integer.toString(descriptor.getInitialDelay()), Integer.toString(descriptor.getDelay())});
/* Es pograma la tasca per la seva execució cada X minuts. Si aquesta tarda
* Si l'interval de temps entre crides es massa curt i es solapa amb el començament
* de la següent, aquesta es veura endarrerida
*/
// Es configura l'scheduler (1 thread)
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
// Tasques periodiques
if(descriptor.isPeriodicTask()){
scheduler.scheduleWithFixedDelay(descriptor.getTask(), initialDelay, descriptor.getDelay(), TimeUnit.MINUTES);
}
// Tasques d'una única execució
else{
scheduler.schedule(descriptor.getTask(), initialDelay, TimeUnit.MINUTES);
}
descriptor.setScheduler(scheduler);
}