public void Evaluate(DateTimeEx dateTime, EventBean[] eventsPerStream, bool isNewData, ExprEvaluatorContext context) { int?ovalue = CalendarOpUtil.GetInt(_valueExpr, eventsPerStream, isNewData, context); if (ovalue == null) { return; } var value = ovalue.Value; switch (_fieldName) { case CalendarFieldEnum.MILLISEC: dateTime.Set(dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second, value); break; case CalendarFieldEnum.SECOND: dateTime.Set(dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, value, dateTime.Millisecond); break; case CalendarFieldEnum.MINUTE: dateTime.Set(dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, value, dateTime.Second, dateTime.Millisecond); break; case CalendarFieldEnum.HOUR: dateTime.Set(dateTime.Year, dateTime.Month, dateTime.Day, value, dateTime.Minute, dateTime.Second, dateTime.Millisecond); break; case CalendarFieldEnum.DAY: dateTime.Set(dateTime.Year, dateTime.Month, value, dateTime.Hour, dateTime.Minute, dateTime.Second, dateTime.Millisecond); break; case CalendarFieldEnum.MONTH: dateTime.Set(dateTime.Year, value, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second, dateTime.Millisecond); break; case CalendarFieldEnum.YEAR: dateTime.Set(value, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second, dateTime.Millisecond); break; case CalendarFieldEnum.WEEK: dateTime.MoveToWeek(value); break; } }
public CalendarOp GetOp(DatetimeMethodEnum method, String methodNameUsed, IList <ExprNode> parameters, ExprEvaluator[] evaluators) { if (method == DatetimeMethodEnum.WITHTIME) { return(new CalendarOpWithTime(evaluators[0], evaluators[1], evaluators[2], evaluators[3])); } if (method == DatetimeMethodEnum.WITHDATE) { return(new CalendarOpWithDate(evaluators[0], evaluators[1], evaluators[2])); } if (method == DatetimeMethodEnum.PLUS || method == DatetimeMethodEnum.MINUS) { return(new CalendarOpPlusMinus(evaluators[0], method == DatetimeMethodEnum.MINUS ? -1 : 1)); } if (method == DatetimeMethodEnum.WITHMAX || method == DatetimeMethodEnum.WITHMIN || method == DatetimeMethodEnum.ROUNDCEILING || method == DatetimeMethodEnum.ROUNDFLOOR || method == DatetimeMethodEnum.ROUNDHALF || method == DatetimeMethodEnum.SET) { CalendarFieldEnum fieldNum = CalendarOpUtil.GetEnum(methodNameUsed, parameters[0]); if (method == DatetimeMethodEnum.WITHMIN) { return(new CalendarOpWithMin(fieldNum)); } if (method == DatetimeMethodEnum.ROUNDCEILING || method == DatetimeMethodEnum.ROUNDFLOOR || method == DatetimeMethodEnum.ROUNDHALF) { return(new CalendarOpRound(fieldNum, method)); } if (method == DatetimeMethodEnum.SET) { return(new CalendarOpSet(fieldNum, evaluators[1])); } return(new CalendarOpWithMax(fieldNum)); } throw new IllegalStateException("Unrecognized calendar-op code '" + method + "'"); }