diff --git a/Beispieldaten/XML2013.xml b/Beispieldaten/XML2013.xml
new file mode 100644
index 0000000..3cca760
--- /dev/null
+++ b/Beispieldaten/XML2013.xml
@@ -0,0 +1,652 @@
+
+
+ 2013-02
+
+
+ 0056
+ 0056
+ 0056
+ 26506
+ Varel
+ komunal
+
+
+ 123
+ 123
+ 123
+ 123
+ 123
+ 123
+ 123
+ 1
+ 123
+
+
+
+ 1
+ 2023-04-19
+
+
+ STA01
+ 1
+
+
+ 1
+ 1
+ 1
+ 0
+ 0
+
+
+ 5
+ 2022-02-04
+
+
+
+ STA01
+
+ 01440146
+ 1
+ KS
+
+ 0
+ 01440146
+ 0
+ 01440147
+ 0
+ W
+
+ 0
+ 0
+ 200
+ 200
+
+
+ 1
+ 42.29
+
+
+
+ 6302
+ ERLENSTRAßE
+
+
+ L
+
+
+
+
+ 440835.938
+ 5917432.636
+ -0.060
+ SMP
+
+
+ 440859.955
+ 5917467.421
+ -0.110
+ SMP
+
+
+
+
+
+
+
+ 01440147
+ 1
+ KS
+
+ 0
+ 01440147
+ 0
+ 01440148
+ 0
+ W
+
+ 0
+ 0
+ 200
+ 200
+
+
+ 1
+ 43.24
+
+
+
+ 6302
+ ERLENSTRAßE
+
+
+ L
+
+
+
+
+ 440859.955
+ 5917467.421
+ -0.110
+ SMP
+
+
+ 440884.457
+ 5917503.030
+ -0.230
+ SMP
+
+
+
+
+
+
+
+ 01440148
+ 1
+ KS
+
+ 0
+ 01440148
+ 0
+ 01440149
+ 0
+ W
+
+ 0
+ 0
+ 200
+ 200
+
+
+ 1
+ 43.24
+
+
+
+ 6302
+ ERLENSTRAßE
+
+
+ L
+
+
+
+
+ 440884.457
+ 5917503.030
+ -0.230
+ SMP
+
+
+ 440910.365
+ 5917537.631
+ -0.360
+ SMP
+
+
+
+
+
+
+
+ 01440149
+ 1
+ KS
+
+ 0
+ 01440149
+ 0
+ 01440010
+ 0
+ W
+
+ 0
+ 0
+ 200
+ 200
+
+
+ 1
+ 38.60
+
+
+
+ 6302
+ ERLENSTRAßE
+
+
+ L
+
+
+
+
+ 440910.365
+ 5917537.631
+ -0.360
+ SMP
+
+
+ 440935.848
+ 5917566.607
+ -0.460
+ SMP
+
+
+
+
+
+
+
+ 01440150
+ 1
+ KS
+
+ 0
+ 01440150
+ 0
+ 01440148
+ 0
+ 0.740
+ W
+
+ 0
+ 0
+ 200
+ 200
+
+
+ 1
+ 37.94
+
+
+
+ 6302
+ ERLENSTRAßE
+
+
+ L
+
+
+
+
+ 440916.606
+ 5917482.916
+ 0.920
+ SMP
+
+
+ 440884.457
+ 5917503.030
+ -0.230
+ SMP
+
+
+
+
+
+
+
+ 01440152
+ 1
+ KS
+
+ 0
+ 01440152
+ 0
+ 01440153
+ 0
+ W
+
+ 0
+ 0
+ 200
+ 200
+
+
+ 1
+ 35.81
+
+
+
+ 6302
+ ERLENSTRAßE
+
+
+ L
+
+
+
+
+ 440828.335
+ 5917544.789
+ 0.990
+ SMP
+
+
+ 440857.054
+ 5917523.416
+ 0.760
+ SMP
+
+
+
+
+
+
+
+ 01440153
+ 1
+ KS
+
+ 0
+ 01440153
+ 0
+ 01440148
+ 0
+ 0.600
+ W
+
+ 0
+ 0
+ 200
+ 200
+
+
+ 1
+ 34.17
+
+
+
+ 6302
+ ERLENSTRAßE
+
+
+ L
+
+
+
+
+ 440857.054
+ 5917523.416
+ 0.760
+ SMP
+
+
+ 440884.457
+ 5917503.030
+ -0.230
+ SMP
+
+
+
+
+
+
+
+ 01440010
+ 2
+ 1972
+ KS
+
+ 0
+
+ 1
+
+
+
+ 6310
+ SIEDLUNGSWEG
+
+
+ 01440010
+ P
+
+
+
+ 440935.848
+ 5917566.607
+ -0.460
+ SMP
+
+
+ 2.860
+ DMP
+
+
+
+
+
+
+ 01440146
+ 2
+ KS
+
+ 0
+
+ 1
+
+
+
+ 6301
+ AHORNSTRAßE
+
+
+ 01440146
+ P
+
+
+
+ 440835.938
+ 5917432.636
+ -0.060
+ SMP
+
+
+ 2.580
+ DMP
+
+
+
+
+
+
+ 01440147
+ 2
+ KS
+
+ 0
+
+ 1
+
+
+
+ 6302
+ ERLENSTRAßE
+
+
+ 01440147
+ P
+
+
+
+ 440859.955
+ 5917467.421
+ -0.110
+ SMP
+
+
+ 2.490
+ DMP
+
+
+
+
+
+
+ 01440148
+ 2
+ KS
+
+ 0
+
+ 1
+
+
+
+ 6302
+ ERLENSTRAßE
+
+
+ 01440148
+ P
+
+
+
+ 440884.457
+ 5917503.030
+ -0.230
+ SMP
+
+
+ 2.490
+ DMP
+
+
+
+
+
+
+ 01440149
+ 2
+ KS
+
+ 0
+
+ 1
+
+
+
+ 6302
+ ERLENSTRAßE
+
+
+ 01440149
+ P
+
+
+
+ 440910.365
+ 5917537.631
+ -0.360
+ SMP
+
+
+ 2.630
+ DMP
+
+
+
+
+
+
+ 01440150
+ 2
+ KS
+
+ 0
+
+ 1
+
+
+
+ 6302
+ ERLENSTRAßE
+
+
+ 01440150
+ P
+
+
+
+ 440916.606
+ 5917482.916
+ 0.920
+ SMP
+
+
+ 2.770
+ DMP
+
+
+
+
+
+
+ 01440152
+ 2
+ KS
+
+ 0
+
+ 1
+
+
+
+ 6302
+ ERLENSTRAßE
+
+
+ 01440152
+ P
+
+
+
+ 440828.335
+ 5917544.789
+ 0.990
+ SMP
+
+
+ 2.100
+ DMP
+
+
+
+
+
+
+ 01440153
+ 2
+ KS
+
+ 0
+
+ 1
+
+
+
+ 6302
+ ERLENSTRAßE
+
+
+ 01440153
+ P
+
+
+
+ 440857.054
+ 5917523.416
+ 0.760
+ SMP
+
+
+ 2.260
+ DMP
+
+
+
+
+
+
+
+
diff --git a/StammGenerator/Commands/ProjectExportCommand.cs b/StammGenerator/Commands/ProjectExportCommand.cs
index 83f9381..743532c 100644
--- a/StammGenerator/Commands/ProjectExportCommand.cs
+++ b/StammGenerator/Commands/ProjectExportCommand.cs
@@ -15,34 +15,35 @@ namespace StammGenerator.Commands
{
internal class ProjectExportCommand : AsyncCommandBase
{
- private readonly IActualState _actualState;
+ private readonly ProjektListViewModel _projektListViewModel;
+ //private Projekt _selectedProjekt;
private readonly IHaltungDataService _haltungDataService;
private readonly ISchachtDataService _schachtDataService;
- private readonly IProjektDataService _projektDataService;
+
- public ProjectExportCommand(IActualState actualState, IHaltungDataService haltungDataService, ISchachtDataService schachtDataService, IProjektDataService projektDataService)
+ public ProjectExportCommand(ProjektListViewModel projektListViewModel, IHaltungDataService haltungDataService, ISchachtDataService schachtDataService)
{
- _actualState = actualState;
+ _projektListViewModel = projektListViewModel;
_haltungDataService = haltungDataService;
_schachtDataService = schachtDataService;
- _projektDataService = projektDataService;
+
}
public override async Task ExecuteAsync(object? parameter)
{
- Projekt prj = await _projektDataService.Get(_actualState.ProjektID);
-
+ if (_projektListViewModel.SelectedProjekt == null) return;
+ Projekt _selectedProjekt = _projektListViewModel.SelectedProjekt;
try
{
- IExport export = ExporterFactory.Export(prj.ExportType);
- IEnumerable haltungen = await _haltungDataService.GetAllByProjekt(prj);
- IEnumerable schaechte = await _schachtDataService.GetAllByProjekt(prj);
+ IExport export = ExporterFactory.Export(_selectedProjekt.ExportType);
+ IEnumerable haltungen = await _haltungDataService.GetAllByProjekt(_selectedProjekt);
+ IEnumerable schaechte = await _schachtDataService.GetAllByProjekt(_selectedProjekt);
- await export.Export(_actualState.ProjektID.ToString(), prj.Kodierungssystem, haltungen.ToList(), schaechte.ToList());
+ await export.Export(_selectedProjekt.Id.ToString(), _selectedProjekt.Kodierungssystem, haltungen.ToList(), schaechte.ToList());
}
catch(NotImplementedException)
{
- MessageBoxResult result = MessageBox.Show(string.Format("Schnittstelle Export format: {0} ist nicht Implementiert", prj.ExportType), "Fehlende Implementation", MessageBoxButton.OK, MessageBoxImage.Exclamation);
+ MessageBoxResult result = MessageBox.Show(string.Format("Schnittstelle Export format: {0} ist nicht Implementiert", _selectedProjekt.ExportType), "Fehlende Implementation", MessageBoxButton.OK, MessageBoxImage.Exclamation);
}
}
}
diff --git a/StammGenerator/HostBuilders/AddViewModelsHostBuilderExtensions.cs b/StammGenerator/HostBuilders/AddViewModelsHostBuilderExtensions.cs
index 19981b4..cb3b6f8 100644
--- a/StammGenerator/HostBuilders/AddViewModelsHostBuilderExtensions.cs
+++ b/StammGenerator/HostBuilders/AddViewModelsHostBuilderExtensions.cs
@@ -86,11 +86,9 @@ namespace StammGenerator.HostBuilders
{
return () => new ProjektEditViewModel(
services.GetRequiredService(),
- services.GetRequiredService(),
- services.GetRequiredService(),
services.GetRequiredService(),
- services.GetRequiredService>(),
- services.GetRequiredService>()
+ services.GetRequiredService>()
+
);
});
@@ -98,8 +96,11 @@ namespace StammGenerator.HostBuilders
{
return () => new ProjektListViewModel(
services.GetRequiredService(),
+ services.GetRequiredService(),
+ services.GetRequiredService(),
+ services.GetRequiredService(),
services.GetRequiredService>(),
- services.GetRequiredService()
+ services.GetRequiredService>()
);
});
#endregion
diff --git a/StammGenerator/ViewModel/Projekt/ProjektEditViewModel.cs b/StammGenerator/ViewModel/Projekt/ProjektEditViewModel.cs
index 43f0851..2d7f103 100644
--- a/StammGenerator/ViewModel/Projekt/ProjektEditViewModel.cs
+++ b/StammGenerator/ViewModel/Projekt/ProjektEditViewModel.cs
@@ -17,8 +17,7 @@ namespace StammGenerator.ViewModel
public ProjektSettingsViewModel ProjektSettingsViewModel { get; set; }
public ICommand Speichern { get; set; }
- public ICommand SchachtImportCommand { get; set; }
- public ICommand DatenExportCommand { get; set; }
+
public string ProjektName
{
@@ -69,7 +68,7 @@ namespace StammGenerator.ViewModel
}
}
- public ProjektEditViewModel(IProjektDataService dataService,IHaltungDataService haltungDataService, ISchachtDataService schachtDataService, IActualState actualState, IRenavigator renavigator, IRenavigator navigatetoImport)
+ public ProjektEditViewModel(IProjektDataService dataService, IActualState actualState, IRenavigator renavigator)
{
_dataService = dataService;
_renavigator = renavigator;
@@ -83,12 +82,7 @@ namespace StammGenerator.ViewModel
LoadProjekt();
- SchachtImportCommand = new RelayCommand((x) =>
- {
- navigatetoImport.Renavigate();
- });
-
- DatenExportCommand = new ProjectExportCommand(actualState, haltungDataService, schachtDataService, dataService);
+
}
diff --git a/StammGenerator/ViewModel/Projekt/ProjektListViewModel.cs b/StammGenerator/ViewModel/Projekt/ProjektListViewModel.cs
index f658573..80992a7 100644
--- a/StammGenerator/ViewModel/Projekt/ProjektListViewModel.cs
+++ b/StammGenerator/ViewModel/Projekt/ProjektListViewModel.cs
@@ -1,4 +1,5 @@
-using SewerStammGen.Shared.Contracts;
+using SewerStammGen.DAL.Services.PostgresqlData;
+using SewerStammGen.Shared.Contracts;
using SewerStammGen.Shared.Domain;
using StammGenerator.Commands;
using StammGenerator.Interface;
@@ -22,8 +23,9 @@ namespace StammGenerator.ViewModel
public ICommand EditCommand { get; set; }
private Projekt? _selectedProjekt;
+ public ICommand SchachtImportCommand { get; set; }
+ public ICommand DatenExportCommand { get; set; }
-
public Projekt? SelectedProjekt
{
@@ -39,7 +41,7 @@ namespace StammGenerator.ViewModel
}
}
- public ProjektListViewModel(IProjektDataService generic, IRenavigator renavigator,IActualState actualState)
+ public ProjektListViewModel(IProjektDataService generic, IHaltungDataService haltungDataService, ISchachtDataService schachtDataService, IActualState actualState, IRenavigator renavigator, IRenavigator navigatetoImport)
{
_projekte = new ObservableCollection();
if (generic == null) throw new ArgumentNullException(nameof(generic));
@@ -50,6 +52,12 @@ namespace StammGenerator.ViewModel
EditCommand = new ProjektEditCommand(generic, actualState, renavigator, this);
LoadProjekte();
+
+ SchachtImportCommand = new RelayCommand((x) =>
+ {
+ navigatetoImport.Renavigate();
+ });
+ DatenExportCommand = new ProjectExportCommand(this, haltungDataService, schachtDataService);
}
private async void LoadProjekte()
diff --git a/StammGenerator/Views/Projekt/ProjektEditView.xaml b/StammGenerator/Views/Projekt/ProjektEditView.xaml
index 0ac5aaf..bdab17b 100644
--- a/StammGenerator/Views/Projekt/ProjektEditView.xaml
+++ b/StammGenerator/Views/Projekt/ProjektEditView.xaml
@@ -39,8 +39,6 @@
-
-
diff --git a/StammGenerator/Views/Projekt/ProjektListView.xaml b/StammGenerator/Views/Projekt/ProjektListView.xaml
index 1057eaf..77352a1 100644
--- a/StammGenerator/Views/Projekt/ProjektListView.xaml
+++ b/StammGenerator/Views/Projekt/ProjektListView.xaml
@@ -16,9 +16,11 @@
-
-
-
+
+
+
+
+
diff --git a/WWTech_KanalSchnittstelle/Exporter/XML/XML2006.cs b/WWTech_KanalSchnittstelle/Exporter/XML/XML2006.cs
new file mode 100644
index 0000000..2354aef
--- /dev/null
+++ b/WWTech_KanalSchnittstelle/Exporter/XML/XML2006.cs
@@ -0,0 +1,143 @@
+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 _schaechte;
+ private List _haltungen;
+ public async Task Export(string projektname, EKodierungssystem kodierungssystem, List haltungen, List 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;
+ }
+ }
+}
diff --git a/WWTech_KanalSchnittstelleTests/Exporter/XML/XML2006Tests.cs b/WWTech_KanalSchnittstelleTests/Exporter/XML/XML2006Tests.cs
new file mode 100644
index 0000000..c068c52
--- /dev/null
+++ b/WWTech_KanalSchnittstelleTests/Exporter/XML/XML2006Tests.cs
@@ -0,0 +1,42 @@
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using WWTech_KanalSchnittstelle.Exporter.XML;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using SewerStammGen.Shared.Domain;
+using SewerStammGen.Shared.Enum;
+
+namespace WWTech_KanalSchnittstelle.Exporter.XML.Tests
+{
+ [TestClass()]
+ public class XML2006Tests
+ {
+ [TestMethod()]
+ public void ExportTest()
+ {
+ List schaechte = new List()
+ {
+ new Schacht()
+ {
+ Objektbezeichnung = "15456498",
+ SohlHoehe = 1457,
+ DeckelHoehe = 1454,
+ DeckelRechtsWert = 14,
+ DeckelHochWert = 14785,
+ },
+ new Schacht()
+ {
+ Objektbezeichnung = "18656498",
+ SohlHoehe = 145,
+ DeckelHoehe = 14,
+ DeckelRechtsWert = 28,
+ DeckelHochWert = 14,
+ }
+ };
+ XML2006 xmloutput = new XML2006();
+ xmloutput.Export("test.xml", EKodierungssystem.EN13508_2_2011, new List(), schaechte);
+ }
+ }
+}
\ No newline at end of file