org.activiti.engine.impl.calendar.AdvancedSchedulerResolverWithTimeZone Maven / Gradle / Ivy
The newest version!
package org.activiti.engine.impl.calendar;
import org.activiti.engine.ActivitiException;
import org.activiti.engine.api.internal.Internal;
import org.activiti.engine.runtime.ClockReader;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
/**
* Resolves a due date taking into account the specified time zone.
*
*/
@Internal
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();
}
}