コード例 #1
0
ファイル: ModelValidator.cs プロジェクト: elaspog/FinAlyst
 /// <summary>
 /// Validates a property and adds errors to the list if the property is invalid
 /// </summary>
 private void PerformValidation(IPropertyValidation validation)
 {
     if (validation.IsInvalid())
     {
         AddErrorMessageForProperty(validation.PropertyName, validation.ErrorMessage);
     }
 }
コード例 #2
0
ファイル: ParsingService.cs プロジェクト: amenkes/hl7parser
        private static IEnumerable <Exception> ValidateDataModel(IPropertyValidation dataModel)
        {
            var list     = new List <Exception>();
            var required = ValidateDataModelRequired(dataModel);

            if (required != null)
            {
                list.Add(required);
            }

            var maxLength = ValidateDataModelMaxLength(dataModel);

            if (maxLength != null)
            {
                list.Add(maxLength);
            }

            var minLength = ValidateDataModelMinLength(dataModel);

            if (maxLength != null)
            {
                list.Add(minLength);
            }

            return(list);
        }
コード例 #3
0
ファイル: ParsingService.cs プロジェクト: amenkes/hl7parser
 private static void HandleValidations(IPropertyValidation propertyValidationModel)
 {
     if (propertyValidationModel.Value != null && propertyValidationModel.MaxLength != null)
     {
         if (propertyValidationModel.Value.ToString().Length > propertyValidationModel.MaxLength)
         {
             propertyValidationModel.Value = propertyValidationModel.Value.ToString().Substring(0, (int)propertyValidationModel.MaxLength);
         }
     }
 }
コード例 #4
0
ファイル: ParsingService.cs プロジェクト: amenkes/hl7parser
        private static void UpdateStringPropertyValue(object instance, IPropertyValidation propertyValidationModel)
        {
            object value = null;

            if (propertyValidationModel.PropertyInfo.PropertyType.IsValueType)
            {
                value = Activator.CreateInstance(propertyValidationModel.PropertyInfo.PropertyType);
            }
            propertyValidationModel.PropertyInfo.SetValue(instance, Convert.ChangeType(
                                                              value, propertyValidationModel.PropertyInfo.PropertyType), null);
        }
コード例 #5
0
ファイル: ParsingService.cs プロジェクト: amenkes/hl7parser
 private static void UpdateSimpleTypePropertyValue(object instance, IPropertyValidation propertyValidationModel)
 {
     if (string.IsNullOrEmpty(propertyValidationModel.Value.ToString()))
     {
         UpdateStringPropertyValue(instance, propertyValidationModel);
     }
     else
     {
         UpdatePropertyValue(instance, propertyValidationModel.PropertyInfo, propertyValidationModel.Value);
     }
 }
コード例 #6
0
ファイル: ParsingService.cs プロジェクト: amenkes/hl7parser
        private static void UpdateInterfacePropertyValue(object instance, IPropertyValidation propertyValidationModel)
        {
            if (!propertyValidationModel.PropertyInfo.PropertyType.IsInterface)
            {
                return;
            }
            var anyClassImplementingInterface = ConversionMethods.GetConcreteClassFromInterface(propertyValidationModel.PropertyInfo);

            var anyClassAsElement = anyClassImplementingInterface as BaseElement;

            if (anyClassAsElement == null)
            {
                return;
            }

            UpdateReferences(anyClassAsElement, propertyValidationModel.GenericReferenceElement);
            propertyValidationModel.PropertyInfo.SetValue(instance, anyClassImplementingInterface);
        }
