Kandis exporter um parametern erweitert

This commit is contained in:
2023-04-24 14:06:19 +02:00
parent 4f99a38990
commit 8bfe685072
3 changed files with 56 additions and 6 deletions

View File

@@ -1,4 +1,6 @@
using System; using SewerStammGen.Shared.Enum;
using System;
using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.Linq; using System.Linq;
@@ -9,30 +11,76 @@ namespace WWTech_KanalSchnittstelle.Exporter.Kandis
{ {
public static class ExporterHelper public static class ExporterHelper
{ {
public static Dictionary<string, int> Exporters = new Dictionary<string, int>() public static Dictionary<string, int> LineSize = new Dictionary<string, int>()
{ {
{ "KANSCH4.0",557 }, { "KANSCH4.0",557 },
{ "KANSCH6.0",2041 }, { "KANSCH6.0",2041 },
{ "KANHAL4.0",530 }, { "KANHAL4.0",530 },
{ "KANHAL6.0",2167 } { "KANHAL6.0",2167 }
}; };
} }
internal abstract class KANDIS_Exporter : IDisposable internal abstract class KANDIS_Exporter : IDisposable
{ {
public enum kType
{
HALTUNG,
SCHACHT
}
private StreamWriter sw; private StreamWriter sw;
char[] zeile; char[] zeile;
protected string Zeile => new string(zeile); protected string Zeile => new string(zeile);
public KANDIS_Exporter(string filename, int maxzeilen) public KANDIS_Exporter(string filename, EExportType exportType, kType kType)
{ {
string version = string.Empty;
switch (kType)
{
case kType.HALTUNG:
{
switch (exportType)
{
case EExportType.KANDIS4: version = "KANHAL4.0"; break;
case EExportType.KANDIS6: version = "KANHAL6.0"; break;
default: throw new NotImplementedException();
}
}
break;
case kType.SCHACHT:
{
switch (exportType)
{
case EExportType.KANDIS4: version = "KANSCH4.0"; break;
case EExportType.KANDIS6: version = "KANSCH6.0"; break;
default: throw new NotImplementedException();
}
}
break;
}
if (!ExporterHelper.LineSize.ContainsKey(version))
{
throw new NotImplementedException();
}
int maxzeilen = ExporterHelper.LineSize[version];
sw = new StreamWriter(filename, append: false, Encoding.GetEncoding("ISO-8859-1")); sw = new StreamWriter(filename, append: false, Encoding.GetEncoding("ISO-8859-1"));
zeile = new char[1476]; WriteHeader(version);
zeile = new char[maxzeilen];
ClearLine(); ClearLine();
} }
private void WriteHeader(string header)
{
sw.WriteLine(header);
sw.Flush();
}
private void ClearLine() private void ClearLine()
{ {
for (int i = 0; i < zeile.Length; i++) for (int i = 0; i < zeile.Length; i++)

View File

@@ -1,4 +1,5 @@
using SewerStammGen.Shared.Domain; using SewerStammGen.Shared.Domain;
using SewerStammGen.Shared.Enum;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@@ -9,7 +10,7 @@ namespace WWTech_KanalSchnittstelle.Exporter.Kandis
{ {
internal class KANDIS_HALTUNG60 : KANDIS_Exporter internal class KANDIS_HALTUNG60 : KANDIS_Exporter
{ {
public KANDIS_HALTUNG60(string filename, List<Kanal> kanaele) : base(filename+".hal", ExporterHelper.Exporters["KANHAL6.0"]) public KANDIS_HALTUNG60(string filename, List<Kanal> kanaele) : base(filename+".hal", EExportType.KANDIS6, kType.HALTUNG)
{ {
foreach(Kanal haltung in kanaele) foreach(Kanal haltung in kanaele)
{ {

View File

@@ -1,10 +1,11 @@
using SewerStammGen.Shared.Domain; using SewerStammGen.Shared.Domain;
using SewerStammGen.Shared.Enum;
namespace WWTech_KanalSchnittstelle.Exporter.Kandis namespace WWTech_KanalSchnittstelle.Exporter.Kandis
{ {
internal class KANDIS_SCHACHT60 : KANDIS_Exporter internal class KANDIS_SCHACHT60 : KANDIS_Exporter
{ {
public KANDIS_SCHACHT60(string filename,List<Schacht> schaechte) : base(filename+".sch", ExporterHelper.Exporters["KANSCH6.0"]) public KANDIS_SCHACHT60(string filename,List<Schacht> schaechte) : base(filename+".sch", EExportType.KANDIS6, kType.SCHACHT)
{ {
foreach(Schacht schacht in schaechte) foreach(Schacht schacht in schaechte)