Add invalid tag statistic

This commit is contained in:
lastvoidtemplar
2021-07-12 13:19:01 +03:00
parent 461e9cd9a6
commit bb16ecb7da
2 changed files with 34 additions and 36 deletions

View File

@@ -34,6 +34,8 @@ namespace BoerseDataConvert
writer.WriteEndElement(); writer.WriteEndElement();
writer.WriteEndDocument(); writer.WriteEndDocument();
writer.Close(); writer.Close();
WarningStat.PrintWarnigs();
WarningStat.Refresh(fileName);
cur_fileName = fileName.Split('.').First(); cur_fileName = fileName.Split('.').First();
count = 1; count = 1;
Console.WriteLine(cur_fileName + " start"); Console.WriteLine(cur_fileName + " start");
@@ -50,17 +52,11 @@ namespace BoerseDataConvert
writer.WriteAttributeString("id", null, count.ToString()); writer.WriteAttributeString("id", null, count.ToString());
foreach (var tagValue in record) foreach (var tagValue in record)
{ {
try
{
string tag = CheckTagValue(tagValue.Key, tagValue.Value); string tag = CheckTagValue(tagValue.Key, tagValue.Value);
writer.WriteStartElement(tag); writer.WriteStartElement(tag);
writer.WriteValue(tagValue.Value); writer.WriteValue(tagValue.Value);
writer.WriteEndElement(); writer.WriteEndElement();
}
catch (ArgumentException e)
{
Console.WriteLine(e.Message);
}
} }
writer.WriteEndElement(); writer.WriteEndElement();
count++; count++;
@@ -70,10 +66,11 @@ namespace BoerseDataConvert
writer.WriteEndElement(); writer.WriteEndElement();
writer.WriteEndDocument(); writer.WriteEndDocument();
writer.Close(); writer.Close();
WarningStat.PrintWarnigs();
} }
private string CheckTagValue(int tag, string value) private string CheckTagValue(int tag, string value)
{ {
if(tagsTable.CheckInvalidTag(tag)) throw new ArgumentException($"WARN: Invalid tag \"{tag}\", {cur_fileName} line {count + 1}"); if (tagsTable.CheckInvalidTag(tag)) WarningStat.Add(tag);
string tagname = tagsTable.GetTagName(tag); string tagname = tagsTable.GetTagName(tag);
if (value == "") return tagname; if (value == "") return tagname;
if (value != "NULL" && !tagsTable.HaveValueRanges(tag)) //Checks if the tag have not a value ranges if (value != "NULL" && !tagsTable.HaveValueRanges(tag)) //Checks if the tag have not a value ranges
@@ -82,7 +79,7 @@ namespace BoerseDataConvert
{ {
if (tagsTable.CheckStringLengthToBig(tag, value.Length)) if (tagsTable.CheckStringLengthToBig(tag, value.Length))
{ {
throw new ArgumentException($"WARN: Too long value \"{tag}\", \"{value}\", max allowed \"{tagsTable.GetTagName(tag)}\", {cur_fileName} line {count + 1}"); Console.WriteLine($"WARN: Too long value \"{tag}\", \"{value}\", max allowed \"{tagsTable.GetTagName(tag)}\", {cur_fileName} line {count + 1}");
} }
} }
else//Checks if value type is decimal else//Checks if value type is decimal
@@ -94,7 +91,7 @@ namespace BoerseDataConvert
} }
catch (FormatException) catch (FormatException)
{ {
throw new ArgumentException($"WARN: Value is not in a valid format for number \"{tag}\", \"{value}\", {cur_fileName} line {count + 1}"); Console.WriteLine($"WARN: Value is not in a valid format for number \"{tag}\", \"{value}\", {cur_fileName} line {count + 1}");
} }
} }
} }
@@ -102,7 +99,7 @@ namespace BoerseDataConvert
{ {
if (!tagsTable.CheckValidValue(tag, value)) if (!tagsTable.CheckValidValue(tag, value))
{ {
throw new ArgumentException($"WARN: Value not in range \"{tag}\", \"{value}\", {cur_fileName} line {count + 1}"); Console.WriteLine($"WARN: Value not in range \"{tag}\", \"{value}\", {cur_fileName} line {count + 1}");
} }
} }
return tagname; return tagname;

View File

@@ -4,32 +4,16 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace BoerseDataConvert.Model namespace BoerseDataConvert
{ {
public static class WarningStat public static class WarningStat
{ {
private class Warning private static Dictionary<int, int> tableWarnings = tableWarnings = new Dictionary<int, int>();
{
string type;
int count;
public Warning(string type)
{
this.type = type;
count = 1;
}
public void Add()
{
count++;
}
}
private static Dictionary<int, Warning> tableWarnings = tableWarnings = new Dictionary<int, Warning>();
private static string curFile; private static string curFile;
public static void Refresh(string fileName) public static void Refresh(string fileName)
{ {
curFile = fileName; curFile = fileName;
tableWarnings = new Dictionary<int,Warning>(); tableWarnings = new Dictionary<int, int>();
} }
/* /*
type "inv" - Ivalid tag type "inv" - Ivalid tag
@@ -37,17 +21,34 @@ namespace BoerseDataConvert.Model
type "notnum" - is not in a valid format for number type "notnum" - is not in a valid format for number
type "range" - Value not in range type "range" - Value not in range
*/ */
public static void Add(int tag,string type)// public static void Add(int tag)//
{ {
if (tableWarnings.ContainsKey(tag)) if (tableWarnings.ContainsKey(tag))
{ {
tableWarnings[tag].Add(); tableWarnings[tag]++;
} }
else else
{ {
Warning warning = new Warning(type); tableWarnings.Add(tag, 1);
tableWarnings.Add(tag, warning); }
}
public static void PrintWarnigs()
{
if (tableWarnings.Count == 0)
{
Console.WriteLine($"There is no warnings in file {curFile}");
}
else
{
Console.WriteLine($"Warnings in file {curFile}");
foreach (var warning in tableWarnings)
{
int tag = warning.Key;
int count = warning.Value;
Console.WriteLine($"Invalid tag \"{tag}\": {count} times.");
}
} }
} }
} }
} }