Added echolot tool

This commit is contained in:
Daniel Schick 2025-06-15 13:58:33 +02:00
parent ba59b69f92
commit 8e5a5b2d62
10 changed files with 432 additions and 40 deletions

View File

@ -1,36 +1,72 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<configuration> <configuration>
<configSections> <configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net" />
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="bsmd.Tool.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/> <section name="bsmd.Tool.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup> </sectionGroup>
</configSections> </configSections>
<log4net> <log4net>
<root> <root>
<level value="DEBUG"/> <level value="DEBUG" />
<appender-ref ref="LogFileAppender"/> <appender-ref ref="LogFileAppender" />
</root> </root>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="log.bsmd.Tool.txt"/> <param name="File" value="log.bsmd.Tool.txt" />
<param name="AppendToFile" value="true"/> <param name="AppendToFile" value="true" />
<rollingStyle value="Size"/> <rollingStyle value="Size" />
<maxSizeRollBackups value="10"/> <maxSizeRollBackups value="10" />
<maximumFileSize value="10MB"/> <maximumFileSize value="10MB" />
<staticLogFileName value="true"/> <staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout"> <layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date [%thread] %-5level [%logger] - %message%newline"/> <param name="ConversionPattern" value="%date [%thread] %-5level [%logger] - %message%newline" />
</layout> </layout>
</appender> </appender>
</log4net> </log4net>
<startup> <startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup> </startup>
<userSettings> <runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<applicationSettings>
<bsmd.Tool.Properties.Settings> <bsmd.Tool.Properties.Settings>
<setting name="ConnectionString" serializeAs="String"> <setting name="ConnectionString" serializeAs="String">
<value>replace me!</value> <value>replace me!</value>
</setting> </setting>
<setting name="EcholotOutputFolder" serializeAs="String">
<value />
</setting>
<setting name="EcholotMaxThreads" serializeAs="String">
<value>4</value>
</setting>
<setting name="HISNORD_Folder" serializeAs="String">
<value>C:\temp\hisnord</value>
</setting>
<setting name="DBH_Folder" serializeAs="String">
<value>C:\temp\dbh</value>
</setting>
</bsmd.Tool.Properties.Settings> </bsmd.Tool.Properties.Settings>
</userSettings> </applicationSettings>
</configuration> </configuration>

224
bsmd.Tool/Echolot.cs Normal file
View File

