예제 #1
0
        } // Compare()

        public static NDate toDate(object value)
        {
            NDate result = null;

            if (value == null)
            {
                result = null;
            }
            else if (value is NDate)
            {
                result = (NDate)value;
            }
            else if (value is Calendar)
            {
                // https://www.tutorialspoint.com/java/util/calendar_gettime.htm
                result = new NDate(DateTime.Now);
            }
            else if (value is String)
            {
                result = convertFromString((String)value);
            }
            else if (value is NNumber)
            {
                result = convertFromNumber((NNumber)value);
            }

            if (result == null)
            {
                logger.warn("Could not convert '{}' to date, returning null", value);
            }

            return(result);
        }
예제 #2
0
        } // getComparable()

        public int Compare(Object o1, Object o2)
        {
            if (o1 == null && o2 == null)
            {
                return(0);
            }
            if (o1 == null)
            {
                return(-1);
            }
            if (o2 == null)
            {
                return(1);
            }
            try
            {
                NDate dt1 = toDate(o1);
                NDate dt2 = toDate(o2);
                return(NDate.CompareTo(dt1, dt2));
            }
            catch (Exception e)
            {
                logger.error("Could not compare {} and {}", o1, o2);
                throw new NSystemException(e.Message);
            }
        } // Compare()
예제 #3
0
 // @Override
 public GroupedQueryBuilder lessThanOrEquals(NDate date)
 {
     if (date == null)
     {
         throw new ArgumentException("date cannot be null");
     }
     return(applyFilter(new FilterItem(_selectItem, OperatorType.LESS_THAN_OR_EQUAL, date)));
 }
예제 #4
0
 // @Override
 public GroupedQueryBuilder greaterThan(NDate date)
 {
     if (date == null)
     {
         throw new ArgumentException("date cannot be null");
     }
     return(applyFilter(new FilterItem(_selectItem, OperatorType.GREATER_THAN, date)));
 }
예제 #5
0
 // @Override
 public GroupedQueryBuilder isEquals(NDate date)
 {
     if (date == null)
     {
         throw new ArgumentException("date cannot be null");
     }
     return(applyFilter(new FilterItem(_selectItem, OperatorType.EQUALS_TO, date)));
 }
예제 #6
0
 // @Override
 public GroupedQueryBuilder differentFrom(NDate date)
 {
     if (date == null)
     {
         throw new ArgumentException("date cannot be null");
     }
     return(applyFilter(new FilterItem(_selectItem, OperatorType.DIFFERENT_FROM, date)));
 }
예제 #7
0
        } // convertFromString()

        private static NDate convertFromNumber(NNumber value)
        {
            NNumber numberValue = (NNumber)value;
            long    long_value  = numberValue.asLong();

            NNumber n            = new NNumber(long_value);
            String  string_value = n.ToString();

            // test if the number is actually a format of the type yyyyMMdd
            if (string_value.Length == 8 && (string_value.StartsWith("1") || string_value.StartsWith("2")))
            {
                try
                {
                    string             format = "yyyyMMdd";
                    DateTimeFormatInfo dtfi   = NDateUtils.createDateFormat(format);
                    return(new NDate(string_value, format, dtfi));
                }
                catch (Exception e)
                {
                    // do nothing, proceed to next method of conversion
                }
            }

            // test if the number is actually a format of the type yyMMdd
            if (string_value.Length == 6)
            {
                try
                {
                    string             format = "yyMMdd";
                    DateTimeFormatInfo dtfi   = NDateUtils.createDateFormat(format);
                    return(new NDate(string_value, format, dtfi));
                }
            #pragma warning disable 0168
                catch (Exception e)
                {
                    // do nothing, proceed to next method of conversion
                }
            #pragma warning restore 0168
            }

            if (long_value > 5000000)
            {
                // Java: this number is most probably amount of milliseconds since 1970
                // C#:   this number is most probably amount of milliseconds since 1900
                NDate d = new NDate(DateTime.Now);
                return(new NDate(long_value));
            }
            else
            {
                // Java: this number is most probably amount of milliseconds since 1970
                // C#:   this number is most probably amount of milliseconds since 1900
                return(new NDate(long_value * 1000 * 60 * 60 * 24));
            }
        } // convertFromNumber()
예제 #8
0
        public override IObject Construct(IEnvironment environment, IArgs args)
        {
            var r = new NDate(environment);

            r.Class      = "Date";
            r.Extensible = true;
            r.Prototype  = environment.DatePrototype;

            var    argCount  = args.Count;
            double timeValue = 0.0;

            if (argCount == 0)
            {
                timeValue = (DateTime.UtcNow - _utcStart).TotalMilliseconds;
            }
            else if (argCount == 1)
            {
                var value = args[0].ConvertToPrimitive(null);
                if (value.TypeCode == LanguageTypeCode.String)
                {
                    timeValue = Parse(environment, args).ConvertToNumber().BaseValue;
                }
                else
                {
                    timeValue = value.ConvertToNumber().BaseValue;
                }
            }
            else
            {
                var year    = args[0].ConvertToNumber().ConvertToInteger().BaseValue;
                var month   = args[1].ConvertToNumber().BaseValue;
                var date    = argCount > 2 ? args[2].ConvertToNumber().BaseValue : 1.0;
                var hours   = argCount > 3 ? args[3].ConvertToNumber().BaseValue : 0.0;
                var minutes = argCount > 4 ? args[4].ConvertToNumber().BaseValue : 0.0;
                var seconds = argCount > 5 ? args[5].ConvertToNumber().BaseValue : 0.0;
                var ms      = argCount > 6 ? args[6].ConvertToNumber().BaseValue : 0.0;

                if (!double.IsNaN(year) && year >= 0.0 && year <= 99)
                {
                    year = 1900.0 + year;
                }

                var dayPortion  = PDate.MakeDay(year, month, date);
                var timePortion = PDate.MakeTime(hours, minutes, seconds, ms);
                var dateValue   = PDate.MakeDate(dayPortion, timePortion);

                timeValue = PDate.TimeClip(PDate.UTC(dateValue));
            }

            r.PrimitiveValue = environment.CreateNumber(PDate.TimeClip(timeValue));
            return(r);
        }