コード例 #7
0
ファイル: ParsingService.cs プロジェクト: amenkes/hl7parser
        private static void UpdateCollectionPropertyValues(object instance, IPropertyValidation propertyValidationModel)
        {
            try
            {
                var collectionItem = propertyValidationModel.PropertyInfo.PropertyType.GetGenericArguments();
                var collectionType = collectionItem[0];
                var subtype        = collectionType.UnderlyingSystemType;

                var listType            = typeof(List <>);
                var constructedListType = listType.MakeGenericType(subtype);
                //var constructedType = ConversionMethods.GetConcreteClassFromInterface(Subtype);

                var instanceChild = (IList)Activator.CreateInstance(constructedListType);
                var data          = propertyValidationModel.Value;

                // data is the list of Generic item (Field, Component, Subcomponenet, etc)
                // need too loop through each item, set each class, then assign the List<T> to the element/instance
                if (data is IList)
                {
                    var dataList = data as IList <IGenericRootItem>;
                    if (dataList != null)
                    {
                        foreach (var genericRootItem in dataList)
                        {
                            UpdateRepeatedItemList(instanceChild, subtype, genericRootItem);
                        }
                    }
                }
                else
                {
                    //This is a list of items, but only 1 item
                    if (ReflectionHelpers.HasInterface(propertyValidationModel.GenericReferenceElement, typeof(IHasChildren <>)))
                    {
                        UpdateRepeatedItemList(instanceChild, subtype, propertyValidationModel.GenericReferenceElement);
                    }
                }
                UpdatePropertyValue(instance, propertyValidationModel.PropertyInfo, instanceChild);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
コード例 #8
0
ファイル: ParsingService.cs プロジェクト: amenkes/hl7parser
        private static void UpdatePropertyValues(object instance, IPropertyValidation propertyValidationModel)
        {
            Ensure.ArgumentNotNull(nameof(instance), instance);
            Ensure.ArgumentNotNull(nameof(propertyValidationModel), propertyValidationModel);

            // Check for collection first
            if (propertyValidationModel.IsCollection)
            {
                UpdateCollectionPropertyValues(instance, propertyValidationModel);
                return;
            }

            if (typeof(bool) == propertyValidationModel.PropertyInfo.PropertyType)
            {
                UpdateBoolPropertyValue(instance, propertyValidationModel);
                return;
            }
            if (propertyValidationModel.PropertyInfo.PropertyType.IsSimpleType())
            {
                UpdateSimpleTypePropertyValue(instance, propertyValidationModel);
                return;
            }
            if (typeof(Guid) == propertyValidationModel.PropertyInfo.PropertyType)
            {
                UpdateGuidPropertyValue(instance, propertyValidationModel);
                return;
            }
            if (typeof(DateTime) == propertyValidationModel.PropertyInfo.PropertyType)
            {
                UpdateDateTimePropertyValue(instance, propertyValidationModel);
                return;
            }

            // Property is probably interface.
            UpdateInterfacePropertyValue(instance, propertyValidationModel);
        }
コード例 #9
0
ファイル: ParsingService.cs プロジェクト: amenkes/hl7parser
 private static ApplicationExceptions.MinimumLengthNotReachedException ValidateDataModelMinLength(IPropertyValidation dataModel)
 {
     return(dataModel.MinLength != null && dataModel.Value?.ToString().Length < dataModel.MinLength ? new ApplicationExceptions.MinimumLengthNotReachedException($"{dataModel.Name}:{dataModel.MinLength}({dataModel.Value?.ToString().Length})") : null);
 }
コード例 #10
0
ファイル: ParsingService.cs プロジェクト: amenkes/hl7parser
 private static ApplicationExceptions.RequiredFieldIsNullException ValidateDataModelRequired(IPropertyValidation dataModel)
 {
     return(dataModel.IsRequired && dataModel.Value == null ? new ApplicationExceptions.RequiredFieldIsNullException(dataModel.Name) : null);
 }
コード例 #11
0
ファイル: ParsingService.cs プロジェクト: amenkes/hl7parser
        private static void UpdateGuidPropertyValue(object instance, IPropertyValidation propertyValidationModel)
        {
            var convertedValue = new Guid(propertyValidationModel.GenericReferenceElement.Source);

            UpdatePropertyValue(instance, propertyValidationModel.PropertyInfo, convertedValue);
        }
コード例 #12
0
ファイル: ParsingService.cs プロジェクト: amenkes/hl7parser
        private static void UpdateDateTimePropertyValue(object instance, IPropertyValidation propertyValidationModel)
        {
            var convertedValue = propertyValidationModel.GenericReferenceElement.Source.ToDateTimeFromFormat();

            UpdatePropertyValue(instance, propertyValidationModel.PropertyInfo, convertedValue);
        }
コード例 #13
0
ファイル: ParsingService.cs プロジェクト: amenkes/hl7parser
 private static void UpdateBoolPropertyValue(object instance, IPropertyValidation propertyValidationModel)
 {
     UpdatePropertyValue(instance, propertyValidationModel.PropertyInfo, propertyValidationModel.Value.ToString().ToBoolean());
 }