private void SourceBeforeProcessRow(object sender, ProcessRowEventArgs <ParserContext10> e)
        {
            DataProcessorGlobal.Debug($"Processing Row. Index: {e.Row.Index}, Raw Data: '{e.Row.Raw}'");

            string lineType;
            RowProcessorDefinition rowProcessorDefinition;

            if (IsHeaderRow(e.Row))
            {
                lineType = "Header Row";
                rowProcessorDefinition = _fileProcessorDefinition.HeaderRowProcessorDefinition;
                e.Context.Header       = e.Row;
                ParsedDataProcessorHelper.ValidateNumerOfFields(lineType, e.Row, rowProcessorDefinition);
                return;
            }

            if (IsTrailerRow(e.Context.IsCurrentRowTheLast))
            {
                lineType = "Trailer Row";
                rowProcessorDefinition = _fileProcessorDefinition.TrailerRowProcessorDefinition;
                e.Context.Trailer      = e.Row;
                ParsedDataProcessorHelper.ValidateNumerOfFields(lineType, e.Row, rowProcessorDefinition);
                return;
            }

            lineType = "Data Row";
            rowProcessorDefinition = _fileProcessorDefinition.DataRowProcessorDefinition;
            e.Context.DataRows.Add(e.Row);
            ParsedDataProcessorHelper.ValidateNumerOfFields(lineType, e.Row, rowProcessorDefinition);
        }
Beispiel #2
0
        private static void ProcessAggregators(Field field, IFieldAggregator[] aggregators)
        {
            if (aggregators == null || aggregators.Length == 0)
            {
                return;
            }

            foreach (var aggregator in aggregators)
            {
                DataProcessorGlobal.Debug($"Processing Aggregator: {aggregator.Name}, Value: {aggregator.Aggregate.Value}");
                aggregator.AggregateField(field);
                DataProcessorGlobal.Debug($"Processed Aggregator: {aggregator.Name}, New Value: {aggregator.Aggregate.Value}");
            }
        }
Beispiel #3
0
        public Aggregate GetAggregateByName(string name)
        {
            var aggregate = _aggregates.FirstOrDefault(a => a.Name == name);

            if (aggregate == null)
            {
                aggregate = new Aggregate {
                    Name = name
                };
                _aggregates.Add(aggregate);
                DataProcessorGlobal.Debug($"Created Aggregate: {name}");
            }

            return(aggregate);
        }
Beispiel #4
0
        private void SetArg(IEnumerable <Aggregate> aggregates)
        {
            var textArg = Args?.FirstOrDefault(a => a.Key == ARG_AGGREGATE).Value;

            if (string.IsNullOrEmpty(textArg))
            {
                throw new InvalidOperationException($"Rule: '{Name}'. Argument '{ARG_AGGREGATE}' not found");
            }

            DataProcessorGlobal.Debug($"Rule: {Name}. Argument {ARG_AGGREGATE}: '{textArg}'.");

            _aggregateArg = aggregates.FirstOrDefault(a => a.Name == textArg);
            if (_aggregateArg == null)
            {
                throw new InvalidOperationException($"Rule: '{Name}'. Aggregate '{textArg}' not found");
            }
        }
Beispiel #5
0
        private void SetArg()
        {
            var textArg = Args?.FirstOrDefault(a => a.Key == ARG_NUMERIC_VALUE).Value;

            if (string.IsNullOrEmpty(textArg))
            {
                throw new InvalidOperationException($"Rule: '{Name}'. Argument '{ARG_NUMERIC_VALUE}' not found");
            }

            DataProcessorGlobal.Debug($"Rule: {Name}. Argument {ARG_NUMERIC_VALUE}: '{textArg}'.");

            var isValidDecimal = decimal.TryParse(textArg, out _numericArg);

            if (!isValidDecimal)
            {
                throw new InvalidOperationException($"Rule: '{Name}'. Argument: '{ARG_NUMERIC_VALUE}'. Invalid value '{textArg}'");
            }
        }
Beispiel #6
0
        private void SetArg()
        {
            var textArg = Args?.FirstOrDefault(a => a.Key == ARG_DATETIME).Value;

            if (string.IsNullOrEmpty(textArg))
            {
                throw new InvalidOperationException($"Rule: '{Name}'. Argument '{ARG_DATETIME}' not found");
            }

            DataProcessorGlobal.Debug($"Rule: {Name}. Argument {ARG_DATETIME}: '{textArg}'.");

            var isValidDateTime = DateTime.TryParse(textArg, out _dateTimeArg);

            if (!isValidDateTime)
            {
                throw new InvalidOperationException($"Rule: '{Name}'. Argument: '{ARG_DATETIME}'. Invalid value '{textArg}'");
            }
        }
Beispiel #7
0
        private void SourceBeforeProcessRow(object sender, ProcessRowEventArgs <ParserContext20> e)
        {
            DataProcessorGlobal.Debug($"Processing Row. Index: {e.Row.Index}, Raw Data: '{e.Row.Raw}'");
            ClearContext(e.Context);

            if (IsHeaderRow(e.Row))
            {
                BeforeProcessHeaderRow(e);
                return;
            }

            if (IsTrailerRow(e.Context.IsCurrentRowTheLast))
            {
                BeforeProcessTrailerRow(e);
                return;
            }

            SourceBeforeProcessDataRow(e);
        }
Beispiel #8
0
        private static void ProcessRule(Field field, IFieldRule fieldRule)
        {
            DataProcessorGlobal.Debug($"Processing Field Rule: {fieldRule.Name}");
            field.ValidationResult = ValidationResultType.Valid;
            fieldRule.Validate(field);

            if (field.ValidationResult == ValidationResultType.Valid)
            {
                return;
            }

            DataProcessorGlobal.Debug($"Field Rule {fieldRule.Name} failed");
            if (field.ValidationResult == ValidationResultType.Warning)
            {
                field.Row.Warnings.Add(fieldRule.Description);
            }
            else
            {
                field.Row.Errors.Add(fieldRule.Description);
            }
        }
Beispiel #9
0
        private static void DecodeField(string fieldName, string description, Field field, IFieldDecoder fieldDecoder)
        {
            DataProcessorGlobal.Debug($"Decoding Field: {fieldName}, Raw Value: '{field.Raw}'");
            fieldDecoder.Decode(field);

            if (field.ValidationResult == ValidationResultType.Valid)
            {
                return;
            }

            field.Row.ValidationResult = ParsedDataProcessorHelper.GetMaxValidationResult(field.Row.ValidationResult, field.ValidationResult);
            var message = $"Invalid {description} '{field.Raw}'";

            if (field.ValidationResult == ValidationResultType.Warning)
            {
                field.Row.Warnings.Add(message);
            }
            else
            {
                field.Row.Errors.Add(message);
            }
        }
Beispiel #10
0
 public virtual void Initialize(FieldRuleConfiguration config)
 {
     DataProcessorGlobal.Debug($"Rule: {Name}. Initializing.");
     EnsureThatPropertiesAreInitialized();
 }