/// <summary> /// Guesses the scope for found. /// </summary> /// <param name="targetPropertyType">Type of the target property.</param> /// <param name="found">The found.</param> private void GuessScopeForFound(Type targetPropertyType, CrosswalkScope found) { var tempObj = found.SourceValue ?? 0; var temp = ElementMappingModel.GuardValueOnType(tempObj, targetPropertyType); ScopeValue result; if (temp == null) { result = default(ScopeValue); } else { using (var sess = SessionFactory.OpenSession()) { result = sess.Query <ScopeValue>() .Where(value => value.Owner.Id == Element.Scope.Id) .ToList() .FirstOrDefault(v => { var test = targetPropertyType.IsEnum ? Enum.ToObject(targetPropertyType, v.Value) : v.Value; var areEq = Equals(test, temp); return(areEq); }); } } found.ScopeValue = result; }
public void ApplyValueTestPositive() { var target = new FooTarget(); var targetDef = TargetRepository.New(DoubleFactory.DummyWing, Guid.Empty, "FooTarget"); var element = DoubleFactory.CreateElementDouble(targetDef, "SomeInt"); var model = new ElementMappingModel <FooTarget>(element, Enumerable.Empty <CrosswalkViewModel>()); model.ApplyValue(target, 100); Assert.AreEqual(target.SomeInt, 100); }
public void ApplyValueStringToIntTest() { var target = new FooTarget(); var targetDef = TargetRepository.New(DoubleFactory.DummyWing, Guid.Empty, "FooTarget"); var element = DoubleFactory.CreateElementDouble(targetDef, "SomeInt"); var expected = 123; string ValueToAssign = expected.ToString(); var model = new ElementMappingModel <FooTarget>(element, Enumerable.Empty <CrosswalkViewModel>()); model.ApplyValue(target, ValueToAssign); Assert.AreEqual(expected, target.SomeInt); }
public void ApplyValueTestWrongType() { var target = new FooTarget(); var targetDef = TargetRepository.New(DoubleFactory.DummyWing, Guid.Empty, "FooTarget"); var element = DoubleFactory.CreateElementDouble(targetDef, "SomeInt"); string expected = "zzzzzzzzzzzzzzz"; var model = new ElementMappingModel <FooTarget>(element, Enumerable.Empty <CrosswalkViewModel>()); // a string is assigned, so test that it's not equal to the SomeInt property model.ApplyValue(target, expected); Assert.AreNotEqual(expected, target.SomeInt); }
public void ApplyValueStringToDoubleIntoIntTest() { var target = new FooTarget(); var targetDef = TargetRepository.New(DoubleFactory.DummyWing, Guid.Empty, "FooTarget"); var element = DoubleFactory.CreateElementDouble(targetDef, "SomeInt"); var expected = 123.45; string ValueToAssign = expected.ToString(); var model = new ElementMappingModel <FooTarget>(element, Enumerable.Empty <CrosswalkViewModel>()); // a string is assigned, so test that it's not equal to the SomeInt property model.ApplyValue(target, ValueToAssign); Assert.AreNotEqual((int)expected, target.SomeInt); }
public void ApplyValueScopeTest() { // given an element with name "SomeEnum" var target = new FooTarget(); var targetDef = TargetRepository.New(DoubleFactory.DummyWing, Guid.Empty, "FooTarget"); var element = DoubleFactory.CreateElementDouble(targetDef, "SomeEnum"); // find that property on target var model = new ElementMappingModel <FooTarget>(element, Enumerable.Empty <CrosswalkViewModel>()); // set target's SomeEnum property value to "Something.value3" model.ApplyValue(target, Something.value3); Assert.AreEqual(target.SomeEnum, Something.value3); }
/// <summary> /// Validates the target. /// </summary> /// <param name="temp">The temporary.</param> /// <param name="current">The current.</param> /// <param name="rdr">The RDR.</param> /// <param name="mappings">The mappings.</param> /// <param name="session">The session.</param> /// <returns></returns> private ValidationStatus ValidateTarget(object temp, int current, IDataReader rdr, IDictionary <string, string> mappings, IStatelessSession session) { //bool hasError = false; var validationResult = ValidationEngine.ValidateInstance(temp); // var updateCount = validationResult.PropertyErrors.Count + validationResult.PropertyWarnings.Count; bool hasError = validationResult.PropertyErrors.Any() || validationResult.ClassErrors.Any(); if (validationResult.ClassErrors.Any()) { hasError = true; foreach (var res in validationResult.ClassErrors) { string member = string.Empty; string msg = null; object value = null; if (res.Property != null) { member = res.Property.Name; if (mappings.ContainsKey(member)) { var column = mappings[member]; var ord = rdr.GetOrdinal(column); value = rdr.GetValue(ord); msg = string.Format("Value excluded: {0}", value == null ? "<<NULL>>" : string.IsNullOrEmpty(value.ToString()) ? @"""" : value.ToString()); } } if (res.ErrorState == ValidationErrorState.ValidationError && !string.IsNullOrEmpty(res.Message)) { msg = string.Format("{1} (Value excluded: {0})", (value == null ? "<<NULL>>" : string.IsNullOrEmpty(value.ToString()) ? @"""" : value.ToString()), res.Message); } if (res.ErrorState == ValidationErrorState.ValidationError && !string.IsNullOrEmpty(res.Message)) { member = "Row Level"; msg = res.Message; } GuardError(member, msg, current, res.ErrorState == ValidationErrorState.ExcludedByCrosswalk ? RecordState.ExcludedByCrosswalk : RecordState.ValidationError, session); //RecordState.ExcludedByCrosswalk } } if (validationResult.PropertyErrors.Any()) { // updateCount += validationResult.PropertyErrors.Count; hasError = true; foreach (var err in validationResult.PropertyErrors.ToList()) { Element elemTest; ElementDictionary.TryGetValue(err.Property.Name.ToLower(), out elemTest); if (elemTest != null) { GuardError(elemTest.Description, ElementMappingModel.ParseValueError(err.AttemptedValue, err.Message), current, RecordState.ValidationError, session); } } } if (validationResult.PropertyWarnings.Any()) { foreach (var err in validationResult.PropertyWarnings) { Element elemTest; ElementDictionary.TryGetValue(err.Property.Name.ToLower(), out elemTest); if (elemTest != null) { GuardError(elemTest.Description, ElementMappingModel.ParseValueError(err.AttemptedValue, err.Message), current, RecordState.Warning, session); } } } var result = new ValidationStatus(); result.HasErrors = hasError; return(result); }
/// <summary> /// Validates the target. /// </summary> /// <param name="temp">The temporary.</param> /// <param name="current">The current.</param> /// <param name="rdr">The RDR.</param> /// <param name="mappings">The mappings.</param> /// <param name="session">The session.</param> /// <returns></returns> private ValidationStatus ValidateTarget(object temp, int current, IDataReader rdr, IDictionary <string, string> mappings, IStatelessSession session) { bool hasError = false; var validationResult = ValidationEngine.ValidateInstance(temp); var updateCount = validationResult.PropertyErrors.Count + validationResult.PropertyWarnings.Count; hasError = validationResult.PropertyErrors.Any() || validationResult.ClassErrors.Any(); if (validationResult.ClassErrors.Any()) { updateCount += validationResult.ClassErrors.Count; hasError = true; foreach (var res in validationResult.ClassErrors) { string member = string.Empty; string msg = null; object value = null; if (res.Property != null) { member = res.Property.Name; var column = mappings[member]; var ord = rdr.GetOrdinal(column); value = rdr.GetValue(ord); msg = string.Format("Value excluded: {0}", value == null ? "<<NULL>>" : string.IsNullOrEmpty(value.ToString()) ? @"""" : value.ToString()); } if (res.ErrorState == ValidationErrorState.ValidationError && !string.IsNullOrEmpty(res.Message)) { msg = string.Format("{1} (Value excluded: {0})", (value == null ? "<<NULL>>" : string.IsNullOrEmpty(value.ToString()) ? @"""" : value.ToString()), res.Message); } GuardError(member, msg, current, RecordState.ExcludedByCrosswalk, session); //TODO: Output messages to screen, other log file per import, someplace besited the main session.log //this.DataContextObject.Logger.Write(string.Format(VALIDATION_LOG_MESSAGE, DataContextObject.SelectedDataType.DataTypeName, DataContextObject.Title, "Class Error", msg), Category.Info, Priority.High); } } if (validationResult.PropertyErrors.Any()) { hasError = true; foreach (var err in validationResult.PropertyErrors) { Element elemTest; ElementDictionary.TryGetValue(err.Property.Name.ToLower(), out elemTest); if (elemTest != null) { GuardError(elemTest.Description, ElementMappingModel.ParseValueError(err.AttemptedValue, err.Message), current, RecordState.ValidationError, session); } //TODO: Output messages to screen, other log file per import, someplace besited the main session.log //this.DataContextObject.Logger.Write(string.Format(VALIDATION_LOG_MESSAGE, DataContextObject.SelectedDataType.DataTypeName, DataContextObject.Title, "Error", err.Message), Category.Info, Priority.High); } } if (validationResult.PropertyWarnings.Any()) { foreach (var err in validationResult.PropertyWarnings) { Element elemTest; ElementDictionary.TryGetValue(err.Property.Name.ToLower(), out elemTest); if (elemTest != null) { GuardError(elemTest.Description, ElementMappingModel.ParseValueError(err.AttemptedValue, err.Message), current, RecordState.Warning, session); } //TODO: Output messages to screen, other log file per import, someplace besited the main session.log //this.DataContextObject.Logger.Write(string.Format(VALIDATION_LOG_MESSAGE, DataContextObject.SelectedDataType.DataTypeName, DataContextObject.Title, "Warning", err.Message), Category.Info, Priority.High); } } var result = new ValidationStatus(); result.HasErrors = hasError; return(result); }