Esempio n. 1
0
        public static void DoObjectLevelValidatation(this object record, ChoRecordFieldConfiguration[] fieldConfigs)
        {
            bool hasConfigValidators = (from fc in fieldConfigs
                                        where !fc.Validators.IsNullOrEmpty()
                                        select fc).Any();

            if (hasConfigValidators)
            {
                Dictionary <string, ValidationAttribute[]> valDict = (from fc in fieldConfigs
                                                                      select new KeyValuePair <string, ValidationAttribute[]>(fc.Name, fc.Validators)).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
                IDictionary <string, Object> dict = null;
                if (record is ExpandoObject)
                {
                    dict = record as IDictionary <string, Object>;
                }
                else
                {
                    dict = record.ToDictionary();
                }

                ChoValidator.Validate(dict, valDict);
            }
            else
            {
                if (!(record is ExpandoObject))
                {
                    ChoValidator.Validate(record);
                }
            }
        }
Esempio n. 2
0
        public static void DoObjectLevelValidation(this object recObject, ChoRecordConfiguration configuration, IEnumerable <ChoRecordFieldConfiguration> fieldConfigurations)
        {
            if ((configuration.ObjectValidationMode & ChoObjectValidationMode.ObjectLevel) == ChoObjectValidationMode.ObjectLevel)
            {
                if (configuration.HasConfigValidators)
                {
                    IDictionary <string, Object> dict = null;
                    if (recObject is ExpandoObject)
                    {
                        dict = recObject as IDictionary <string, Object>;
                    }
                    else
                    {
                        dict = new Dictionary <string, object>();

                        foreach (var pd in configuration.PIDict.Values)
                        {
                            dict.Add(pd.Name, ChoType.GetPropertyValue(recObject, pd));
                        }
                    }

                    ChoValidator.Validate(dict, configuration.ValDict);
                }
                else
                {
                    if (!configuration.IsDynamicObject)
                    {
                        ChoValidator.Validate(recObject);
                    }
                }
            }
        }
Esempio n. 3
0
        public static void DoObjectLevelValidation(this object recObject, ChoRecordConfiguration configuration, IEnumerable <ChoRecordFieldConfiguration> fieldConfigurations)
        {
            if (recObject == null)
            {
                return;
            }

            if ((configuration.ObjectValidationMode & ChoObjectValidationMode.ObjectLevel) == ChoObjectValidationMode.ObjectLevel)
            {
                if (configuration.Validator == null)
                {
                    if (configuration.HasConfigValidators)
                    {
                        IDictionary <string, Object> dict = null;
                        if (recObject is IDictionary <string, object> )
                        {
                            dict = recObject as IDictionary <string, Object>;
                        }
                        else
                        {
                            dict = new Dictionary <string, object>();

                            foreach (var pd in configuration.PIDict.Values)
                            {
                                dict.Add(pd.Name, ChoType.GetPropertyValue(recObject, pd));
                            }
                        }

                        ChoValidator.Validate(dict, configuration.ValDict);
                    }
                    else
                    {
                        if (!configuration.IsDynamicObject)
                        {
                            ChoValidator.Validate(recObject);
                        }
                    }
                }
                else
                {
                    if (recObject != null && configuration.Validator(recObject))
                    {
                        throw new ValidationException("Failed to validate '{0}' object. {1}".FormatString(recObject.GetType().FullName, Environment.NewLine));
                    }
                }
            }
        }
Esempio n. 4
0
        public static object ChangeType <T>(object value, Type conversionType)
            where T : Attribute
        {
            if (value == null)
            {
                return(ChoActivator.CreateInstanceAndInit(conversionType));
            }

            if (conversionType.IsAssignableFrom(value.GetType()))
            {
                return(value);
            }

            object dest = null;

            if (value is IConvertible)
            {
                dest = Convert.ChangeType(value, conversionType);
            }
            else
            {
                dest = ChoActivator.CreateInstanceAndInit(conversionType);
                value.CloneTo <T>(dest);
            }

            if (dest != null && !dest.GetType().IsSimple())
            {
                ChoObjectValidationMode m = GetValidationMode(value);
                if (m == ChoObjectValidationMode.MemberLevel)
                {
                    ChoValidator.Validate(dest);
                }
                else if (m == ChoObjectValidationMode.ObjectLevel)
                {
                    ChoValidator.Validate(dest);
                }
            }
            return(dest);
        }
Esempio n. 5
0
        private bool LoadLine(Tuple <int, string> pair, ref object rec)
        {
            try
            {
                if (!RaiseBeforeRecordLoad(rec, ref pair))
                {
                    return(false);
                }

                if (pair == null || pair.Item2 == null)
                {
                    return(false);
                }

                if (!pair.Item2.IsNullOrWhiteSpace())
                {
                    if (!FillRecord(rec, pair))
                    {
                        return(false);
                    }

                    if (!(rec is ExpandoObject) &&
                        (Configuration.ObjectValidationMode & ChoObjectValidationMode.ObjectLevel) == ChoObjectValidationMode.ObjectLevel)
                    {
                        ChoValidator.Validate(rec);
                    }
                }

                if (!RaiseAfterRecordLoad(rec, pair))
                {
                    return(false);
                }
            }
            catch (ChoParserException)
            {
                throw;
            }
            catch (ChoMissingRecordFieldException)
            {
                throw;
            }
            catch (Exception ex)
            {
                ChoETLFramework.HandleException(ex);
                if (Configuration.ErrorMode == ChoErrorMode.IgnoreAndContinue)
                {
                    rec = null;
                }
                else if (Configuration.ErrorMode == ChoErrorMode.ReportAndContinue)
                {
                    if (!RaiseRecordLoadError(rec, pair, ex))
                    {
                        throw;
                    }
                }
                else
                {
                    throw;
                }

                return(true);
            }

            return(true);
        }