import java.time.LocalDateTime; //导入方法依赖的package包/类
/**
* Vérifie si le batch doit être lancé grace a son schedul
*
* @param batch
* @param lastExec
* @return true si le batch doit etre lance ou non
*/
private Boolean isNeededToLaunch(Batch batch, LocalDateTime lastExec) {
/* Vérification si le batch doit etre lancé immediatement */
if (batch.getTemIsLaunchImediaBatch()) {
batch.setTemIsLaunchImediaBatch(false);
batchRepository.saveAndFlush(batch);
return true;
}
LocalDateTime now = LocalDateTime.now();
/* Vérification si le batch doit etre lancé à une date précise */
if (batch.getFixeYearBatch() != null && batch.getFixeMonthBatch() != null && batch.getFixeDayBatch() != null) {
if (now.getYear() != batch.getFixeYearBatch() || now.getMonth().getValue() != batch.getFixeMonthBatch()
|| now.getDayOfMonth() != batch.getFixeDayBatch()) {
return false;
}
}
/*
* Vérification si le batch doit etre lancé annuelement avec un mois donné et un
* jour donné
*/
if (batch.getFixeMonthBatch() != null && batch.getFixeDayBatch() != null) {
if (now.getMonth().getValue() != batch.getFixeMonthBatch()
|| now.getDayOfMonth() != batch.getFixeDayBatch()) {
return false;
}
}
/* Vérification si le batch doit etre lancé mensuelement avec un jour donné */
else if (batch.getFixeDayBatch() != null) {
if (now.getDayOfMonth() != batch.getFixeDayBatch()) {
return false;
}
}
/*
* Sinon vérification si le batch doit etre lancé hebdo avec les journs précisés
*/
else {
DayOfWeek today = now.getDayOfWeek();
if (!batch.getTemLundiBatch() && today.getValue() == 1) {
return false;
} else if (!batch.getTemMardiBatch() && today.getValue() == 2) {
return false;
} else if (!batch.getTemMercrBatch() && today.getValue() == 3) {
return false;
} else if (!batch.getTemJeudiBatch() && today.getValue() == 4) {
return false;
} else if (!batch.getTemVendrediBatch() && today.getValue() == 5) {
return false;
} else if (!batch.getTemSamediBatch() && today.getValue() == 6) {
return false;
} else if (!batch.getTemDimanBatch() && today.getValue() == 7) {
return false;
}
}
logger.trace("OK à lancer aujourd'hui");
if ((batch.getFixeHourBatch().isAfter(lastExec.toLocalTime()))
&& batch.getFixeHourBatch().isBefore(now.toLocalTime())) {
logger.trace("OK à lancer maintenant");
return true;
}
return false;
}