diff --git a/Schnittstelle/Import/XML/v2013/Model/Geometriedaten.cs b/Schnittstelle/Import/XML/v2013/Model/Geometriedaten.cs index 76a778d..3011ad0 100644 --- a/Schnittstelle/Import/XML/v2013/Model/Geometriedaten.cs +++ b/Schnittstelle/Import/XML/v2013/Model/Geometriedaten.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Text; namespace Schnittstelle.Import.XML.v2013.Model { @@ -6,6 +7,10 @@ namespace Schnittstelle.Import.XML.v2013.Model { List kanten; + private Geometriedatenknoten knoten; + + public Geometriedatenknoten Knoten { get => knoten; set => knoten = value; } + public List Kanten { get @@ -18,4 +23,24 @@ namespace Schnittstelle.Import.XML.v2013.Model } } } + + public class Geometriedatenknoten + { + private List punkt = new List(); + + public List Punkt { get => punkt; set => punkt = value; } + } + + public class Punkt + { + private decimal rechtswert; + private decimal hochwert; + private decimal punkthoehe; + private string punktattributabwasser; + + public decimal Rechtswert { get => rechtswert; set => rechtswert = value; } + public decimal Hochwert { get => hochwert; set => hochwert = value; } + public decimal Punkthoehe { get => punkthoehe; set => punkthoehe = value; } + public string PunktattributeAbwasser { get => punktattributabwasser; set => punktattributabwasser = value; } + } } diff --git a/Schnittstelle/Import/XML/v2013/Model/Kante.cs b/Schnittstelle/Import/XML/v2013/Model/Kante.cs index 613f414..c5980f1 100644 --- a/Schnittstelle/Import/XML/v2013/Model/Kante.cs +++ b/Schnittstelle/Import/XML/v2013/Model/Kante.cs @@ -4,12 +4,14 @@ namespace Schnittstelle.Import.XML.v2013.Model { decimal sohlhoeheZulauf; decimal sohlhoeheAblauf; + decimal laenge; Knoten? knotenZulauf; Knoten? knotenAblauf; int knotenAblaufTyp; int knotenZulaufTyp; bool isFiktiveLeitung = true; Profil profil; + private string material; public string knotenZulaufTemp; public string knotenAblaufTemp; @@ -22,5 +24,7 @@ namespace Schnittstelle.Import.XML.v2013.Model public int KnotenZulaufTyp { get => knotenZulaufTyp; set => knotenZulaufTyp = value; } public bool IsFiktiveLeitung { get => isFiktiveLeitung; set => isFiktiveLeitung = value; } public Profil Profil { get => profil; set => profil = value; } + public decimal Laenge { get => laenge; set => laenge = value; } + public string Material { get => material; set => material = value; } } } diff --git a/Schnittstelle/Import/XML/v2013/XML2013.cs b/Schnittstelle/Import/XML/v2013/XML2013.cs index ba33dc0..7c00fb7 100644 --- a/Schnittstelle/Import/XML/v2013/XML2013.cs +++ b/Schnittstelle/Import/XML/v2013/XML2013.cs @@ -146,6 +146,7 @@ namespace Schnittstelle.Import.XML.v2013 result.Lage = new Lage(strassename, ortname); break; case "OptischeInspektion": result.OptischeInspektion.Add(parseOptischeInspektion(d)); break; + default: throw new NotImplementedException(d.Name); } } return result; @@ -439,6 +440,7 @@ namespace Schnittstelle.Import.XML.v2013 case "Kantentyp": result.Kantentyp = (EKantenTyp)Convert.ToInt32(d.InnerText); break; case "Entfernung": result.Entfernung = Convert.ToDecimal(d.InnerText.Replace('.', ',')); break; case "Fixierung": result.Fixierung = d.InnerText; break; + default: throw new NotImplementedException(d.Name); } } @@ -491,36 +493,171 @@ namespace Schnittstelle.Import.XML.v2013 private Geometrie parseGeometrie(XmlNode aktuell) { + Geometrie result = new Geometrie(); + foreach (XmlNode s in aktuell.ChildNodes) + { + switch (s.Name) + { + case "GeoObjekttyp": break; + case "Geometriedaten": + result.Geometriedaten = parseGeometrieDaten(s); + break; + case "GeoObjektart": break; + + default: throw new NotImplementedException(s.Name); + } + } + return result; + + } - return new Geometrie(); - //throw new NotImplementedException(); + private Geometriedaten parseGeometrieDaten(XmlNode aktuel) + { + Geometriedaten result = new Geometriedaten(); + foreach (XmlNode s in aktuel.ChildNodes) + { + switch (s.Name) + { + case "Knoten": + result.Knoten = parseGeometrieKnoten(s); + break; + case "Kanten": + parseGeometrieKanten(s); + break; + default: throw new NotImplementedException(s.Name); + } + } + + return result; + } + + private void parseGeometrieKanten(XmlNode aktuel) + { + foreach (XmlNode s in aktuel.ChildNodes) + { + switch (s.Name) + { + case "Kante": + parseGeometrieKante(s); + break; + default: throw new NotImplementedException(s.Name); + } + } + } + + private void parseGeometrieKante(XmlNode aktuel) + { + foreach (XmlNode s in aktuel.ChildNodes) + { + switch (s.Name) + { + case "Start": + parseGeometrieKanteStartEnde(s); + break; + case "Ende": + parseGeometrieKanteStartEnde(s); + break; + default: throw new NotImplementedException(s.Name); + } + } + } + private void parseGeometrieKanteStartEnde(XmlNode aktuel) + { + foreach (XmlNode s in aktuel.ChildNodes) + { + switch (s.Name) + { + case "Rechtswert": break; + case "Hochwert": break; + case "Punkthoehe": break; + case "PunktattributAbwasser": break; + default: throw new NotImplementedException(s.Name); + } + } + } + + private Geometriedatenknoten parseGeometrieKnoten(XmlNode aktuel) + { + Geometriedatenknoten result = new Geometriedatenknoten(); + foreach (XmlNode s in aktuel.ChildNodes) + { + switch (s.Name) + { + case "Punkt": + result.Punkt.Add(parseGeometrieKnotenPunkt(s)); + break; + default: throw new NotImplementedException(s.Name); + } + } + + return result; + } + + private Punkt parseGeometrieKnotenPunkt(XmlNode aktuel) + { + Punkt punkt = new Punkt(); + foreach (XmlNode s in aktuel.ChildNodes) + { + switch (s.Name) + { + case "Rechtswert": + punkt.Rechtswert = Convert.ToDecimal(s.InnerText.Replace('.', ',')); + break; + case "Hochwert": + punkt.Hochwert = Convert.ToDecimal(s.InnerText.Replace('.', ',')); + break; + case "Punkthoehe": + punkt.Punkthoehe = Convert.ToDecimal(s.InnerText.Replace('.', ',')); + break; + case "PunktattributAbwasser": + punkt.PunktattributeAbwasser = s.InnerText; + break; + default: throw new NotImplementedException(s.Name); + } + } + return punkt; } private Kante parseKante(XmlNode aktuell) { - /* - KantenTyp - KnotenZulauf - KnotenZulaufTyp - KnotenAblauf - KnotenAblaufTyp - SohlhoeheZulauf - SohlhoeheAblauf - Laenge - Material - Profil - Haltung - */ Kante result = new Kante(); foreach (XmlNode s in aktuell.ChildNodes) { switch (s.Name) { - case "KnotenZulauf": result.knotenZulaufTemp = s.InnerText; break; - case "KnotenAblauf": result.knotenAblaufTemp = s.InnerText; break; - case "Profil": result.Profil = getProfil(s); break; - + case "KnotenZulauf": + result.knotenZulaufTemp = s.InnerText; + break; + case "KnotenAblauf": + result.knotenAblaufTemp = s.InnerText; + break; + case "Profil": + result.Profil = getProfil(s); + break; + case "KantenTyp": + break; + case "KnotenZulaufTyp": + result.KnotenZulaufTyp = Convert.ToInt32(s.InnerText); + break; + case "KnotenAblaufTyp": + result.KnotenAblaufTyp = Convert.ToInt32(s.InnerText); + break; + case "SohlhoeheZulauf": + result.SohlhoeheZulauf = Convert.ToDecimal(s.InnerText.Replace('.',',')); + break; + case "SohlhoeheAblauf": + result.SohlhoeheAblauf = Convert.ToDecimal(s.InnerText.Replace('.',',')); + break; + case "Laenge": + result.Laenge = Convert.ToDecimal(s.InnerText); + break; + case "Material": + result.Material = s.InnerText; + break; + case "Haltung": + break; + default: throw new NotImplementedException(s.Name); } } return result; @@ -553,6 +690,7 @@ namespace Schnittstelle.Import.XML.v2013 case "KnotenTyp": result.KnotenTyp = (EKnotenTyp)Convert.ToInt32(s.InnerText); break; case "Anschlusspunkt": result.Anschlusspunkt = new Anschlusspunkt() { Punktkennung = s.InnerText }; break; case "Schacht": result.Schacht = parseSchacht(s); break; + default: throw new NotImplementedException(s.Name); } } @@ -567,7 +705,20 @@ namespace Schnittstelle.Import.XML.v2013 switch (n.Name) { case "SchachtFunktion": result.SchachtFunktion = (ESchachtFunktion)Convert.ToInt32(n.InnerText); break; - case "Schachttiefe": result.SchachtTiefe = Convert.ToDecimal(n.InnerText); break; + case "Schachttiefe": + result.SchachtTiefe = Convert.ToDecimal(n.InnerText); + Debugger.Break(); + break; + case "Einstieghilfe": break; + case "ArtEinstieghilfe": break; + case "MaterialSteighilfen": break; + case "AnzahlDeckel": break; + case "Abdeckung": break; + case "Aufbau": break; + case "UntereSchachtzone": break; + case "Unterteil": break; + case "AnzahlAnschluesse": break; + default: throw new NotImplementedException(n.Name); } } return result; diff --git a/Schnittstelle/Sanierung/Sanierungart.cs b/Schnittstelle/Sanierung/Sanierungart.cs index 87c9289..cc5c2d7 100644 --- a/Schnittstelle/Sanierung/Sanierungart.cs +++ b/Schnittstelle/Sanierung/Sanierungart.cs @@ -31,6 +31,8 @@ namespace Schnittstelle.Sanierung public Renovation() : base("Renovation") { Sanierungen.Add("BCA", new Tuple("Einmessen, Öffnen, Hut", 800)); + + } } }