use of com.cronutils.model.time.ExecutionTime in project hive by apache.
the class ObjectStore method computeNextExecutionTime.
private Integer computeNextExecutionTime(String schedule, ZonedDateTime time) throws InvalidInputException {
CronType cronType = CronType.QUARTZ;
CronDefinition cronDefinition = CronDefinitionBuilder.instanceDefinitionFor(cronType);
CronParser parser = new CronParser(cronDefinition);
// Get date for last execution
try {
ExecutionTime executionTime = ExecutionTime.forCron(parser.parse(schedule));
Optional<ZonedDateTime> nextExecution = executionTime.nextExecution(time);
if (!nextExecution.isPresent()) {
// no valid next execution time.
return null;
}
return (int) nextExecution.get().toEpochSecond();
} catch (IllegalArgumentException iae) {
String message = "Invalid " + cronType + " schedule expression: '" + schedule + "'";
LOG.error(message, iae);
throw new InvalidInputException(message);
}
}
use of com.cronutils.model.time.ExecutionTime in project OpenGrok by OpenGrok.
the class SuggesterServiceImpl method getTimeToNextRebuild.
private Duration getTimeToNextRebuild() {
String cronDefinition = env.getSuggesterConfig().getRebuildCronConfig();
if (cronDefinition == null) {
return null;
}
ZonedDateTime now = ZonedDateTime.now();
CronDefinition def = CronDefinitionBuilder.instanceDefinitionFor(CronType.UNIX);
CronParser parser = new CronParser(def);
ExecutionTime executionTime = ExecutionTime.forCron(parser.parse(cronDefinition));
Optional<Duration> d = executionTime.timeToNextExecution(now);
if (d.isEmpty()) {
throw new IllegalStateException("Cannot determine time to next execution");
}
return d.get();
}
Aggregations