org.activiti.engine.impl.calendar.AdvancedSchedulerResolverWithTimeZone Maven / Gradle / Ivy
The newest version!
package org.activiti.engine.impl.calendar;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
import org.activiti.engine.ActivitiException;
import org.activiti.engine.runtime.ClockReader;
/**
* Resolves a due date taking into account the specified time zone.
*
* @author mseiden
*/
public class AdvancedSchedulerResolverWithTimeZone implements AdvancedSchedulerResolver {
@Override
public Date resolve(String duedateDescription, ClockReader clockReader, TimeZone timeZone) {
Calendar nextRun = null;
try {
if (duedateDescription.startsWith("R")) {
nextRun = new DurationHelper(duedateDescription, clockReader).getCalendarAfter(clockReader.getCurrentCalendar(timeZone));
} else {
nextRun = new CronExpression(duedateDescription, clockReader, timeZone).getTimeAfter(clockReader.getCurrentCalendar(timeZone));
}
} catch (Exception e) {
throw new ActivitiException("Failed to parse scheduler expression: " + duedateDescription, e);
}
return nextRun == null ? null : nextRun.getTime();
}
}