@ -0,0 +1,224 @@
// Copyright (c) 2020- schick Informatik
// Description: The purpose of this tool is to evaluate files sent both through HIS-Nord and dbh
// to evaluate how many classes were sent at what time and by whom to the purpose of improved employee
// time planning
using ClosedXML.Excel;
using log4net;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace bsmd.Tool
{
internal static class Echolot
{
private static readonly ILog _log = LogManager.GetLogger(typeof(Echolot));
static readonly HashSet<string> ValidGroupingKeys = new HashSet<string>
{
"VISIT",
"TRANSIT",
"NOA_NOD",
"NOANOD",
"ATA",
"ATD",
"SEC",
"POBA",
"POBD",
"NAME",
"TIEFA",
"TIEFD",
"BKRA",
"BKRD",
"STAT",
"LADG",
"INFO",
"SERV",
"PRE72H",
"MDH",
"WAS",
"CREWA",
"PASA",
"BPOL",
"TOWA",
"TOWD",
"HAZA",
"HAZD",
"AGNT",
"STO",
"CREWD",
"PASD",
"WAS_RCPT"
};
static readonly HashSet<string> IgnoreGroupingKeys = new HashSet<string>
{
"VISIT",
"TRANSIT",
"ATA",
"ATD"
};
internal static void Evaluate(string outputFolder, int maxThreads)
{
DateTime executionTime = DateTime.Now;
#region first scan: dbh files
string inputFolder = Properties.Settings.Default.DBH_Folder;
var files = Directory.GetFiles(inputFolder, "*.xml");
var results = new ConcurrentBag<ResultRow>();
Parallel.ForEach(files, new ParallelOptions { MaxDegreeOfParallelism = maxThreads }, file =>
{
try
{
var doc = XDocument.Load(file);
// Look for a valid grouping key at the root level
var groupingElem = doc.Root.Elements()
.FirstOrDefault(x => ValidGroupingKeys.Contains(x.Name.LocalName) && !IgnoreGroupingKeys.Contains(x.Name.LocalName));
if (groupingElem == null)
{
_log.InfoFormat("skipping {0}", file);
return; // Skip file
}
var lastName = doc.Descendants("RPLastName").FirstOrDefault()?.Value?.Trim();
var firstName = doc.Descendants("RPFirstName").FirstOrDefault()?.Value?.Trim();
var timestampStr = doc.Descendants("Timestamp").FirstOrDefault()?.Value?.Trim();
DateTime timestamp = DateTime.Parse(timestampStr);
results.Add(new ResultRow
{
FirstName = firstName,
LastName = lastName,
Timestamp = timestamp,
WeekStart = GetWeekStart(timestamp, executionTime.DayOfWeek),
Provider = "DBH"
});
}
catch (Exception ex)
{
_log.Error(ex.ToString());
}
});
#endregion
#region second scan: his-nord files
var inputFolder2 = Properties.Settings.Default.HISNORD_Folder;
var files2 = Directory.GetFiles(inputFolder2, "*.xml");
Parallel.ForEach(files2, new ParallelOptions { MaxDegreeOfParallelism = maxThreads }, file =>
{
try
{
var doc = XDocument.Load(file);
var match = Regex.Match(file, @"-([A-Z0-9_]+)\.xml$", RegexOptions.None);
string key = "";
if (match.Success)
{
key = match.Groups[1].Value;
}
if((key.Length == 0) || IgnoreGroupingKeys.Contains(key))
{
_log.InfoFormat("skipping {0}", file);
return; // Skip file
}
var username = doc.Descendants("firstname").FirstOrDefault()?.Value?.Trim();
if(username == null)
{
_log.WarnFormat("Username not found in file {0}", file);
return;
}
var splitname = username.Split(' ');
var lastName = splitname[1].Trim();
var firstName = splitname[0].Trim();
DateTime timestamp = File.GetCreationTime(file);
results.Add(new ResultRow
{
FirstName = firstName,
LastName = lastName,
Timestamp = timestamp,
WeekStart = GetWeekStart(timestamp, executionTime.DayOfWeek),
Provider = "HIS-NORD"
});
}
catch (Exception ex)
{
_log.Error(ex.ToString());
}
});
#endregion
var grouped = results
.GroupBy(r => r.WeekStart)
.OrderBy(g => g.Key);
// Write Excel
string excelFile = Path.Combine(outputFolder, $"echolot_{executionTime:yyyyMMdd_HHmmss}.xlsx");
using (var workbook = new XLWorkbook())
{
foreach (var weekGroup in grouped)
{
var ws = workbook.Worksheets.Add(weekGroup.Key.ToString("yyyy-MM-dd"));
ws.Cell(1, 1).Value = "Firstname";
ws.Cell(1, 2).Value = "Lastname";
ws.Cell(1, 3).Value = "Count";
int row = 2;
var orderedGroups = weekGroup
.GroupBy(x => new { x.FirstName, x.LastName })
.OrderByDescending(g => g.Count()); // Use OrderBy for ascending
foreach (var nameGroup in orderedGroups)
{
ws.Cell(row, 1).Value = nameGroup.Key.FirstName;
ws.Cell(row, 2).Value = nameGroup.Key.LastName;
ws.Cell(row, 3).Value = nameGroup.Count();
row++;
}
}
workbook.SaveAs(excelFile);
}
}
static DateTime GetWeekStart(DateTime date, DayOfWeek weekStart)
{
int diff = (7 + (date.DayOfWeek - weekStart)) % 7;
return date.Date.AddDays(-1 * diff);
}
class ResultRow
{
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime Timestamp { get; set; }
public DateTime WeekStart { get; set; }
public string Provider { get; set; }
}
}
}

View File

