Example #1
0
        /// <summary>
        /// Detects if a list has a valid number of items.
        /// </summary>
        /// <param name="instanceContext">The instance context.</param>
        /// <param name="segmentIndex">The segment position.</param>
        /// <param name="inSegmentIndex">The position within the segment.</param>
        /// <param name="inCompositeIndex">The position within the component if any.</param>
        /// <param name="repetitionIndex">The repetition position.</param>
        /// <returns>A list of segment errors if invalid, otherwise nothing.</returns>
        public override List <SegmentErrorContext> Validate(InstanceContext instanceContext, int segmentIndex,
                                                            int inSegmentIndex, int inCompositeIndex, int repetitionIndex)
        {
            var result = new List <SegmentErrorContext>();

            if (instanceContext.Instance == null)
            {
                return(result);
            }

            var list = instanceContext.Instance as IList;

            if (list == null)
            {
                return(result);
            }

            if (list.Count <= MaxCount && list.Count >= MinCount)
            {
                return(result);
            }

            if (instanceContext.IsPropertyOfType <AllAttribute>())
            {
                throw new Exception(string.Format("{0} is not applicable to All Groups.", GetType().Name));
            }

            if (instanceContext.IsPropertyOfType <GroupAttribute>())
            {
                result.Add(ValidateGroup(list, instanceContext, segmentIndex));
                return(result);
            }

            if (instanceContext.IsPropertyOfType <SegmentAttribute>())
            {
                result.Add(ValidateSegment(list, instanceContext, segmentIndex));
                return(result);
            }

            if (instanceContext.IsPropertyOfType <CompositeAttribute>())
            {
                result.Add(ValidateComposite(list, instanceContext, segmentIndex, inSegmentIndex));
                return(result);
            }

            if (instanceContext.Property.IsString())
            {
                result.Add(ValidateDataElement(list, instanceContext, segmentIndex, inSegmentIndex,
                                               inCompositeIndex));
                return(result);
            }

            throw new Exception(string.Format("Property {0} of type {1} is not supported.",
                                              instanceContext.Property.Name,
                                              instanceContext.Property.GetGenericType().Name));
        }
Example #2
0
        /// <summary>
        /// Detects if an item is mandatory and exists.
        /// </summary>
        /// <param name="instanceContext">The instance context.</param>
        /// <param name="segmentIndex">The segment position.</param>
        /// <param name="inSegmentIndex">The position within the segment.</param>
        /// <param name="inCompositeIndex">The position within the component if any.</param>
        /// <param name="repetitionIndex">The repetition position.</param>
        /// <returns>A list of segment errors if invalid, otherwise nothing.</returns>
        public override List <SegmentErrorContext> Validate(InstanceContext instanceContext, int segmentIndex,
                                                            int inSegmentIndex, int inCompositeIndex, int repetitionIndex)
        {
            var result = new List <SegmentErrorContext>();

            if (instanceContext.Instance != null)
            {
                return(result);
            }

            if (instanceContext.IsPropertyOfType <AllAttribute>())
            {
                result.AddRange(ValidateAll(instanceContext, segmentIndex));
                return(result);
            }

            if (instanceContext.IsPropertyOfType <GroupAttribute>())
            {
                result.Add(ValidateGroup(instanceContext, segmentIndex));
                return(result);
            }

            if (instanceContext.IsPropertyOfType <SegmentAttribute>())
            {
                result.Add(ValidateSegment(instanceContext, segmentIndex));
                return(result);
            }

            if (instanceContext.IsPropertyOfType <CompositeAttribute>())
            {
                result.Add(ValidateComposite(instanceContext, segmentIndex, inSegmentIndex));
                return(result);
            }

            if (instanceContext.Property.IsString())
            {
                result.Add(ValidateDataElement(instanceContext, segmentIndex, inSegmentIndex, inCompositeIndex));
                return(result);
            }

            throw new Exception(string.Format("Property {0} of type {1} is not supported.", instanceContext.Property.Name,
                                              instanceContext.Property.GetGenericType().Name));
        }