From c2fdd2fe7b43c0a85388531f466e07fbf93e517d Mon Sep 17 00:00:00 2001 From: HuskyTeufel Date: Sun, 15 Aug 2021 14:22:55 +0200 Subject: [PATCH] html writer hinzugefgt --- XMLParser.Contract/ICSVWriter.cs | 4 +- XMLParser.Contract/IProtokollWriter..cs | 10 +++ XMLParser.Contract/IUmsatzCalculator.cs | 2 +- .../ProtokollWriter/HTMLProtokollWriter.cs | 74 +++++++++++++++++++ .../UmsatzCalculator/Strassenumsatz.cs | 4 +- .../UmsatzCalculator/Tagesumsatz.cs | 4 +- XMLProgramm/Program.cs | 20 ++++- 7 files changed, 107 insertions(+), 11 deletions(-) create mode 100644 XMLParser.Contract/IProtokollWriter..cs create mode 100644 XMLParser.Functions/ProtokollWriter/HTMLProtokollWriter.cs diff --git a/XMLParser.Contract/ICSVWriter.cs b/XMLParser.Contract/ICSVWriter.cs index 33b0865..8fbf24b 100644 --- a/XMLParser.Contract/ICSVWriter.cs +++ b/XMLParser.Contract/ICSVWriter.cs @@ -3,8 +3,8 @@ using XMLParser.Model; namespace XMLParser.Contract { - public interface ICSVWriter + public interface ICSVWriter : IProtokollWriter { - void WriteEntry(Dictionary calculated, List inspektionenAmTag); + } } diff --git a/XMLParser.Contract/IProtokollWriter..cs b/XMLParser.Contract/IProtokollWriter..cs new file mode 100644 index 0000000..2e06b42 --- /dev/null +++ b/XMLParser.Contract/IProtokollWriter..cs @@ -0,0 +1,10 @@ +using System.Collections.Generic; +using XMLParser.Model; + +namespace XMLParser.Contract +{ + public interface IProtokollWriter + { + void WriteEntry(Dictionary calculated, List inspektionenAmTag); + } +} \ No newline at end of file diff --git a/XMLParser.Contract/IUmsatzCalculator.cs b/XMLParser.Contract/IUmsatzCalculator.cs index 4b51554..8484f20 100644 --- a/XMLParser.Contract/IUmsatzCalculator.cs +++ b/XMLParser.Contract/IUmsatzCalculator.cs @@ -5,6 +5,6 @@ namespace XMLParser.Contract { public interface IUmsatzCalculator { - void Calculate(ICSVWriter csvWriter,List objekte); + void Calculate(IProtokollWriter protokollWriter,List objekte); } } diff --git a/XMLParser.Functions/ProtokollWriter/HTMLProtokollWriter.cs b/XMLParser.Functions/ProtokollWriter/HTMLProtokollWriter.cs new file mode 100644 index 0000000..652c492 --- /dev/null +++ b/XMLParser.Functions/ProtokollWriter/HTMLProtokollWriter.cs @@ -0,0 +1,74 @@ +using System.IO; +using System.Collections.Generic; +using XMLParser.Contract; +using XMLParser.Model; +using System; +using System.Text; + +namespace XMLParser.Functions.ProtokollWriter +{ + public class HTMLProtkollWriter : IProtokollWriter + { + FileStream handle = null; + Dictionary headertitles = null; + public HTMLProtkollWriter(Dictionary headertitles) + { + handle = File.Create("./data.html"); + this.headertitles = headertitles; + } + internal void writeToFile(string content) + { + content += Environment.NewLine; + byte[] bytes = Encoding.UTF8.GetBytes(content); + handle.Write(bytes,0,bytes.Length); + handle.Flush(); + } + + void writeHTMLHeader() + { + writeToFile(""); + writeToFile(""); + writeToFile(""); + writeToFile(""); + } + + void writeHTMLFooter() + { + writeToFile(""); + writeToFile(""); + } + + public void WriteEntry(Dictionary calculated, List inspektionenAmTag) + { + writeHTMLHeader(); + + writeToFile(""); + List avaibleHeaders = new List(); + string result = ""; + foreach(var s in calculated.Keys) + { + avaibleHeaders.Add(s); + result += ""; + } + result += ""; + + makeHeaderTitlesInHtml(avaibleHeaders); + writeToFile(result); + writeToFile("
"+calculated[s]+ "
"); + writeHTMLFooter(); + + } + + private void makeHeaderTitlesInHtml(List avaibleHeaders) + { + writeToFile(""); + foreach(ECalculatedResult s in avaibleHeaders) + { + writeToFile(""); + writeToFile(headertitles[s]); + writeToFile(""); + } + writeToFile(""); + } + } +} \ No newline at end of file diff --git a/XMLParser.Functions/UmsatzCalculator/Strassenumsatz.cs b/XMLParser.Functions/UmsatzCalculator/Strassenumsatz.cs index c91504f..5855700 100644 --- a/XMLParser.Functions/UmsatzCalculator/Strassenumsatz.cs +++ b/XMLParser.Functions/UmsatzCalculator/Strassenumsatz.cs @@ -6,11 +6,11 @@ namespace XMLParser.Functions.UmsatzCalculator { public class StrassenUmsatz : IUmsatzCalculator { - public void Calculate(ICSVWriter csvWriter, List objekte) + public void Calculate(IProtokollWriter protokollWriter, List objekte) { Dictionary d = XMLParser.Functions.Calculate.CalculateStreet(objekte); - csvWriter.WriteEntry(d,objekte); + protokollWriter.WriteEntry(d,objekte); } } } diff --git a/XMLParser.Functions/UmsatzCalculator/Tagesumsatz.cs b/XMLParser.Functions/UmsatzCalculator/Tagesumsatz.cs index 3488f1f..3dfa6d7 100644 --- a/XMLParser.Functions/UmsatzCalculator/Tagesumsatz.cs +++ b/XMLParser.Functions/UmsatzCalculator/Tagesumsatz.cs @@ -9,7 +9,7 @@ namespace XMLParser.Functions.UmsatzCalculator { public class TagesUmsatz : IUmsatzCalculator { - public void Calculate(ICSVWriter csvWriter, List objekte) + public void Calculate(IProtokollWriter protokollWriter, List objekte) { DirectoryInfo info = new DirectoryInfo("./"); FileInfo[] daten = info.GetFiles("*.xml"); @@ -24,7 +24,7 @@ namespace XMLParser.Functions.UmsatzCalculator foreach(string datum in datums) { List InspektionenAmTag = objekte.FindAll(x => x.Inspektionsdaten.OptischeInspektion.Inspektionsdatum.Equals(datum)); Dictionary s = XMLParser.Functions.Calculate.CalculateDay(InspektionenAmTag); - csvWriter.WriteEntry(s,InspektionenAmTag); + protokollWriter.WriteEntry(s,InspektionenAmTag); Console.WriteLine("Umsatz am : "+datum + " " + s[ECalculatedResult.GESAMTUMSATZ]); gesamt +=s[ECalculatedResult.GESAMTUMSATZ]; //if(datum.Equals("05.08.2021")) Debugger.Break(); diff --git a/XMLProgramm/Program.cs b/XMLProgramm/Program.cs index 00f020d..27e3c49 100644 --- a/XMLProgramm/Program.cs +++ b/XMLProgramm/Program.cs @@ -14,13 +14,25 @@ namespace XMLProgramm { static void Main(string[] args) { - - ICSVWriter csvWriter = new StrassenUmsatzCSVWriter(); - + Dictionary headertitles = new Dictionary(); + headertitles.Add(ECalculatedResult.DN300DN400, "DN300 - DN400 [m]"); + headertitles.Add(ECalculatedResult.DN450DN600, "DN450 - DN600 [m]"); + headertitles.Add(ECalculatedResult.DN650DN800, "DN650 - DN800 [m]"); + headertitles.Add(ECalculatedResult.DN850DN1000,"DN850 - DN1000 [m]"); + headertitles.Add(ECalculatedResult.GESAMTHAUPTKANAL,"Hauptkanal Gesamt [m]"); + headertitles.Add(ECalculatedResult.STRASSENABLAUFANZAHL, "Straßenablauf [Stk]"); + headertitles.Add(ECalculatedResult.STRASSENABLAUFLAENGEZULAGEMETER,"Straßenablauf > 5m [m]"); + headertitles.Add(ECalculatedResult.SONSTIGEANZAHL,"Anschlussleitung [Stk]"); + headertitles.Add(ECalculatedResult.SONSTIGELAENGEZULAGEMETER,"Anschlussleitung > 7m [m]"); + headertitles.Add(ECalculatedResult.DN150DN250, "DN150 - DN250 [m]"); + + + //ICSVWriter csvWriter = new StrassenUmsatzCSVWriter(); + IProtokollWriter protokollWriter = new XMLParser.Functions.ProtokollWriter.HTMLProtkollWriter(headertitles); XMLParse ser = new XMLParse("2021-07-29_KR_H_L_Oldenburg_Eichenstraße.xml"); IUmsatzCalculator calculator = new XMLParser.Functions.UmsatzCalculator.StrassenUmsatz(); - calculator.Calculate(csvWriter,ser.KanalObjekte); + calculator.Calculate(protokollWriter,ser.KanalObjekte); } } }