Esempio n. 1
0
        public DateTime Evaluate(
            DateTime dateTime,
            EventBean[] eventsPerStream,
            bool isNewData,
            ExprEvaluatorContext context)
        {
            var value = CalendarOpUtil.GetInt(_valueExpr, eventsPerStream, isNewData, context);
            if (value == null) {
                return dateTime;
            }

            return DateTimeFieldMath.SetFieldValue(dateTime, _field, value.Value);
        }
Esempio n. 2
0
        public CalendarForge GetOp(
            DateTimeMethodEnum method,
            string methodNameUsed,
            IList<ExprNode> parameters,
            ExprForge[] forges)
        {
            if (method == DateTimeMethodEnum.WITHTIME) {
                return new CalendarWithTimeForge(forges[0], forges[1], forges[2], forges[3]);
            }

            if (method == DateTimeMethodEnum.WITHDATE) {
                return new CalendarWithDateForge(forges[0], forges[1], forges[2]);
            }

            if (method == DateTimeMethodEnum.PLUS || method == DateTimeMethodEnum.MINUS) {
                return new CalendarPlusMinusForge(forges[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) {
                DateTimeFieldEnum fieldNum = CalendarOpUtil.GetEnum(methodNameUsed, parameters[0]);
                if (method == DateTimeMethodEnum.WITHMIN) {
                    return new CalendarWithMinForge(fieldNum);
                }

                if (method == DateTimeMethodEnum.ROUNDCEILING ||
                    method == DateTimeMethodEnum.ROUNDFLOOR ||
                    method == DateTimeMethodEnum.ROUNDHALF) {
                    return new CalendarForgeRound(fieldNum, method);
                }

                if (method == DateTimeMethodEnum.SET) {
                    return new CalendarSetForge(fieldNum, forges[1]);
                }

                return new CalendarWithMaxForge(fieldNum);
            }

            throw new IllegalStateException("Unrecognized calendar-op code '" + method + "'");
        }
Esempio n. 3
0
        public CalendarForge GetOp(
            DatetimeMethodDesc desc,
            string methodNameUsed,
            IList<ExprNode> parameters,
            ExprForge[] forges)
        {
            DateTimeMethodEnum method = desc.DatetimeMethod;
            switch (method) {
                case DateTimeMethodEnum.WITHTIME:
                    return new CalendarWithTimeForge(forges[0], forges[1], forges[2], forges[3]);

                case DateTimeMethodEnum.WITHDATE:
                    return new CalendarWithDateForge(forges[0], forges[1], forges[2]);

                case DateTimeMethodEnum.PLUS:
                case DateTimeMethodEnum.MINUS:
                    return new CalendarPlusMinusForge(forges[0], method == DateTimeMethodEnum.MINUS ? -1 : 1);

                case DateTimeMethodEnum.WITHMAX:
                case DateTimeMethodEnum.WITHMIN:
                case DateTimeMethodEnum.ROUNDCEILING:
                case DateTimeMethodEnum.ROUNDFLOOR:
                case DateTimeMethodEnum.ROUNDHALF:
                case DateTimeMethodEnum.SET: {
                    var fieldNum = CalendarOpUtil.GetEnum(methodNameUsed, parameters[0]);
                    return method switch {
                        DateTimeMethodEnum.WITHMIN => new CalendarWithMinForge(fieldNum),
                        DateTimeMethodEnum.ROUNDCEILING => new CalendarForgeRound(fieldNum, method),
                        DateTimeMethodEnum.ROUNDFLOOR => new CalendarForgeRound(fieldNum, method),
                        DateTimeMethodEnum.ROUNDHALF => new CalendarForgeRound(fieldNum, method),
                        DateTimeMethodEnum.SET => new CalendarSetForge(fieldNum, forges[1]),
                        _ => new CalendarWithMaxForge(fieldNum)
                    };
                }

                default:
                    throw new IllegalStateException("Unrecognized calendar-op code '" + method + "'");
            }
        }