< Summary

Information
Class: ValidateLib.ResultCreators.Csv.CsvResultWriter
Assembly: validatelib.dll
File(s): C:\skola_karlovka\RP\code\csv-validator\CSV_Validator\ValidateLib\ResultWriters\Csv\CsvResultWriter.cs
Line coverage
100%
Covered lines: 34
Uncovered lines: 0
Coverable lines: 34
Total lines: 83
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

File(s)

C:\skola_karlovka\RP\code\csv-validator\CSV_Validator\ValidateLib\ResultWriters\Csv\CsvResultWriter.cs

#LineLine coverage
 1using CsvHelper;
 2using CsvHelper.Configuration;
 3using System.Globalization;
 4using ValidateLib.Results;
 5
 6namespace ValidateLib.ResultCreators.Csv
 7{
 8    public class CsvResultWriter : IResultWriter
 9    {
 10        protected CultureInfo culture;
 111        public CsvResultWriter(CultureInfo? cultureInfo = null)
 12        {
 113            culture = cultureInfo ?? CultureInfo.InvariantCulture;
 114        }
 15        public void GenerateResult(string filePath, ITableGroupValidationDetail validationDetails)
 16        {
 17            // Writing data to CSV file
 118            using (var writer = new StreamWriter(filePath))
 19            {
 120                var config = new CsvConfiguration(culture);
 121                config.HasHeaderRecord = true; // Set to false to disable headers
 122                using (var csv = new CsvWriter(writer, config))
 23                {
 24
 125                    WriteHeader(csv);
 126                    WriteErrors(csv, validationDetails);
 127                    WriteEWarnings(csv, validationDetails);
 28
 129                }
 30            }
 31
 132        }
 33
 34        protected void WriteHeader(CsvWriter csv)
 35        {
 136            WriteRecord(csv,
 137                LocalizationManager.MessagesManager.GetString("ErrorTypeHeader", culture)!,
 138                LocalizationManager.MessagesManager.GetString("ErrorMessageHeader", culture)!
 139                );
 140        }
 41
 42        // Helper method to write a record
 43        protected void WriteRecord(CsvWriter csv, params string[] values)
 44        {
 145            foreach (var value in values)
 46            {
 147                csv.WriteField(value); // Write each field
 48            }
 149            csv.NextRecord(); // Move to the next record
 150        }
 51        protected void WriteErrors(CsvWriter writer, ITableGroupValidationDetail validationDetails)
 52        {
 153            foreach (var error in validationDetails.GeneralErrors)
 54            {
 155                WriteRecord(writer, error.GetErrorType().ToString(), error.GetMessage(culture));
 56            }
 157            foreach (var result in validationDetails.TableValidationDetails)
 58            {
 159                foreach (var error in result.Errors)
 60                {
 161                    WriteRecord(writer, error.GetErrorType().ToString(), error.GetMessage(culture));
 62                }
 63            }
 64
 165        }
 66        protected void WriteEWarnings(CsvWriter writer, ITableGroupValidationDetail validationDetails)
 67        {
 168            foreach (var warning in validationDetails.GeneralWarnings)
 69            {
 170                WriteRecord(writer,
 171                   warning.GetErrorType().ToString(), warning.GetMessage(culture));
 72            }
 173            foreach (var result in validationDetails.TableValidationDetails)
 74            {
 175                foreach (var warning in result.Warnings)
 76                {
 177                    WriteRecord(writer, warning.GetErrorType().ToString(), warning.GetMessage(culture));
 78                }
 79            }
 80
 181        }
 82    }
 83}