Reader Checking first and last line

This commit is contained in:
lastvoidtemplar
2021-07-13 11:27:46 +03:00
parent 238ac39175
commit a23d8d302b
2 changed files with 49 additions and 3 deletions

View File

@@ -16,6 +16,10 @@ namespace BoerseDataConvert
private static string address;
private static XmlWriter writer;
private static WarningStat warning;
public static int Count
{
get { return count; }
}
public RecordController(string adr, string fileName, string tags)
{
count = 1;

View File

@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Text;
@@ -19,19 +20,22 @@ namespace BoerseDataConvert
reader = new StreamReader($@"{adr}/{filesNames[fileInd]}", CodePagesEncodingProvider.Instance.GetEncoding(1252));
this.adr = adr;
this.filesNames = filesNames;
reader.ReadLine();
string date = reader.ReadLine();
CheckFirstLine(date);
}
public Record ReadLineRecord()
{
string s = reader.ReadLine();
if (s.Substring(0, 11) == "Datensaetze")
if (reader.EndOfStream)
{
CheckFinalLine(s);
Console.WriteLine($"INFO: { filesNames[fileInd] } was converted successfully");
fileInd++;
EndFile();
reader = new StreamReader($@"{adr}/{filesNames[fileInd]}", CodePagesEncodingProvider.Instance.GetEncoding(1252));
RecordController.NextFile(filesNames[fileInd]);
s = reader.ReadLine();
string date = reader.ReadLine();
CheckFirstLine(date);
s = reader.ReadLine();
}
string[] sr = s.Split("|").ToArray();
@@ -43,6 +47,44 @@ namespace BoerseDataConvert
}
return record;
}
private void CheckFirstLine(string date)
{
try
{
CultureInfo provider = CultureInfo.InvariantCulture;
DateTime time = DateTime.ParseExact(date, "yyyy-MM-dd HH:mm:ss", provider);
}
catch (Exception)
{
Console.WriteLine($"WARN: Invalid date in file {filesNames[fileInd]}");
}
}
private void CheckFinalLine(string s)
{
if ("Datensaetze: " != s.Substring(0, 13))
{
Console.WriteLine($"wARN: Final line on file {filesNames[fileInd]} is not in th correct format!");
}
else
{
int count = 0;
try
{
string countStr = s.Split(' ', 2).Last();
count = int.Parse(countStr);
if (count != RecordController.Count)
{
Console.WriteLine($"Count on file {filesNames[fileInd]} is not correct! Real count is {RecordController.Count}");
}
}
catch (Exception)
{
Console.WriteLine($"Count on file {filesNames[fileInd]} is not in the correct format");
}
}
}
internal static void EndFile()
{
reader.Close();