protected void parseTimeCycle(String catchEventId, Parse parse, Element timeCycle, TimerDefinitionImpl timerDefinition) { String cycleExpression = timeCycle.getTextContent(); if (Duration.isValidExpression(cycleExpression)) { timerDefinition.setDueDateDescription(cycleExpression); } else if (CronExpression.isValidExpression(cycleExpression)) { timerDefinition.setCronExpression(cycleExpression); } else { parse.addProblem("couldn't parse timeDate duration '"+ cycleExpression + "' on intermediate catch timer event " + catchEventId); } }
protected ProcessFactory timer(String dueDateDescription, Date dueDate, String signalName, String repeat) { if (node!=null && scope==null) { scope(); } TimerDefinitionImpl timerDefinition = scope.createTimerDefinition(); if (dueDate!=null) { timerDefinition.setDueDate(dueDate); } else { timerDefinition.setDueDateDescription(dueDateDescription); } timerDefinition.setSignalName(signalName); timerDefinition.setRepeat(repeat); return this; }
protected static void createTimerDefinition(NodeImpl node, DeadlineDefinition deadline) { TimerDefinitionImpl timerDefinition = node.createTimerDefinition(); timerDefinition.setSignalName(deadline.getExceptionName()); String condition = deadline.getDeadlineCondition(); try { long duration = Long.parseLong(condition); timerDefinition.setDueDateDescription(duration + " millis"); } catch (NumberFormatException e1) { try { timerDefinition.setDueDate(DateUtil.parseDate(condition)); } catch (IllegalArgumentException e2) { throw new XpdlParserException("deadline condition '" + deadline.getDeadlineCondition() + "' is neither a Long nor a formatted date", e2); } } }