예제 #9
0
        public override IObject Construct(IEnvironment environment, IArgs args)
        {
            var r = new NDate(environment);
            r.Class = "Date";
            r.Extensible = true;
            r.Prototype = environment.DatePrototype;

            var argCount = args.Count;
            double timeValue = 0.0;
            if (argCount == 0)
            {
                timeValue = (DateTime.UtcNow - _utcStart).TotalMilliseconds;
            }
            else if (argCount == 1)
            {
                var value = args[0].ConvertToPrimitive(null);
                if (value.TypeCode == LanguageTypeCode.String)
                {
                    timeValue = Parse(environment, args).ConvertToNumber().BaseValue;
                }
                else
                {
                    timeValue = value.ConvertToNumber().BaseValue;
                }
            }
            else
            {
                var year = args[0].ConvertToNumber().ConvertToInteger().BaseValue;
                var month = args[1].ConvertToNumber().BaseValue;
                var date = argCount > 2 ? args[2].ConvertToNumber().BaseValue : 1.0;
                var hours = argCount > 3 ? args[3].ConvertToNumber().BaseValue : 0.0;
                var minutes = argCount > 4 ? args[4].ConvertToNumber().BaseValue : 0.0;
                var seconds = argCount > 5 ? args[5].ConvertToNumber().BaseValue : 0.0;
                var ms = argCount > 6 ? args[6].ConvertToNumber().BaseValue : 0.0;

                if (!double.IsNaN(year) && year >= 0.0 && year <= 99)
                {
                    year = 1900.0 + year;
                }

                var dayPortion = PDate.MakeDay(year, month, date);
                var timePortion = PDate.MakeTime(hours, minutes, seconds, ms);
                var dateValue = PDate.MakeDate(dayPortion, timePortion);

                timeValue = PDate.TimeClip(PDate.UTC(dateValue));
            }

            r.PrimitiveValue = environment.CreateNumber(PDate.TimeClip(timeValue));
            return r;
        }
예제 #10
0
 public abstract GroupedQueryBuilder equals(NDate date);
예제 #11
0
 // @Override
 public GroupedQueryBuilder ne(NDate date)
 {
     return(differentFrom(date));
 }
예제 #12
0
 // @Override
 public GroupedQueryBuilder eq(NDate date)
 {
     return(isEquals(date));
 }
예제 #13
0
 public GroupedQueryBuilder lt(NDate date)
 {
     return(lessThan(date));
 }
 public override GroupedQueryBuilder higherThan(NDate date)
 {
     throw new NotImplementedException();
 }
예제 #15
0
        } // _Time_Comparable_Impl_

        public static IComparable <object> getComparable(object o)
        {
            NDate dt1 = toDate(o);

            return(new _Time_Comparable_Impl_(_instance, dt1));
        } // getComparable()
예제 #16
0
 // @Override
 public GroupedQueryBuilder gte(NDate date)
 {
     return(greaterThanOrEquals(date));
 }
 // @Override
 public GroupedQueryBuilder isEquals(NDate date)
 {
     return(_filterBuilder.isEquals(date));
 }
예제 #18
0
 public abstract GroupedQueryBuilder higherThan(NDate date);
 // @Override
 public GroupedQueryBuilder greaterThanOrEquals(NDate date)
 {
     return(_filterBuilder.greaterThanOrEquals(date));
 }
 // @Override
 public GroupedQueryBuilder lessThanOrEquals(NDate date)
 {
     return(_filterBuilder.lessThanOrEquals(date));
 }
예제 #21
0
 // @Override
 public GroupedQueryBuilder lte(NDate date)
 {
     return(lessThanOrEquals(date));
 }
예제 #22
0
 public _Time_Comparable_Impl_(IComparer <object> instance_arg, NDate dt1_arg)
 {
     _dt1_      = dt1_arg;
     _instance_ = instance_arg;
 } // constructor
예제 #23
0
 // @Override
 public GroupedQueryBuilder gt(NDate date)
 {
     return(greaterThan(date));
 }
 // @Override
 public GroupedQueryBuilder differentFrom(NDate date)
 {
     return(_filterBuilder.differentFrom(date));
 }
 public override GroupedQueryBuilder equals(NDate date)
 {
     throw new NotImplementedException();
 }