diff --git a/BoerseDataConvert/BoerseDataConvert/Controller/RecordController.cs b/BoerseDataConvert/BoerseDataConvert/Controller/RecordController.cs index da44107..58a382e 100644 --- a/BoerseDataConvert/BoerseDataConvert/Controller/RecordController.cs +++ b/BoerseDataConvert/BoerseDataConvert/Controller/RecordController.cs @@ -9,7 +9,7 @@ namespace BoerseDataConvert { public class RecordController { - private static int count; + private static int count; private static string cur_fileName; public RecordController(string fileName) @@ -30,7 +30,7 @@ namespace BoerseDataConvert { try { - string tag =CheckTagValue(tagValue.Key, tagValue.Value); + string tag = CheckTagValue(tagValue.Key, tagValue.Value); xmlRecord.Append($" <{tag}>{tagValue.Value}\n"); } catch (ArgumentException e) @@ -44,11 +44,11 @@ namespace BoerseDataConvert } private string CheckTagValue(string tag, string value) { - string tagname=""; + string tagname = ""; StreamReader reader = new StreamReader(@"..\..\..\..\tags.txt"); using (reader) { - string[] tagLine= null ; + string[] tagLine = null; while (!reader.EndOfStream) { string[] line = reader.ReadLine().Split('|').ToArray(); @@ -76,7 +76,7 @@ namespace BoerseDataConvert } } - else + else { string[] valueRange = tagLine[3].Split('#').ToArray(); bool countain = false; @@ -87,10 +87,10 @@ namespace BoerseDataConvert { countain = true; break; - } + } } - if(!countain) throw new ArgumentException("Value is not in value range!"); - } + if (!countain) throw new ArgumentException("Value is not in value range!"); + } } return tagname; } diff --git a/BoerseDataConvert/BoerseDataConvert/Views/Program.cs b/BoerseDataConvert/BoerseDataConvert/Views/Program.cs index 5a78b5b..d4733b6 100644 --- a/BoerseDataConvert/BoerseDataConvert/Views/Program.cs +++ b/BoerseDataConvert/BoerseDataConvert/Views/Program.cs @@ -15,29 +15,47 @@ namespace BoerseDataConvert // -d directory or --dir directory // -o directory or --output direcory // -h - help - // Console.OutputEncoding = System.Text.Encoding.UTF8; + + // input handling + string zipFile = "", inputDir = "", outputDir = ""; Console.WriteLine(); if (args.Contains("-i") || args.Contains("--input")) { - string zipfile = args[Array.IndexOf(args, "-i") + 1]; + zipFile = args[Array.IndexOf(args, "-i") + 1]; } if (args.Contains("-d") || args.Contains("--directory")) { - string inputDir = args[Array.IndexOf(args, "-d" + 1)]; + inputDir = args[Array.IndexOf(args, "-d") + 1]; } if (args.Contains("-o") || args.Contains("--output")) { - string outputDir = args[Array.IndexOf(args, "-o" + 1)]; + outputDir = args[Array.IndexOf(args, "-o") + 1]; } if (args.Contains("-h") || args.Contains("--help")) { Help(); return; } - Reader reader = new Reader(@"E:\Downloads\TestData-2021_07_02", new string[1] { "subtype910.txt" }); - // Reader reader = new Reader(@"D:\Code\ИТ Кариера\Стаж\задача\TestData-2021_07_02", new string[1] { "subtype910.txt" }); - RecordController a = new RecordController("subtype910.txt"); - Writer writer = new Writer("subtype910.txt"); + zipFile = @"D:\Code\ИТ Кариера\Стаж\задача\testdata.zip"; + inputDir = @"D:\Code\ИТ Кариера\Стаж\задача\TestData"; + outputDir = @"D:\Code\ИТ Кариера\Стаж\задача\outputdir"; + if (zipFile == "" || inputDir == "" || outputDir == "") + { + throw new ArgumentException("Fields cannot be empty"); + } + + // TODO: clear matching files from inputDir + // TODO: check free disk space before file ops + + ZipFile.ExtractToDirectory(zipFile, inputDir); // zip extract + + // read files + string[] fileNames = Directory.GetFiles(inputDir).Select(x => x.Split('\\', '/').Last()).ToArray(); + + Reader reader = new Reader(inputDir, fileNames); + Writer writer = new Writer(outputDir, fileNames[0]); + RecordController a = new RecordController(fileNames[0]); + while (true) { try @@ -48,20 +66,21 @@ namespace BoerseDataConvert } catch (IndexOutOfRangeException e) { + Reader.EndFile(); Writer.EndFile(); break; } - + } + static void Help() + { + Console.WriteLine("BoerseDataConvert v1.0.0"); + Console.WriteLine("D. Delchev and D. Byalkov, 2021"); + Console.WriteLine("---"); + Console.WriteLine("-i or --input "); + Console.WriteLine("-d or --directory "); + Console.WriteLine("-o or --output "); + Console.WriteLine("-h or --help - Prints this message"); } } - static void Help() - { - Console.WriteLine("BoerseDataConvert v1.0.0"); - Console.WriteLine("D. Delchev and D. Byalkov, 2021"); - Console.WriteLine("---"); - Console.WriteLine("-i or --input "); - Console.WriteLine("-d or --directory "); - Console.WriteLine("-o or --output "); - } } -} +} \ No newline at end of file diff --git a/BoerseDataConvert/BoerseDataConvert/Views/Reader.cs b/BoerseDataConvert/BoerseDataConvert/Views/Reader.cs index 6ff63d3..ee97a50 100644 --- a/BoerseDataConvert/BoerseDataConvert/Views/Reader.cs +++ b/BoerseDataConvert/BoerseDataConvert/Views/Reader.cs @@ -10,7 +10,7 @@ namespace BoerseDataConvert public class Reader { private string[] filesNames; - private StreamReader reader; + private static StreamReader reader; private int fileInd; private string adr; public Reader(string adr, string[] filesNames) @@ -27,14 +27,14 @@ namespace BoerseDataConvert if (s.Substring(0, 11) == "Datensaetze") { fileInd++; - reader.Close(); + EndFile(); reader = new StreamReader($@"{adr}/{filesNames[fileInd]}", CodePagesEncodingProvider.Instance.GetEncoding(1252)); RecordController.NextFile(filesNames[fileInd]); Writer.NextFile(filesNames[fileInd]); s = reader.ReadLine(); s = reader.ReadLine(); } - string[] sr = s.Split("|").ToArray(); + string[] sr = s.Split("|").ToArray(); Dictionary a = new Dictionary(); foreach (var item in sr) { @@ -45,5 +45,9 @@ namespace BoerseDataConvert record.TagsValues = a; return record; } + internal static void EndFile() + { + reader.Close(); + } } } diff --git a/BoerseDataConvert/BoerseDataConvert/Views/Writer.cs b/BoerseDataConvert/BoerseDataConvert/Views/Writer.cs index f9cd52f..e35737f 100644 --- a/BoerseDataConvert/BoerseDataConvert/Views/Writer.cs +++ b/BoerseDataConvert/BoerseDataConvert/Views/Writer.cs @@ -11,13 +11,16 @@ namespace BoerseDataConvert { private static string curFilesName; private static StreamWriter writer; + private static string address; - public Writer(string filesName) + public Writer(string _address, string filesName) { + address = _address; curFilesName = filesName; string[] file = curFilesName.Split('.').ToArray(); - writer = new StreamWriter($"{file[0]}.xml"); - writer.WriteLine($""); + writer = new StreamWriter($@"{address}/{file[0]}.xml"); + writer.WriteLine($"
"); + } public void WriteRecord(string record) { @@ -28,8 +31,8 @@ namespace BoerseDataConvert EndFile(); curFilesName = fileName; string[] file = curFilesName.Split('.').ToArray(); - writer = new StreamWriter($"{file[0]}.xml"); - writer.WriteLine($"
"); + writer = new StreamWriter($@"{address}/{file[0]}.xml"); + writer.WriteLine($"
"); } public static void EndFile() { diff --git a/BoerseDataConvert/BoerseDataConvert/Views/ZipHandler.cs b/BoerseDataConvert/BoerseDataConvert/Views/ZipHandler.cs deleted file mode 100644 index 3ddf1d9..0000000 --- a/BoerseDataConvert/BoerseDataConvert/Views/ZipHandler.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace BoerseDataConvert -{ - class ZipHandler - { - } -} diff --git a/BoerseDataConvert/Документация.docx b/BoerseDataConvert/Документация.docx index 6834e1f..00ca687 100644 Binary files a/BoerseDataConvert/Документация.docx and b/BoerseDataConvert/Документация.docx differ