public static ExprForge[] CrontabScheduleValidate( ExprNodeOrigin origin, IList<ExprNode> scheduleSpecExpressionList, bool allowBindingConsumption, StatementRawInfo statementRawInfo, StatementCompileTimeServices services) { // Validate the expressions ExprForge[] expressions = new ExprForge[scheduleSpecExpressionList.Count]; int count = 0; ExprValidationContext validationContext = new ExprValidationContextBuilder(new StreamTypeServiceImpl(false), statementRawInfo, services) .WithAllowBindingConsumption(allowBindingConsumption) .Build(); foreach (ExprNode parameters in scheduleSpecExpressionList) { ExprNode node = ExprNodeUtilityValidate.GetValidatedSubtree(origin, parameters, validationContext); expressions[count++] = node.Forge; } if (expressions.Length <= 4 || expressions.Length >= 8) { throw new ExprValidationException( "Invalid schedule specification: " + ScheduleSpecUtil.GetExpressionCountException(expressions.Length)); } return expressions; }
public static ScheduleSpec CrontabScheduleBuild( ExprEvaluator[] scheduleSpecEvaluators, ExprEvaluatorContext context) { try { object[] scheduleSpecParameterList = EvaluateExpressions(scheduleSpecEvaluators, context); return ScheduleSpecUtil.ComputeValues(scheduleSpecParameterList); } catch (ScheduleParameterException e) { throw new EPException("Invalid schedule specification: " + e.Message, e); } }