@ -25,6 +25,18 @@ namespace bsmd.Tool
[Option("locodes", HelpText = "use this flag if you want to import locodes")] [Option("locodes", HelpText = "use this flag if you want to import locodes")]
public bool ImportLocodes { get; set; } public bool ImportLocodes { get; set; }
[Option("echolot", HelpText = "use this flag to run the echolot output file evaluation")]
public bool Echolot { get; set; }
[Option('i', "input_folder", HelpText = "Input folder")]
public string InputFolder { get; set; }
[Option('o', "output_folder", HelpText = "Output folder")]
public string OutputFolder { get; set; }
[Option("max_threads", HelpText = "Maximum amount of parallelism for folder parsing")]
public int? MaxThreads { get; set; }
[Option('s', "staledays", Default = 30, HelpText ="Delete files older than X days")] [Option('s', "staledays", Default = 30, HelpText ="Delete files older than X days")]
public int StaleDays { get; set; } public int StaleDays { get; set; }

View File

@ -1,4 +1,5 @@
using CommandLine; using bsmd.database;
using CommandLine;
using log4net; using log4net;
using System; using System;
@ -40,15 +41,24 @@ namespace bsmd.Tool
LocodeSQliteImport.Import(o.LocodeDB, o.LocodeCSV); LocodeSQliteImport.Import(o.LocodeDB, o.LocodeCSV);
} }
} }
if(o.Echolot)
{
string outputFolder = Properties.Settings.Default.EcholotOutputFolder;
if (!o.OutputFolder.IsNullOrEmpty())
outputFolder = o.OutputFolder;
int maxThreads = 2;
if (o.MaxThreads.HasValue) maxThreads = o.MaxThreads.Value;
Echolot.Evaluate(outputFolder, maxThreads);
}
}); });
} }
catch (Exception ex) catch (Exception ex)
{ {
log.Fatal(ex.ToString()); log.Fatal(ex.ToString());
Console.WriteLine(ex.Message);
result = 1; result = 1;
} }
Console.Read();
return result; return result;
} }
} }

View File

