コード例 #1
0
ファイル: DateUtilities.cs プロジェクト: drsena2018/HowLeaky
        /// <summary>
        ///
        /// </summary>
        /// <param name="date"></param>
        /// <param name="startWindow"></param>
        /// <param name="endWindow"></param>
        /// <returns></returns>
        public static bool IsDateInWindow(DateTime date, DayMonthData startWindow, DayMonthData endWindow)
        {
            int currYear = date.Year;

            DateTime _startWindow = new DateTime(currYear, startWindow.Month, startWindow.Day);
            DateTime _endWindow   = new DateTime(currYear, endWindow.Month, endWindow.Day);


            if (_startWindow <= _endWindow)
            {
                //Easiest case
                return(date >= _startWindow && date <= _endWindow);
            }
            else
            {
                //Start and end window are in different years
                if (date > _endWindow)
                {
                    return(false);
                }
                else if (date <= _endWindow && date >= new DateTime(currYear, 1, 1))
                {
                    return(true);
                }
                else if (date < _startWindow)
                {
                    return(false);
                }
                else if (date >= _startWindow && date <= new DateTime(currYear, 12, 31))
                {
                    return(true);
                }
            }
            return(false);
        }
コード例 #2
0
        internal bool IsDateInWindow(BrowserDate date, DayMonthData startWindow, DayMonthData endWindow)
        {
            try
            {
                int currYear = date.Year;
                if (doesDateOverlapYear(startWindow, endWindow) == false)
                {
                    var _startWindow = new BrowserDate(currYear, startWindow.Month, startWindow.Day);
                    var _endWindow   = new BrowserDate(currYear, endWindow.Month, endWindow.Day);
                    return(date.IsBetween(_startWindow, _endWindow));
                }
                else
                {
                    var _startWindow = new BrowserDate(currYear, startWindow.Month, startWindow.Day);
                    if (_startWindow.DateInt > date.DateInt)
                    {
                        _startWindow = new BrowserDate(currYear - 1, startWindow.Month, startWindow.Day);
                        var _endWindow = new BrowserDate(currYear, endWindow.Month, endWindow.Day);
                        return(date.IsBetween(_startWindow, _endWindow));
                    }
                    else
                    {
                        var _endWindow = new BrowserDate(currYear + 1, endWindow.Month, endWindow.Day);
                        return(date.IsBetween(_startWindow, _endWindow));
                    }
                }

                return(false);
            }
            catch (Exception ex)
            {
                throw ErrorLogger.CreateException(ex);
            }
            // return false;
        }
コード例 #3
0
 private bool doesDateOverlapYear(DayMonthData startWindow, DayMonthData endWindow)
 {
     if (startWindow.Month < endWindow.Month)
     {
         return(false);
     }
     else if (startWindow.Month == endWindow.Month)
     {
         if (startWindow.Day <= endWindow.Day)
         {
             return(false);
         }
     }
     return(true);
 }
