From 7f9ae2651e1961a4ee7c4c1d393d11f2988b27f9 Mon Sep 17 00:00:00 2001 From: lastvoidtemplar Date: Thu, 8 Jul 2021 13:36:34 +0300 Subject: [PATCH] Refactiring RecordController.CheckTagValue and Record --- .../Controller/RecordController.cs | 87 ++++++++++--------- .../BoerseDataConvert/Model/Record.cs | 2 +- .../BoerseDataConvert/Model/TagsTable.cs | 36 ++++++++ .../BoerseDataConvert/Views/Program.cs | 2 +- .../BoerseDataConvert/Views/Reader.cs | 5 +- 5 files changed, 85 insertions(+), 47 deletions(-) create mode 100644 BoerseDataConvert/BoerseDataConvert/Model/TagsTable.cs diff --git a/BoerseDataConvert/BoerseDataConvert/Controller/RecordController.cs b/BoerseDataConvert/BoerseDataConvert/Controller/RecordController.cs index 2812cb3..d51eba4 100644 --- a/BoerseDataConvert/BoerseDataConvert/Controller/RecordController.cs +++ b/BoerseDataConvert/BoerseDataConvert/Controller/RecordController.cs @@ -11,11 +11,12 @@ namespace BoerseDataConvert { private static int count; private static string cur_fileName; - + private TagsTable tagsTable; public RecordController(string fileName) { count = 1; cur_fileName = fileName; + tagsTable = new TagsTable(); } public static void NextFile(string fileName) { @@ -44,61 +45,61 @@ namespace BoerseDataConvert } private string CheckTagValue(string tag, string value) { - string tagname = ""; - StreamReader reader = new StreamReader(@"..\..\..\..\tags.txt"); - using (reader) + string[] tagLine; + try + { + tagLine = tagsTable.GetTagValue(tag); + } + catch (KeyNotFoundException) { - string[] tagLine = null; - while (!reader.EndOfStream) - { - string[] line = reader.ReadLine().Split('|').ToArray(); - if (line[0] == tag) tagLine = line; - } - if (tagLine == null) throw new ArgumentException($"WARN: Invalid tag \"{tag}\", {cur_fileName} line {count + 1}"); - tagname = tagLine[1]; - if (value != "NULL" && tagLine.Length == 3) - { - string[] valueType = tagLine[2].Split('-').ToArray(); - if (valueType.Length == 2) - { - if (value.Length > int.Parse(valueType[1])) - { - throw new ArgumentException($"WARN: Too long value \"{tag}\", \"{value}\", max allowed \"{valueType[1]}\", {cur_fileName} line {count + 1}"); - } - } - else - { - try - { - double.Parse(value); - } - catch (FormatException) - { - throw new ArgumentException($"WARN: Value is not in a valid format for number \"{tag}\", \"{value}\", {cur_fileName} line {count + 1}"); - } + throw new ArgumentException($"WARN: Invalid tag \"{tag}\", {cur_fileName} line {count + 1}"); + } + string tagname = tagLine[0]; + if (value != "NULL" && tagLine.Length == 2) + { + string[] valueType = tagLine[1].Split('-').ToArray(); + if (valueType.Length == 2) + { + if (value.Length > int.Parse(valueType[1])) + { + throw new ArgumentException($"WARN: Too long value \"{tag}\", \"{value}\", max allowed \"{valueType[1]}\", {cur_fileName} line {count + 1}"); } } else { - string[] valueRange = tagLine[3].Split('#').ToArray(); - bool countain = false; - if (value == "") return tagname; - for (int i = 0; i < valueRange.Length; i++) + try { - if (valueRange[i] == value) - { - countain = true; - break; - } + double.Parse(value); } - if (!countain) + catch (FormatException) { - throw new ArgumentException($"WARN: Value not in range \"{tag}\", \"{value}\", {cur_fileName} line {count + 1}"); + throw new ArgumentException($"WARN: Value is not in a valid format for number \"{tag}\", \"{value}\", {cur_fileName} line {count + 1}"); } + + } + } + else + { + string[] valueRange = tagLine[2].Split('#').ToArray(); + bool countain = false; + if (value == "") return tagname; + for (int i = 0; i < valueRange.Length; i++) + { + if (valueRange[i] == value) + { + countain = true; + break; + } + } + if (!countain) + { + throw new ArgumentException($"WARN: Value not in range \"{tag}\", \"{value}\", {cur_fileName} line {count + 1}"); } } return tagname; } + } } + diff --git a/BoerseDataConvert/BoerseDataConvert/Model/Record.cs b/BoerseDataConvert/BoerseDataConvert/Model/Record.cs index b39e286..67036e2 100644 --- a/BoerseDataConvert/BoerseDataConvert/Model/Record.cs +++ b/BoerseDataConvert/BoerseDataConvert/Model/Record.cs @@ -8,6 +8,6 @@ namespace BoerseDataConvert { public class Record { - public Dictionary TagsValues; + public List>TagsValues; } } diff --git a/BoerseDataConvert/BoerseDataConvert/Model/TagsTable.cs b/BoerseDataConvert/BoerseDataConvert/Model/TagsTable.cs new file mode 100644 index 0000000..9b40e96 --- /dev/null +++ b/BoerseDataConvert/BoerseDataConvert/Model/TagsTable.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace BoerseDataConvert +{ + public class TagsTable + { + StreamReader reader ; + Dictionary table; + public TagsTable() + { + reader = new StreamReader(@"..\..\..\..\tags.txt"); + table = new Dictionary(); + LoadInfo(); + } + private void LoadInfo() + { + using (reader) + { + while (!reader.EndOfStream) + { + string[] line = reader.ReadLine().Split('|').ToArray(); + table.Add(line[0], line.Skip(1).ToArray()); + } + } + } + public string[] GetTagValue(string tag) + { + return table[tag]; + } + } +} diff --git a/BoerseDataConvert/BoerseDataConvert/Views/Program.cs b/BoerseDataConvert/BoerseDataConvert/Views/Program.cs index 21e1525..f649719 100644 --- a/BoerseDataConvert/BoerseDataConvert/Views/Program.cs +++ b/BoerseDataConvert/BoerseDataConvert/Views/Program.cs @@ -90,7 +90,7 @@ namespace BoerseDataConvert string s = a.ConvertToXml(record); writer.WriteRecord(s); } - catch (IndexOutOfRangeException e) + catch (IndexOutOfRangeException) { Reader.EndFile(); Writer.EndFile(); diff --git a/BoerseDataConvert/BoerseDataConvert/Views/Reader.cs b/BoerseDataConvert/BoerseDataConvert/Views/Reader.cs index 22f6937..ac5574f 100644 --- a/BoerseDataConvert/BoerseDataConvert/Views/Reader.cs +++ b/BoerseDataConvert/BoerseDataConvert/Views/Reader.cs @@ -35,11 +35,12 @@ namespace BoerseDataConvert s = reader.ReadLine(); } string[] sr = s.Split("|").ToArray(); - Dictionary a = new Dictionary(); + List>a = new List>(); foreach (var item in sr) { string[] d = item.Split('#').ToArray(); - a.Add(d[0], String.Join('#', d.Skip(1))); + var pair = new KeyValuePair(d[0], String.Join('#', d.Skip(1))); + a.Add(pair); } Record record = new Record(); record.TagsValues = a;