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); } } }
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); } } } }
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)); } } } }
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); }
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); }