@Override
public Date resolveDuedate(String duedateDescription, int maxIterations) {
LOGGER.info("Resolving Due Date: {}", duedateDescription);
String timeZone = getValueFrom("DSTZONE", duedateDescription);
String version = getValueFrom("VER", duedateDescription);
duedateDescription = removeValueFrom("VER", removeValueFrom("START", removeValueFrom("DSTZONE", duedateDescription))).trim();
try {
LOGGER.info("Base Due Date: {}", duedateDescription);
Date date = resolvers.get(version == null ? getDefaultScheduleVersion() : Integer.valueOf(version)).resolve(duedateDescription, clockReader,
timeZone == null ? clockReader.getCurrentTimeZone() : TimeZone.getTimeZone(timeZone));
LOGGER.info("Calculated Date: {}", date == null ? "Will Not Run Again" : date);
return date;
} catch (Exception e) {
throw new FlowableIllegalArgumentException("Cannot parse duration", e);
}
}