@ -12,7 +12,7 @@ namespace bsmd.Tool.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.14.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
@ -23,15 +23,48 @@ namespace bsmd.Tool.Properties {
} }
} }
[global::System.Configuration.UserScopedSettingAttribute()] [global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("replace me!")] [global::System.Configuration.DefaultSettingValueAttribute("replace me!")]
public string ConnectionString { public string ConnectionString {
get { get {
return ((string)(this["ConnectionString"])); return ((string)(this["ConnectionString"]));
} }
set { }
this["ConnectionString"] = value;
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string EcholotOutputFolder {
get {
return ((string)(this["EcholotOutputFolder"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("4")]
public int EcholotMaxThreads {
get {
return ((int)(this["EcholotMaxThreads"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("C:\\temp\\hisnord")]
public string HISNORD_Folder {
get {
return ((string)(this["HISNORD_Folder"]));
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("C:\\temp\\dbh")]
public string DBH_Folder {
get {
return ((string)(this["DBH_Folder"]));
} }
} }
} }

View File

@ -2,8 +2,20 @@
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="bsmd.Tool.Properties" GeneratedClassName="Settings"> <SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="bsmd.Tool.Properties" GeneratedClassName="Settings">
<Profiles /> <Profiles />
<Settings> <Settings>
<Setting Name="ConnectionString" Type="System.String" Scope="User"> <Setting Name="ConnectionString" Type="System.String" Scope="Application">
<Value Profile="(Default)">replace me!</Value> <Value Profile="(Default)">replace me!</Value>
</Setting> </Setting>
<Setting Name="EcholotOutputFolder" Type="System.String" Scope="Application">
<Value Profile="(Default)" />
</Setting>
<Setting Name="EcholotMaxThreads" Type="System.Int32" Scope="Application">
<Value Profile="(Default)">4</Value>
</Setting>
<Setting Name="HISNORD_Folder" Type="System.String" Scope="Application">
<Value Profile="(Default)">C:\temp\hisnord</Value>
</Setting>
<Setting Name="DBH_Folder" Type="System.String" Scope="Application">
<Value Profile="(Default)">C:\temp\dbh</Value>
</Setting>
</Settings> </Settings>
</SettingsFile> </SettingsFile>

View File

@ -44,25 +44,62 @@
<Reference Include="bsmd.database"> <Reference Include="bsmd.database">
<HintPath>..\bsmd.database\bin\Debug\bsmd.database.dll</HintPath> <HintPath>..\bsmd.database\bin\Debug\bsmd.database.dll</HintPath>
</Reference> </Reference>
<Reference Include="ClosedXML, Version=0.105.0.0, Culture=neutral, PublicKeyToken=fd1eb21b62ae805b, processorArchitecture=MSIL">
<HintPath>..\packages\ClosedXML.0.105.0\lib\netstandard2.0\ClosedXML.dll</HintPath>
</Reference>
<Reference Include="ClosedXML.Parser, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1d5f7376574c51ec, processorArchitecture=MSIL">
<HintPath>..\packages\ClosedXML.Parser.2.0.0\lib\netstandard2.0\ClosedXML.Parser.dll</HintPath>
</Reference>
<Reference Include="CommandLine, Version=2.9.1.0, Culture=neutral, PublicKeyToken=5a870481e358d379, processorArchitecture=MSIL"> <Reference Include="CommandLine, Version=2.9.1.0, Culture=neutral, PublicKeyToken=5a870481e358d379, processorArchitecture=MSIL">
<HintPath>..\packages\CommandLineParser.2.9.1\lib\net461\CommandLine.dll</HintPath> <HintPath>..\packages\CommandLineParser.2.9.1\lib\net461\CommandLine.dll</HintPath>
</Reference> </Reference>
<Reference Include="log4net, Version=2.0.15.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL"> <Reference Include="DocumentFormat.OpenXml, Version=3.1.1.0, Culture=neutral, PublicKeyToken=8fb06cb64d019a17, processorArchitecture=MSIL">
<HintPath>..\packages\log4net.2.0.15\lib\net45\log4net.dll</HintPath> <HintPath>..\packages\DocumentFormat.OpenXml.3.1.1\lib\net46\DocumentFormat.OpenXml.dll</HintPath>
</Reference>
<Reference Include="DocumentFormat.OpenXml.Framework, Version=3.1.1.0, Culture=neutral, PublicKeyToken=8fb06cb64d019a17, processorArchitecture=MSIL">
<HintPath>..\packages\DocumentFormat.OpenXml.Framework.3.1.1\lib\net46\DocumentFormat.OpenXml.Framework.dll</HintPath>
</Reference>
<Reference Include="ExcelNumberFormat, Version=1.1.0.0, Culture=neutral, PublicKeyToken=23c6f5d73be07eca, processorArchitecture=MSIL">
<HintPath>..\packages\ExcelNumberFormat.1.1.0\lib\net20\ExcelNumberFormat.dll</HintPath>
</Reference>
<Reference Include="log4net, Version=3.1.0.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
<HintPath>..\packages\log4net.3.1.0\lib\net462\log4net.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bcl.HashCode, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.HashCode.1.1.1\lib\net461\Microsoft.Bcl.HashCode.dll</HintPath>
</Reference>
<Reference Include="RBush, Version=4.0.0.0, Culture=neutral, PublicKeyToken=c77e27b81f4d0187, processorArchitecture=MSIL">
<HintPath>..\packages\RBush.Signed.4.0.0\lib\net47\RBush.dll</HintPath>
</Reference>
<Reference Include="SixLabors.Fonts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d998eea7b14cab13, processorArchitecture=MSIL">
<HintPath>..\packages\SixLabors.Fonts.1.0.0\lib\netstandard2.0\SixLabors.Fonts.dll</HintPath>
</Reference> </Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.Configuration" /> <Reference Include="System.Configuration" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="System.Data.SQLite, Version=1.0.117.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL"> <Reference Include="System.Data.SQLite, Version=1.0.119.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<HintPath>..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.117.0\lib\net46\System.Data.SQLite.dll</HintPath> <HintPath>..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0\lib\net46\System.Data.SQLite.dll</HintPath>
</Reference>
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
</Reference> </Reference>
<Reference Include="System.Numerics" /> <Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.7.0\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Web" /> <Reference Include="System.Web" />
<Reference Include="System.Xml.Linq" /> <Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" /> <Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
<Reference Include="WindowsBase" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="..\bsmd.database\Properties\AssemblyProductInfo.cs"> <Compile Include="..\bsmd.database\Properties\AssemblyProductInfo.cs">
@ -76,6 +113,7 @@
</Compile> </Compile>
<Compile Include="CheckRules.cs" /> <Compile Include="CheckRules.cs" />
<Compile Include="CleanupFiles.cs" /> <Compile Include="CleanupFiles.cs" />
<Compile Include="Echolot.cs" />
<Compile Include="LocodeSQliteImport.cs" /> <Compile Include="LocodeSQliteImport.cs" />
<Compile Include="Options.cs" /> <Compile Include="Options.cs" />
<Compile Include="Program.cs" /> <Compile Include="Program.cs" />
@ -89,6 +127,7 @@
<ItemGroup> <ItemGroup>
<None Include="App.config" /> <None Include="App.config" />
<None Include="..\bsmdKey.snk" /> <None Include="..\bsmdKey.snk" />
<None Include="bsmd.Tool.licenseheader" />
<None Include="packages.config" /> <None Include="packages.config" />
<None Include="Properties\Settings.settings"> <None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator> <Generator>SettingsSingleFileGenerator</Generator>
@ -96,12 +135,12 @@
</None> </None>
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.117.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets" Condition="Exists('..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.117.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets')" /> <Import Project="..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets" Condition="Exists('..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup> <PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText> <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup> </PropertyGroup>
<Error Condition="!Exists('..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.117.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.117.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets'))" /> <Error Condition="!Exists('..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets'))" />
</Target> </Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets. Other similar extension points exist, see Microsoft.Common.targets.

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
<StartArguments>--locodes --csv="C:\svn_lager\bsmd\nsw\Archiv\2022-2.UNLOCODE.all.csv" --db "C:\git_lager\git_bsmd\misc\db.sqlite"</StartArguments> <StartArguments>--echolot --output_folder="C:\temp"</StartArguments>
</PropertyGroup> </PropertyGroup>
</Project> </Project>

View File

@ -0,0 +1,14 @@
extensions: designer.cs generated.cs
extensions: .cs .cpp .h
// Copyright (c) 2020- schick Informatik
// Description:
//
extensions: .aspx .ascx
<%--
Copyright (c) 2020- schick Informatik
--%>
extensions: .xml .config .xsd
<!--
Copyright (c) 2020- schick Informatik
-->

View File

@ -1,7 +1,19 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="ClosedXML" version="0.105.0" targetFramework="net48" />
<package id="ClosedXML.Parser" version="2.0.0" targetFramework="net48" />
<package id="CommandLineParser" version="2.9.1" targetFramework="net48" /> <package id="CommandLineParser" version="2.9.1" targetFramework="net48" />
<package id="log4net" version="2.0.15" targetFramework="net48" /> <package id="DocumentFormat.OpenXml" version="3.1.1" targetFramework="net48" />
<package id="Stub.System.Data.SQLite.Core.NetFramework" version="1.0.117.0" targetFramework="net48" /> <package id="DocumentFormat.OpenXml.Framework" version="3.1.1" targetFramework="net48" />
<package id="System.Data.SQLite.Core" version="1.0.117.0" targetFramework="net48" /> <package id="ExcelNumberFormat" version="1.1.0" targetFramework="net48" />
<package id="log4net" version="3.1.0" targetFramework="net48" />
<package id="Microsoft.Bcl.HashCode" version="1.1.1" targetFramework="net48" />
<package id="RBush.Signed" version="4.0.0" targetFramework="net48" />
<package id="SixLabors.Fonts" version="1.0.0" targetFramework="net48" />
<package id="Stub.System.Data.SQLite.Core.NetFramework" version="1.0.119.0" targetFramework="net48" />
<package id="System.Buffers" version="4.5.1" targetFramework="net48" />
<package id="System.Data.SQLite.Core" version="1.0.119.0" targetFramework="net48" />
<package id="System.Memory" version="4.5.5" targetFramework="net48" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net48" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.7.0" targetFramework="net48" />
</packages> </packages>