コード例 #4
0
        static public bool TryUpdateParm(object source, PropertyInfo property, string stringvalue)
        {
            try
            {
                var type = property.PropertyType;
                if (type == typeof(double) || type == typeof(double?) || type == typeof(Double))
                {
                    if (type == typeof(double?))
                    {
                        if (string.IsNullOrEmpty(stringvalue))
                        {
                            property.SetValue(source, (double?)null);
                            return(true);
                        }
                        else
                        {
                            double value;
                            if (double.TryParse(stringvalue, out value))
                            {
                                property.SetValue(source, value);
                                return(true);
                            }
                        }
                    }
                    else
                    {
                        double value;
                        if (double.TryParse(stringvalue, out value))
                        {
                            property.SetValue(source, value);
                            return(true);
                        }
                    }
                }
                else if (type == typeof(float) || type == typeof(float?))
                {
                    if (type == typeof(float?))
                    {
                        if (string.IsNullOrEmpty(stringvalue))
                        {
                            property.SetValue(source, (float?)null);
                            return(true);
                        }
                        else
                        {
                            float value;
                            if (float.TryParse(stringvalue, out value))
                            {
                                property.SetValue(source, value);
                                return(true);
                            }
                        }
                    }
                    else
                    {
                        float value;
                        if (float.TryParse(stringvalue, out value))
                        {
                            property.SetValue(source, value);
                            return(true);
                        }
                    }
                }
                else if (type == typeof(int) || type == typeof(int?))
                {
                    if (type == typeof(int?))
                    {
                        if (string.IsNullOrEmpty(stringvalue))
                        {
                            property.SetValue(source, (int?)null);
                            return(true);
                        }
                        else
                        {
                            int value;
                            if (int.TryParse(stringvalue, out value))
                            {
                                property.SetValue(source, value);
                                return(true);
                            }
                        }
                    }
                    else
                    {
                        int value;
                        if (int.TryParse(stringvalue, out value))
                        {
                            property.SetValue(source, value);
                            return(true);
                        }
                    }
                }
                else if (type == typeof(bool))
                {
                    if (stringvalue.ToLower() == "true")
                    {
                        property.SetValue(source, true);
                    }
                    else
                    {
                        property.SetValue(source, false);
                    }

                    return(true);
                }
                else if (type == typeof(List <double>))
                {
                    if (!string.IsNullOrEmpty(stringvalue))
                    {
                        var list = stringvalue.Split(',').ToList().Select(x => Double.Parse(x)).ToList();
                        property.SetValue(source, list);
                        return(true);
                    }
                }
                else if (type == typeof(TimeSeriesData))
                {
                    var results = new TimeSeriesData(stringvalue);

                    property.SetValue(source, results);
                    return(true);
                }
                else if (type == typeof(ProfileData))
                {
                    var results = new ProfileData(stringvalue);

                    property.SetValue(source, results);
                    return(true);
                }
                else if (type == typeof(Sequence))
                {
                    var results = new Sequence(stringvalue);

                    property.SetValue(source, results);
                    return(true);
                }
                else if (type == typeof(IrrigationFormat))
                {
                    int value;
                    if (int.TryParse(stringvalue, out value))
                    {
                        property.SetValue(source, (IrrigationFormat)value);
                        return(true);
                    }
                }
                else if (type == typeof(TargetAmountOptions))
                {
                    int value;
                    if (int.TryParse(stringvalue, out value))
                    {
                        property.SetValue(source, (TargetAmountOptions)value);
                        return(true);
                    }
                }
                else if (type == typeof(DissolvedNinLeachingType))
                {
                    int value;
                    if (int.TryParse(stringvalue, out value))
                    {
                        property.SetValue(source, (DissolvedNinLeachingType)value);
                        return(true);
                    }
                }
                else if (type == typeof(DissolvedNinRunoffType))
                {
                    int value;
                    if (int.TryParse(stringvalue, out value))
                    {
                        property.SetValue(source, (DissolvedNinRunoffType)value);
                        return(true);
                    }
                }
                else if (type == typeof(ParticulateNinRunoffType))
                {
                    int value;
                    if (int.TryParse(stringvalue, out value))
                    {
                        property.SetValue(source, (ParticulateNinRunoffType)value);
                        return(true);
                    }
                }



                else if (type == typeof(DayMonthData))
                {
                    var results = new DayMonthData(stringvalue);

                    property.SetValue(source, results);
                    return(true);
                }

                else if (type == typeof(string))
                {
                    property.SetValue(source, stringvalue);
                    return(true);
                }
                return(false);
            }
            catch (Exception ex)
            {
                throw ErrorLogger.CreateException(ex);
            }
        }
