Files
SewerGenerator/WWTech_KanalSchnittstelle/Exporter/XML/XML2006.cs
2023-04-24 23:23:35 +02:00

144 lines
5.9 KiB
C#

using Microsoft.Win32.SafeHandles;
using SewerStammGen.Shared.Contracts;
using SewerStammGen.Shared.Domain;
using SewerStammGen.Shared.Enum;
using Shared.Contracts;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace WWTech_KanalSchnittstelle.Exporter.XML
{
public class XML2006 : IExport
{
private XmlDocument _file;
private List<Schacht> _schaechte;
private List<Kanal> _haltungen;
public async Task<bool> Export(string projektname, EKodierungssystem kodierungssystem, List<Kanal> haltungen, List<Schacht> schaechte)
{
_schaechte = schaechte;
_haltungen = haltungen;
_file = new XmlDocument();
XmlDeclaration newChild = _file.CreateXmlDeclaration("1.0", "ISO-8859-1", "yes");
_file.AppendChild(newChild);
XmlElement xmlElement = CreateElementFor("Identifikation", _file);
xmlElement.SetAttribute("xmlns", "http://www.ofd-hannover.la/Identifikation");
XmlElement xmlElement2 = CreateElementFor("Version", xmlElement);
xmlElement2.InnerText = "2-3";
DoAdmindata(xmlElement);
DoCollectives(xmlElement);
_file.Save("test.xml");
return true;
}
private XmlElement CreateElementFor(string name, XmlNode parentElement)
{
XmlElement xmlElement = _file.CreateElement(name);
parentElement.AppendChild(xmlElement);
return xmlElement;
}
private void DoAdmindata(XmlElement idElement)
{
XmlElement parentElement = CreateElementFor("Admindaten", idElement);
}
private void DoCollectives(XmlElement idElement)
{
XmlElement dataCollectiveElement = DoRow(idElement, "Datenkollektive");
DoCollectives1Labels(dataCollectiveElement);
DoCollectives2Base(dataCollectiveElement);
}
private void DoCollectives2Base(XmlElement dataCollectiveElement)
{
XmlElement parentElement = DoRow(dataCollectiveElement, "Stammdatenkollektiv");
foreach(Schacht schacht in _schaechte)
{
XmlElement xmlElement = DoSchachtRow(schacht,parentElement, "AbwassertechnischeAnlage");
}
}
private XmlElement DoSchachtRow(Schacht schacht, XmlElement parentElement, string originTableName)
{
XmlElement xmlElement = null;
xmlElement = _file.CreateElement(originTableName);
parentElement.AppendChild(xmlElement);
DoRowValue(xmlElement, "Objektbezeichnung", schacht.Objektbezeichnung);
DoRowValue(xmlElement, "Objektart", "2");
DoRowValue(xmlElement, "Entwaesserungsart", schacht.Entwaesserung == EEntwaeserung.Regenwasser ? "KR" : schacht.Entwaesserung == EEntwaeserung.Schmutzwasser ? "KS" : "KM");
XmlElement xmlElement1 = CreateElementFor("Knoten", xmlElement);
DoRowValue(xmlElement1, "KnotenTyp", "0");
XmlElement xmlElement2 = CreateElementFor("Schacht", xmlElement1);
DoRowValue(xmlElement2, "SchachtFunktion", "1");
XmlElement GeometrieElement = CreateElementFor("Geometrie", xmlElement);
XmlElement KnotenElement = CreateElementFor("Knoten", GeometrieElement);
XmlElement PunktElement = CreateElementFor("Punkt", KnotenElement);
DoRowValue(PunktElement, "Rechtswert", schacht.SohlRechtsWert.ToString());
DoRowValue(PunktElement, "Hochwert", schacht.SohlHochWert.ToString());
DoRowValue(PunktElement, "Punkthoehe", schacht.SohlHoehe.ToString());
DoRowValue(PunktElement, "PunktattributAbwasser", "SMP");
PunktElement = CreateElementFor("Punkt", KnotenElement);
DoRowValue(PunktElement, "Rechtswert", schacht.DeckelRechtsWert.ToString());
DoRowValue(PunktElement, "Hochwert", schacht.DeckelHochWert.ToString());
DoRowValue(PunktElement, "Punkthoehe", schacht.DeckelHoehe.ToString());
DoRowValue(PunktElement, "PunktattributAbwasser", "DMP");
return xmlElement;
}
private XmlElement DoHaltungRow(Kanal haltung, XmlElement parentElement, string orginalTableName)
{
XmlElement xmlElement = null;
xmlElement = _file.CreateElement(orginalTableName);
parentElement.AppendChild(xmlElement);
return xmlElement;
}
private XmlElement DoRow(XmlElement parentElement, string originTableName)
{
XmlElement xmlElement = null;
xmlElement = _file.CreateElement(originTableName);
parentElement.AppendChild(xmlElement);
return xmlElement;
}
private void DoCollectives1Labels(XmlElement dataCollectiveElement)
{
XmlElement parentElement = CreateElementFor("Kennungen", dataCollectiveElement);
XmlElement xmlElement = CreateElementFor("Kollektiv", parentElement);
DoRowValue(xmlElement, "Kennung", "STA01");
DoRowValue(xmlElement, "Kollektivart", "1");
XmlElement parentElement2 = CreateElementFor("Kollektiveigenschaft", xmlElement);
DoRow(parentElement2, "Stammdaten");
DoRow(parentElement2, "Zustandsdaten");
DoRow(parentElement2, "Hydraulikdaten");
DoRow(parentElement2, "Betriebsdaten");
DoRowValue(xmlElement, "Regelwerk", "2");
DoRowValue(xmlElement, "Bearbeitungsstand", "2");
DoRowValue(xmlElement, "Kommentar", "test");
}
private XmlElement DoRowValue(XmlElement rowElement, string originColName, string value)
{
XmlElement xmlElement = CreateElementFor(originColName, rowElement);
if(value != "")
{
xmlElement.InnerText = value;
}
return xmlElement;
}
}
}