private void SourceBeforeProcessDataRow(ProcessRowEventArgs <ParserContext20> e) { e.Context.CurrentDataRow20 = new DataRow20 { Row = e.Row }; e.Context.DataRows.Add(e.Context.CurrentDataRow20); var kvp = FindDataRowProcessorDefinition(_fileProcessorDefinition, e); var hasValidDataType = ValidateDataRowProcessorDefinition(e, kvp.Value, kvp.Key); if (!hasValidDataType) { e.Context.UndecodedDataRows.Add(e.Context.CurrentDataRow20); return; } var lineType = $"Data Row '{e.Context.CurrentDataRow20.DataType}'"; var hasValidateNumerOfFields = ParsedDataProcessorHelper.ValidateNumerOfFields(lineType, e.Row, kvp.Value.RowProcessorDefinition); if (!hasValidateNumerOfFields) { e.Context.UndecodedDataRows.Add(e.Context.CurrentDataRow20); return; } e.Context.DecodedDataRows.Add(e.Context.CurrentDataRow20); }
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); }
private void AfterProcessHeaderRow(ProcessRowEventArgs <ParserContext10> e) { if (!IsValidRow(e)) { e.Context.Errors.Add("Header row is invalid"); return; } if (_fileProcessorDefinition.CreateRowJsonEnabled) { ParsedDataProcessorHelper.SetJson(e.Row, _fileProcessorDefinition.HeaderRowProcessorDefinition.FieldProcessorDefinitions); } }
private void AfterProcessDataRow(ProcessRowEventArgs <ParserContext10> e) { if (!IsValidRow(e)) { e.Context.InvalidDataRows.Add(e.Row); return; } if (_fileProcessorDefinition.CreateRowJsonEnabled) { ParsedDataProcessorHelper.SetJson(e.Row, _fileProcessorDefinition.DataRowProcessorDefinition.FieldProcessorDefinitions); } }
private bool ValidateDataRowProcessorDefinition( ProcessRowEventArgs <ParserContext20> e, DataRowProcessorDefinition dataRowProcessorDefinition, string dataType) { if (dataRowProcessorDefinition == null) { e.Row.ValidationResult = ValidationResultType.Error; var error = $"Unknown line type"; e.Row.Errors.Add(error); return(false); } e.Context.CurrentDataRow20.DataType = dataType; e.Context.DataTypeFieldIndex = dataRowProcessorDefinition.DataTypeFieldIndex; e.Context.DataKeyFieldIndex = dataRowProcessorDefinition.DataKeyFieldIndex; return(true); }
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); }
private void SourceAfterProcessRow(object sender, ProcessRowEventArgs <ParserContext10> e) { e.Context.ValidationResult = ParsedDataProcessorHelper.GetMaxValidationResult(e.Context.ValidationResult, e.Row.ValidationResult); if (e.Context.ValidationResult == ValidationResultType.Critical) { e.Context.IsAborted = true; } if (IsHeaderRow(e.Row)) { AfterProcessHeaderRow(e); return; } if (IsTrailerRow(e.Context.IsCurrentRowTheLast)) { AfterProcessTrailerRow(e); return; } AfterProcessDataRow(e); }
private void CreateRow(TParserContext context) { if (IsLineCommentedOut(context.CurrentRowRaw)) { return; } var row = new Row { Index = context.CurrentRowIndex, Raw = context.CurrentRowRaw, RawFields = _lineParser.Parse(context.CurrentRowRaw), ValidationResult = ValidationResultType.Valid }; context.CurrentRowRawFields = row.RawFields; var processRowEventArgs = new ProcessRowEventArgs <TParserContext>(row, context); OnBeforeProcessRow(processRowEventArgs); if (context.IsAborted) { return; } if (row.ValidationResult == ValidationResultType.Valid || row.ValidationResult == ValidationResultType.Warning) { CreateFieldsForRow(row, context); if (context.IsAborted) { return; } } OnAfterProcessRow(processRowEventArgs); }
private static KeyValuePair <string, DataRowProcessorDefinition> FindDataRowProcessorDefinition(FileProcessorDefinition20 fileProcessorDefinition, ProcessRowEventArgs <ParserContext20> e) { foreach (var kvp in fileProcessorDefinition.DataRowProcessorDefinitions) { if (kvp.Value.DataTypeFieldIndex >= e.Row.RawFields.Length) { continue; } if (e.Row.RawFields[kvp.Value.DataTypeFieldIndex] == kvp.Key) { return(kvp); } } return(default);
private void BeforeProcessTrailerRow(ProcessRowEventArgs <ParserContext20> e) { e.Context.Trailer = e.Row; ParsedDataProcessorHelper.ValidateNumerOfFields("Trailer Row", e.Row, _fileProcessorDefinition.TrailerRowProcessorDefinition); }
protected bool IsValidRow(ProcessRowEventArgs <TParserContext> e) { return(e.Row.ValidationResult == ValidationResultType.Valid || e.Row.ValidationResult == ValidationResultType.Warning); }
protected virtual void OnAfterProcessRow(ProcessRowEventArgs <TParserContext> e) { AfterProcessRow?.Invoke(this, e); }