コード例 #5
0
ファイル: Simulation.cs プロジェクト: HowLeaky/HowLeaky-Core
        public bool TryUpdateParm(object source, PropertyInfo property, string stringvalue)
        {
            try{
                var type = property.PropertyType;
                if (type == typeof(double) || type == typeof(double?))
                {
                    if (type == typeof(double?))
                    {
                        if (string.IsNullOrEmpty(stringvalue))
                        {
                            property.SetValue(source, (double?)null);
                            return(true);
                        }
                        else
                        {
                            double value;
                            if (double.TryParse(stringvalue, out value))
                            {
                                property.SetValue(source, value);
                                return(true);
                            }
                        }
                    }
                    else
                    {
                        double value;
                        if (double.TryParse(stringvalue, out value))
                        {
                            property.SetValue(source, value);
                            return(true);
                        }
                    }
                }
                else if (type == typeof(float) || type == typeof(float?))
                {
                    if (type == typeof(float?))
                    {
                        if (string.IsNullOrEmpty(stringvalue))
                        {
                            property.SetValue(source, (float?)null);
                            return(true);
                        }
                        else
                        {
                            float value;
                            if (float.TryParse(stringvalue, out value))
                            {
                                property.SetValue(source, value);
                                return(true);
                            }
                        }
                    }
                    else
                    {
                        float value;
                        if (float.TryParse(stringvalue, out value))
                        {
                            property.SetValue(source, value);
                            return(true);
                        }
                    }
                }

                else if (type == typeof(int) || type == typeof(int?))
                {
                    if (type == typeof(int?))
                    {
                        if (string.IsNullOrEmpty(stringvalue))
                        {
                            property.SetValue(source, (int?)null);
                            return(true);
                        }
                        else
                        {
                            int value;
                            if (int.TryParse(stringvalue, out value))
                            {
                                property.SetValue(source, value);
                                return(true);
                            }
                        }
                    }
                    else
                    {
                        int value;
                        if (int.TryParse(stringvalue, out value))
                        {
                            property.SetValue(source, value);
                            return(true);
                        }
                    }
                }
                else if (type == typeof(List <double>))
                {
                    var list = stringvalue.Split(',').ToList().Select(x => Double.Parse(x)).ToList();
                    property.SetValue(source, list);
                    return(true);
                }
                else if (type == typeof(List <XYXData>))
                {
                    var results = new List <XYXData>();
                    var list    = stringvalue.Split(',').ToList();
                    foreach (var item in list)
                    {
                        var values = item.Split('|').ToList();
                        results.Add(new XYXData(values));
                    }

                    property.SetValue(source, results);
                    return(true);
                }
                else if (type == typeof(ProfileData))
                {
                    var results = new ProfileData(stringvalue);


                    property.SetValue(source, results);
                    return(true);
                }
                else if (type == typeof(TimeSeriesData))
                {
                    var results = new TimeSeriesData(stringvalue);

                    property.SetValue(source, results);
                    return(true);
                }
                else if (type == typeof(Sequence))
                {
                    var results = new Sequence(stringvalue);

                    property.SetValue(source, results);
                    return(true);
                }

                else if (type == typeof(bool))
                {
                    var value = stringvalue.ToLower() == "true"?true:false;
                    property.SetValue(source, value);
                    return(true);
                }
                else if (type == typeof(DayMonthData))
                {
                    var results = new DayMonthData(stringvalue);
                    property.SetValue(source, results);
                    return(true);
                }
                else if (type == typeof(EPestApplicationPosition))
                {
                    int value;
                    if (int.TryParse(stringvalue, out value))
                    {
                        property.SetValue(source, (EPestApplicationPosition)value);
                        return(true);
                    }
                }

                else if (type == typeof(ParameterType) || type == typeof(ParameterType?))
                {
                    int value;
                    if (int.TryParse(stringvalue, out value))
                    {
                        property.SetValue(source, (ParameterType)value);
                        return(true);
                    }
                }
                else if (type == typeof(IrrigationFormat) || type == typeof(IrrigationFormat?))
                {
                    int value;
                    if (int.TryParse(stringvalue, out value))
                    {
                        property.SetValue(source, (IrrigationFormat)value);
                        return(true);
                    }
                }
                else if (type == typeof(TargetAmountOptions) || type == typeof(TargetAmountOptions?))
                {
                    int value;
                    if (int.TryParse(stringvalue, out value))
                    {
                        property.SetValue(source, (TargetAmountOptions)value);
                        return(true);
                    }
                }
                else if (type == typeof(IrrigationEvaporationOptions) || type == typeof(IrrigationEvaporationOptions?))
                {
                    int value;
                    if (int.TryParse(stringvalue, out value))
                    {
                        property.SetValue(source, (IrrigationEvaporationOptions)value);
                        return(true);
                    }
                }
                else if (type == typeof(IrrigationRunoffOptions) || type == typeof(IrrigationRunoffOptions?))
                {
                    int value;
                    if (int.TryParse(stringvalue, out value))
                    {
                        property.SetValue(source, (IrrigationRunoffOptions)value);
                        return(true);
                    }
                }
                else if (type == typeof(DissolvedNinLeachingType) || type == typeof(DissolvedNinLeachingType?))
                {
                    int value;
                    if (int.TryParse(stringvalue, out value))
                    {
                        property.SetValue(source, (DissolvedNinLeachingType)value);
                        return(true);
                    }
                }
                else if (type == typeof(DissolvedNinRunoffType) || type == typeof(DissolvedNinRunoffType?))
                {
                    int value;
                    if (int.TryParse(stringvalue, out value))
                    {
                        property.SetValue(source, (DissolvedNinRunoffType)value);
                        return(true);
                    }
                }
                else if (type == typeof(ParticulateNinRunoffType) || type == typeof(ParticulateNinRunoffType?))
                {
                    int value;
                    if (int.TryParse(stringvalue, out value))
                    {
                        property.SetValue(source, (ParticulateNinRunoffType)value);
                        return(true);
                    }
                }

                else if (type == typeof(string))
                {
                    property.SetValue(source, stringvalue);
                    return(true);
                }
            }
            catch (Exception ex)
            {
                throw new Exception($"Could not update source:{source} with {stringvalue} for {property}", ex);
            }
            return(false);
        }