Exemple #1
0
        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;
            }
        }
Exemple #2
0
 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 + "'");
 }