diff --git a/File-Watcher.csproj b/File-Watcher.csproj index 7395d81..9e373b8 100644 --- a/File-Watcher.csproj +++ b/File-Watcher.csproj @@ -10,13 +10,13 @@ 6062c774-99a9-4f4a-b42d-a9cb7fcbd8be - + - - + + diff --git a/Helpers/HelperNuget.cs b/Helpers/HelperNuget.cs index 48b1965..1ea325f 100644 --- a/Helpers/HelperNuget.cs +++ b/Helpers/HelperNuget.cs @@ -126,7 +126,7 @@ internal class HelperNuget } if (string.IsNullOrEmpty(nugetConfiguration.KeyFileExtension)) continue; - fileInfo = new(file); + fileInfo = new(Path.ChangeExtension(file, nugetConfiguration.KeyFileExtension)); checkFileInfo = new(Path.Combine(nugetConfiguration.Destination, Path.ChangeExtension(fileInfo.Name, nugetConfiguration.KeyFileExtension))); if (!checkFileInfo.Exists || fileInfo.LastWriteTime != checkFileInfo.LastWriteTime || fileInfo.Length != checkFileInfo.Length) File.Copy(fileInfo.FullName, checkFileInfo.FullName, overwrite: true); diff --git a/Models/Binder/AppSettings.cs b/Models/Binder/AppSettings.cs index 8ce39f5..73b08bc 100644 --- a/Models/Binder/AppSettings.cs +++ b/Models/Binder/AppSettings.cs @@ -7,6 +7,9 @@ public class AppSettings { public string? BuildNumber { get; set; } + public string[]? ConfigurationDirectoryNames { get; set; } + public int? ConfigurationSpecialFolder { get; set; } + public string? ConfigurationFileName { get; set; } public string? Company { get; set; } public string? GitCommitSeven { get; set; } public string? Helper { get; set; } @@ -41,17 +44,17 @@ public class AppSettings } private static Models.AppSettings Get(AppSettings? appSettings, - Models.DriveConfiguration driveConfiguration, - Models.CompassConfiguration compassConfiguration, - Models.EAFLogConfiguration eafLogConfiguration, - Models.EAFProgramDataConfiguration eafProgramDataConfiguration, - Models.EDADatabaseConfiguration edaDatabaseConfiguration, - Models.NugetConfiguration nugetConfiguration, - Models.MetrologyConfiguration metrologyConfiguration, - Models.SerialConfiguration serialConfiguration, - Models.StratusConfiguration stratusConfiguration, - Models.TransmissionControlProtocolConfiguration transmissionControlProtocolConfiguration, - Models.WaferCounterConfiguration waferCounterConfiguration) + DriveConfiguration driveConfiguration, + CompassConfiguration compassConfiguration, + EAFLogConfiguration eafLogConfiguration, + EAFProgramDataConfiguration eafProgramDataConfiguration, + EDADatabaseConfiguration edaDatabaseConfiguration, + NugetConfiguration nugetConfiguration, + MetrologyConfiguration metrologyConfiguration, + SerialConfiguration serialConfiguration, + StratusConfiguration stratusConfiguration, + TransmissionControlProtocolConfiguration transmissionControlProtocolConfiguration, + WaferCounterConfiguration waferCounterConfiguration) { Models.AppSettings result; if (appSettings is null) throw new NullReferenceException(nameof(appSettings)); @@ -82,36 +85,55 @@ public class AppSettings return result; } - public static Models.AppSettings Get(IConfigurationRoot configurationRoot, - Models.CompassConfiguration compassConfiguration, - Models.DriveConfiguration driveConfiguration, - Models.EAFLogConfiguration eafLogConfiguration, - Models.EAFProgramDataConfiguration eafProgramDataConfiguration, - Models.EDADatabaseConfiguration edaDatabaseConfiguration, - Models.NugetConfiguration nugetConfiguration, - Models.MetrologyConfiguration metrologyConfiguration, - Models.SerialConfiguration serialConfiguration, - Models.StratusConfiguration stratusConfiguration, - Models.TransmissionControlProtocolConfiguration transmissionControlProtocolConfiguration, - Models.WaferCounterConfiguration waferCounterConfiguration) + private static string? GetJson(AppSettings? appSettings) + { + string? result; + if (appSettings is null || appSettings.ConfigurationFileName is null) + result = null; + else + { + string jsonFile = Path.Combine(AppContext.BaseDirectory, appSettings.ConfigurationFileName); + if (File.Exists(jsonFile)) + result = File.ReadAllText(jsonFile); + else + { + result = null; + string applicationData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); + List collection = [applicationData]; + if (appSettings?.ConfigurationDirectoryNames is not null) + collection.AddRange(appSettings.ConfigurationDirectoryNames); + if (appSettings?.ConfigurationFileName is not null) + collection.Add(appSettings.ConfigurationFileName); + jsonFile = Path.Combine(collection.ToArray()); + } + if (string.IsNullOrEmpty(result) && File.Exists(jsonFile)) + result = File.ReadAllText(jsonFile); + } + return result; + } + + public static Models.AppSettings Get(IConfigurationRoot configurationRoot) { Models.AppSettings result; #pragma warning disable IL3050, IL2026 AppSettings? appSettings = configurationRoot.Get(); #pragma warning restore IL3050, IL2026 PreVerify(configurationRoot, appSettings); + string? json = GetJson(appSettings); + Models.AppSettings? modelsAppSettings = (string.IsNullOrEmpty(json) ? null : modelsAppSettings = JsonSerializer.Deserialize(json, AppSettingsSourceGenerationContext.Default.AppSettings)) ?? + throw new NullReferenceException(nameof(Models.AppSettings)); result = Get(appSettings, - driveConfiguration, - compassConfiguration, - eafLogConfiguration, - eafProgramDataConfiguration, - edaDatabaseConfiguration, - nugetConfiguration, - metrologyConfiguration, - serialConfiguration, - stratusConfiguration, - transmissionControlProtocolConfiguration, - waferCounterConfiguration); + modelsAppSettings.DriveConfiguration, + modelsAppSettings.CompassConfiguration, + modelsAppSettings.EAFLogConfiguration, + modelsAppSettings.EAFProgramDataConfiguration, + modelsAppSettings.EDADatabaseConfiguration, + modelsAppSettings.NugetConfiguration, + modelsAppSettings.MetrologyConfiguration, + modelsAppSettings.SerialConfiguration, + modelsAppSettings.StratusConfiguration, + modelsAppSettings.TransmissionControlProtocolConfiguration, + modelsAppSettings.WaferCounterConfiguration); return result; } diff --git a/Models/Binder/CompassConfiguration.cs b/Models/Binder/CompassConfiguration.cs deleted file mode 100644 index c14e5c0..0000000 --- a/Models/Binder/CompassConfiguration.cs +++ /dev/null @@ -1,84 +0,0 @@ -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace File_Watcher.Models.Binder; - -public class CompassConfiguration -{ - - public string? Destination { get; set; } - public int? HoursBack { get; set; } - public string? MonthPattern { get; set; } - public string? Pattern { get; set; } - public string? Source { get; set; } - public string? TriggerAppendage { get; set; } - public string? YearPattern { get; set; } - - public override string ToString() - { - string result = JsonSerializer.Serialize(this, BinderCompassConfigurationSourceGenerationContext.Default.CompassConfiguration); - return result; - } - - private static void PreVerify(IConfigurationRoot configurationRoot, CompassConfiguration? configuration) - { - if (configuration?.Destination is null) - { - List paths = []; - foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) - { - if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) - continue; - if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) - continue; - paths.Add(physicalFileProvider.Root); - } - throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); - } - } - - private static void Verify(CompassConfiguration _) - { - } - - private static Models.CompassConfiguration Get(CompassConfiguration? configuration) - { - Models.CompassConfiguration result; - if (configuration is null) throw new NullReferenceException(nameof(configuration)); - if (configuration.Destination is null) throw new NullReferenceException(nameof(configuration.Destination)); - if (configuration.HoursBack is null) throw new NullReferenceException(nameof(configuration.HoursBack)); - if (configuration.MonthPattern is null) throw new NullReferenceException(nameof(configuration.MonthPattern)); - if (configuration.Pattern is null) throw new NullReferenceException(nameof(configuration.Pattern)); - if (configuration.Source is null) throw new NullReferenceException(nameof(configuration.Source)); - if (configuration.TriggerAppendage is null) throw new NullReferenceException(nameof(configuration.TriggerAppendage)); - if (configuration.YearPattern is null) throw new NullReferenceException(nameof(configuration.YearPattern)); - Verify(configuration); - result = new(configuration.Destination, - configuration.HoursBack.Value, - configuration.MonthPattern, - configuration.Pattern, - configuration.Source, - configuration.TriggerAppendage, - configuration.YearPattern); - return result; - } - - public static Models.CompassConfiguration Get(IConfigurationRoot configurationRoot) - { - Models.CompassConfiguration result; - IConfigurationSection configurationSection = configurationRoot.GetSection(nameof(Models.CompassConfiguration)); -#pragma warning disable IL3050, IL2026 - CompassConfiguration? configuration = configurationSection.Get(); -#pragma warning restore IL3050, IL2026 - PreVerify(configurationRoot, configuration); - result = Get(configuration); - return result; - } - -} - -[JsonSourceGenerationOptions(WriteIndented = true)] -[JsonSerializable(typeof(CompassConfiguration))] -internal partial class BinderCompassConfigurationSourceGenerationContext : JsonSerializerContext -{ -} \ No newline at end of file diff --git a/Models/Binder/DriveConfiguration.cs b/Models/Binder/DriveConfiguration.cs deleted file mode 100644 index 80abf7f..0000000 --- a/Models/Binder/DriveConfiguration.cs +++ /dev/null @@ -1,78 +0,0 @@ -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace File_Watcher.Models.Binder; - -public class DriveConfiguration -{ - - public string? Letter { get; set; } - public string? Password { get; set; } - public string? Share { get; set; } - public bool? Use { get; set; } - public string? User { get; set; } - - public override string ToString() - { - string result = JsonSerializer.Serialize(this, BinderDriveConfigurationSourceGenerationContext.Default.DriveConfiguration); - return result; - } - - private static void PreVerify(IConfigurationRoot configurationRoot, DriveConfiguration? driveConfiguration) - { - if (driveConfiguration?.Letter is null) - { - List paths = []; - foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) - { - if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) - continue; - if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) - continue; - paths.Add(physicalFileProvider.Root); - } - throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); - } - } - - private static void Verify(DriveConfiguration _) - { - } - - private static Models.DriveConfiguration Get(DriveConfiguration? driveConfiguration) - { - Models.DriveConfiguration result; - if (driveConfiguration?.Letter is null) - throw new NullReferenceException(nameof(Letter)); - if (driveConfiguration?.Password is null) - throw new NullReferenceException(nameof(Password)); - if (driveConfiguration?.Share is null) - throw new NullReferenceException(nameof(Share)); - if (driveConfiguration?.Use is null) - throw new NullReferenceException(nameof(Use)); - if (driveConfiguration?.User is null) - throw new NullReferenceException(nameof(User)); - Verify(driveConfiguration); - result = new(driveConfiguration.Letter, driveConfiguration.Password, driveConfiguration.Share, driveConfiguration.Use.Value, driveConfiguration.User); - return result; - } - - public static Models.DriveConfiguration Get(IConfigurationRoot configurationRoot) - { - Models.DriveConfiguration result; - IConfigurationSection configurationSection = configurationRoot.GetSection(nameof(Models.DriveConfiguration)); -#pragma warning disable IL3050, IL2026 - DriveConfiguration? driveConfiguration = configurationSection.Get(); -#pragma warning restore IL3050, IL2026 - PreVerify(configurationRoot, driveConfiguration); - result = Get(driveConfiguration); - return result; - } - -} - -[JsonSourceGenerationOptions(WriteIndented = true)] -[JsonSerializable(typeof(DriveConfiguration))] -internal partial class BinderDriveConfigurationSourceGenerationContext : JsonSerializerContext -{ -} \ No newline at end of file diff --git a/Models/Binder/EAFLogConfiguration.cs b/Models/Binder/EAFLogConfiguration.cs deleted file mode 100644 index 0a3c68e..0000000 --- a/Models/Binder/EAFLogConfiguration.cs +++ /dev/null @@ -1,66 +0,0 @@ -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace File_Watcher.Models.Binder; - -public class EAFLogConfiguration -{ - - public string? SearchPattern { get; set; } - - public override string ToString() - { - string result = JsonSerializer.Serialize(this, BinderEAFLogConfigurationSourceGenerationContext.Default.EAFLogConfiguration); - return result; - } - - private static void PreVerify(IConfigurationRoot configurationRoot, EAFLogConfiguration? configuration) - { - if (configuration?.SearchPattern is null) - { - List paths = []; - foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) - { - if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) - continue; - if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) - continue; - paths.Add(physicalFileProvider.Root); - } - throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); - } - } - - private static void Verify(EAFLogConfiguration _) - { - } - - private static Models.EAFLogConfiguration Get(EAFLogConfiguration? configuration) - { - Models.EAFLogConfiguration result; - if (configuration is null) throw new NullReferenceException(nameof(configuration)); - if (configuration.SearchPattern is null) throw new NullReferenceException(nameof(configuration.SearchPattern)); - Verify(configuration); - result = new(configuration.SearchPattern); - return result; - } - - public static Models.EAFLogConfiguration Get(IConfigurationRoot configurationRoot) - { - Models.EAFLogConfiguration result; - IConfigurationSection configurationSection = configurationRoot.GetSection(nameof(Models.EAFLogConfiguration)); -#pragma warning disable IL3050, IL2026 - EAFLogConfiguration? configuration = configurationSection.Get(); -#pragma warning restore IL3050, IL2026 - PreVerify(configurationRoot, configuration); - result = Get(configuration); - return result; - } - -} - -[JsonSourceGenerationOptions(WriteIndented = true)] -[JsonSerializable(typeof(EAFLogConfiguration))] -internal partial class BinderEAFLogConfigurationSourceGenerationContext : JsonSerializerContext -{ -} \ No newline at end of file diff --git a/Models/Binder/EAFProgramDataConfiguration.cs b/Models/Binder/EAFProgramDataConfiguration.cs deleted file mode 100644 index d8f9817..0000000 --- a/Models/Binder/EAFProgramDataConfiguration.cs +++ /dev/null @@ -1,68 +0,0 @@ -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace File_Watcher.Models.Binder; - -public class EAFProgramDataConfiguration -{ - - public string? Destination { get; set; } - public string? Source { get; set; } - - public override string ToString() - { - string result = JsonSerializer.Serialize(this, BinderEAFProgramDataConfigurationSourceGenerationContext.Default.EAFProgramDataConfiguration); - return result; - } - - private static void PreVerify(IConfigurationRoot configurationRoot, EAFProgramDataConfiguration? configuration) - { - if (configuration?.Destination is null) - { - List paths = []; - foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) - { - if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) - continue; - if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) - continue; - paths.Add(physicalFileProvider.Root); - } - throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); - } - } - - private static void Verify(EAFProgramDataConfiguration _) - { - } - - private static Models.EAFProgramDataConfiguration Get(EAFProgramDataConfiguration? configuration) - { - Models.EAFProgramDataConfiguration result; - if (configuration is null) throw new NullReferenceException(nameof(configuration)); - if (configuration.Destination is null) throw new NullReferenceException(nameof(configuration.Destination)); - if (configuration.Source is null) throw new NullReferenceException(nameof(configuration.Source)); - Verify(configuration); - result = new(configuration.Destination, configuration.Source); - return result; - } - - public static Models.EAFProgramDataConfiguration Get(IConfigurationRoot configurationRoot) - { - Models.EAFProgramDataConfiguration result; - IConfigurationSection configurationSection = configurationRoot.GetSection(nameof(Models.EAFProgramDataConfiguration)); -#pragma warning disable IL3050, IL2026 - EAFProgramDataConfiguration? configuration = configurationSection.Get(); -#pragma warning restore IL3050, IL2026 - PreVerify(configurationRoot, configuration); - result = Get(configuration); - return result; - } - -} - -[JsonSourceGenerationOptions(WriteIndented = true)] -[JsonSerializable(typeof(EAFProgramDataConfiguration))] -internal partial class BinderEAFProgramDataConfigurationSourceGenerationContext : JsonSerializerContext -{ -} \ No newline at end of file diff --git a/Models/Binder/EDADatabaseConfiguration.cs b/Models/Binder/EDADatabaseConfiguration.cs deleted file mode 100644 index c1e60bf..0000000 --- a/Models/Binder/EDADatabaseConfiguration.cs +++ /dev/null @@ -1,84 +0,0 @@ -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace File_Watcher.Models.Binder; - -public class EDADatabaseConfiguration -{ - - public string? CSharpDateTimeFormat { get; set; } - public string? FileShare { get; set; } - public string? Name { get; set; } - public string? OracleDateTimeFormat { get; set; } - public string? Password { get; set; } - public string? TNS { get; set; } - public string? UserName { get; set; } - - public override string ToString() - { - string result = JsonSerializer.Serialize(this, BinderEDADatabaseConfigurationSourceGenerationContext.Default.EDADatabaseConfiguration); - return result; - } - - private static void PreVerify(IConfigurationRoot configurationRoot, EDADatabaseConfiguration? configuration) - { - if (configuration?.CSharpDateTimeFormat is null) - { - List paths = []; - foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) - { - if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) - continue; - if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) - continue; - paths.Add(physicalFileProvider.Root); - } - throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); - } - } - - private static void Verify(EDADatabaseConfiguration _) - { - } - - private static Models.EDADatabaseConfiguration Get(EDADatabaseConfiguration? configuration) - { - Models.EDADatabaseConfiguration result; - if (configuration is null) throw new NullReferenceException(nameof(configuration)); - if (configuration.CSharpDateTimeFormat is null) throw new NullReferenceException(nameof(configuration.CSharpDateTimeFormat)); - if (configuration.FileShare is null) throw new NullReferenceException(nameof(configuration.FileShare)); - if (configuration.Name is null) throw new NullReferenceException(nameof(configuration.Name)); - if (configuration.OracleDateTimeFormat is null) throw new NullReferenceException(nameof(configuration.OracleDateTimeFormat)); - if (configuration.Password is null) throw new NullReferenceException(nameof(configuration.Password)); - if (configuration.TNS is null) throw new NullReferenceException(nameof(configuration.TNS)); - if (configuration.UserName is null) throw new NullReferenceException(nameof(configuration.UserName)); - Verify(configuration); - result = new(configuration.CSharpDateTimeFormat, - configuration.FileShare, - configuration.Name, - configuration.OracleDateTimeFormat, - configuration.Password, - configuration.TNS, - configuration.UserName); - return result; - } - - public static Models.EDADatabaseConfiguration Get(IConfigurationRoot configurationRoot) - { - Models.EDADatabaseConfiguration result; - IConfigurationSection configurationSection = configurationRoot.GetSection(nameof(Models.EDADatabaseConfiguration)); -#pragma warning disable IL3050, IL2026 - EDADatabaseConfiguration? configuration = configurationSection.Get(); -#pragma warning restore IL3050, IL2026 - PreVerify(configurationRoot, configuration); - result = Get(configuration); - return result; - } - -} - -[JsonSourceGenerationOptions(WriteIndented = true)] -[JsonSerializable(typeof(EDADatabaseConfiguration))] -internal partial class BinderEDADatabaseConfigurationSourceGenerationContext : JsonSerializerContext -{ -} \ No newline at end of file diff --git a/Models/Binder/MetrologyConfiguration.cs b/Models/Binder/MetrologyConfiguration.cs deleted file mode 100644 index 379e0af..0000000 --- a/Models/Binder/MetrologyConfiguration.cs +++ /dev/null @@ -1,75 +0,0 @@ -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace File_Watcher.Models.Binder; - -public class MetrologyConfiguration -{ - - public int? DirectoriesBack { get; set; } - public int? DeleteOlderThanWeeks { get; set; } - public string[]? HardcodedValues { get; set; } - public string[]? SourceDirectories { get; set; } - - public override string ToString() - { - string result = JsonSerializer.Serialize(this, BinderMetrologyConfigurationSourceGenerationContext.Default.MetrologyConfiguration); - return result; - } - - private static void PreVerify(IConfigurationRoot configurationRoot, MetrologyConfiguration? configuration) - { - if (configuration?.DirectoriesBack is null) - { - List paths = []; - foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) - { - if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) - continue; - if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) - continue; - paths.Add(physicalFileProvider.Root); - } - throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); - } - } - - private static void Verify(MetrologyConfiguration _) - { - } - - private static Models.MetrologyConfiguration Get(MetrologyConfiguration? configuration) - { - Models.MetrologyConfiguration result; - if (configuration is null) throw new NullReferenceException(nameof(configuration)); - if (configuration.DirectoriesBack is null) throw new NullReferenceException(nameof(configuration.DirectoriesBack)); - if (configuration.DeleteOlderThanWeeks is null) throw new NullReferenceException(nameof(configuration.DeleteOlderThanWeeks)); - if (configuration.HardcodedValues is null) throw new NullReferenceException(nameof(configuration.HardcodedValues)); - if (configuration.SourceDirectories is null) throw new NullReferenceException(nameof(configuration.SourceDirectories)); - Verify(configuration); - result = new(configuration.DirectoriesBack.Value, - configuration.DeleteOlderThanWeeks.Value, - configuration.HardcodedValues, - configuration.SourceDirectories); - return result; - } - - public static Models.MetrologyConfiguration Get(IConfigurationRoot configurationRoot) - { - Models.MetrologyConfiguration result; - IConfigurationSection configurationSection = configurationRoot.GetSection(nameof(Models.MetrologyConfiguration)); -#pragma warning disable IL3050, IL2026 - MetrologyConfiguration? configuration = configurationSection.Get(); -#pragma warning restore IL3050, IL2026 - PreVerify(configurationRoot, configuration); - result = Get(configuration); - return result; - } - -} - -[JsonSourceGenerationOptions(WriteIndented = true)] -[JsonSerializable(typeof(MetrologyConfiguration))] -internal partial class BinderMetrologyConfigurationSourceGenerationContext : JsonSerializerContext -{ -} \ No newline at end of file diff --git a/Models/Binder/NugetConfiguration.cs b/Models/Binder/NugetConfiguration.cs deleted file mode 100644 index 4836aa3..0000000 --- a/Models/Binder/NugetConfiguration.cs +++ /dev/null @@ -1,84 +0,0 @@ -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace File_Watcher.Models.Binder; - -public class NugetConfiguration -{ - - public string? Destination { get; set; } - public string? KeyFileExtension { get; set; } - public string? KeyFileExtensionB { get; set; } - public string? KeyFileExtensionC { get; set; } - public bool? RenameToLower { get; set; } - public string? SearchPattern { get; set; } - public string? Source { get; set; } - - public override string ToString() - { - string result = JsonSerializer.Serialize(this, BinderNugetConfigurationSourceGenerationContext.Default.NugetConfiguration); - return result; - } - - private static void PreVerify(IConfigurationRoot configurationRoot, NugetConfiguration? configuration) - { - if (configuration?.Destination is null) - { - List paths = []; - foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) - { - if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) - continue; - if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) - continue; - paths.Add(physicalFileProvider.Root); - } - throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); - } - } - - private static void Verify(NugetConfiguration _) - { - } - - private static Models.NugetConfiguration Get(NugetConfiguration? configuration) - { - Models.NugetConfiguration result; - if (configuration is null) throw new NullReferenceException(nameof(configuration)); - if (configuration.Destination is null) throw new NullReferenceException(nameof(configuration.Destination)); - if (configuration.KeyFileExtension is null) throw new NullReferenceException(nameof(configuration.KeyFileExtension)); - if (configuration.KeyFileExtensionB is null) throw new NullReferenceException(nameof(configuration.KeyFileExtensionB)); - if (configuration.KeyFileExtensionC is null) throw new NullReferenceException(nameof(configuration.KeyFileExtensionC)); - if (configuration.RenameToLower is null) throw new NullReferenceException(nameof(configuration.RenameToLower)); - if (configuration.SearchPattern is null) throw new NullReferenceException(nameof(configuration.SearchPattern)); - if (configuration.Source is null) throw new NullReferenceException(nameof(configuration.Source)); - Verify(configuration); - result = new(configuration.Destination, - configuration.KeyFileExtension, - configuration.KeyFileExtensionB, - configuration.KeyFileExtensionC, - configuration.RenameToLower.Value, - configuration.SearchPattern, - configuration.Source); - return result; - } - - public static Models.NugetConfiguration Get(IConfigurationRoot configurationRoot) - { - Models.NugetConfiguration result; - IConfigurationSection configurationSection = configurationRoot.GetSection(nameof(Models.NugetConfiguration)); -#pragma warning disable IL3050, IL2026 - NugetConfiguration? configuration = configurationSection.Get(); -#pragma warning restore IL3050, IL2026 - PreVerify(configurationRoot, configuration); - result = Get(configuration); - return result; - } - -} - -[JsonSourceGenerationOptions(WriteIndented = true)] -[JsonSerializable(typeof(NugetConfiguration))] -internal partial class BinderNugetConfigurationSourceGenerationContext : JsonSerializerContext -{ -} \ No newline at end of file diff --git a/Models/Binder/SerialConfiguration.cs b/Models/Binder/SerialConfiguration.cs deleted file mode 100644 index 774049c..0000000 --- a/Models/Binder/SerialConfiguration.cs +++ /dev/null @@ -1,74 +0,0 @@ -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace File_Watcher.Models.Binder; - -public class SerialConfiguration -{ - - public string? Destination { get; set; } - public string? GhostPCLFileName { get; set; } - public string? LincPDFCFileName { get; set; } - public string? PortName { get; set; } - - public override string ToString() - { - string result = JsonSerializer.Serialize(this, BinderSerialConfigurationSourceGenerationContext.Default.SerialConfiguration); - return result; - } - - private static void PreVerify(IConfigurationRoot configurationRoot, SerialConfiguration? configuration) - { - if (configuration?.Destination is null) - { - List paths = []; - foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) - { - if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) - continue; - if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) - continue; - paths.Add(physicalFileProvider.Root); - } - throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); - } - } - - private static void Verify(SerialConfiguration _) - { } - - private static Models.SerialConfiguration Get(SerialConfiguration? configuration) - { - Models.SerialConfiguration result; - if (configuration is null) throw new NullReferenceException(nameof(configuration)); - if (configuration.Destination is null) throw new NullReferenceException(nameof(configuration.Destination)); - if (configuration.GhostPCLFileName is null) throw new NullReferenceException(nameof(configuration.GhostPCLFileName)); - if (configuration.LincPDFCFileName is null) throw new NullReferenceException(nameof(configuration.LincPDFCFileName)); - if (configuration.PortName is null) throw new NullReferenceException(nameof(configuration.PortName)); - Verify(configuration); - result = new(configuration.Destination, - configuration.GhostPCLFileName, - configuration.LincPDFCFileName, - configuration.PortName); - return result; - } - - public static Models.SerialConfiguration Get(IConfigurationRoot configurationRoot) - { - Models.SerialConfiguration result; - IConfigurationSection configurationSection = configurationRoot.GetSection(nameof(Models.SerialConfiguration)); -#pragma warning disable IL3050, IL2026 - SerialConfiguration? configuration = configurationSection.Get(); -#pragma warning restore IL3050, IL2026 - PreVerify(configurationRoot, configuration); - result = Get(configuration); - return result; - } - -} - -[JsonSourceGenerationOptions(WriteIndented = true)] -[JsonSerializable(typeof(SerialConfiguration))] -internal partial class BinderSerialConfigurationSourceGenerationContext : JsonSerializerContext -{ -} \ No newline at end of file diff --git a/Models/Binder/StratusConfiguration.cs b/Models/Binder/StratusConfiguration.cs deleted file mode 100644 index 5007970..0000000 --- a/Models/Binder/StratusConfiguration.cs +++ /dev/null @@ -1,72 +0,0 @@ -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace File_Watcher.Models.Binder; - -public class StratusConfiguration -{ - - public string? Destination { get; set; } - public string? FileDelimiterPattern { get; set; } - public string? WatchFile { get; set; } - - public override string ToString() - { - string result = JsonSerializer.Serialize(this, BinderStratusConfigurationSourceGenerationContext.Default.StratusConfiguration); - return result; - } - - private static void PreVerify(IConfigurationRoot configurationRoot, StratusConfiguration? configuration) - { - if (configuration?.Destination is null) - { - List paths = []; - foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) - { - if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) - continue; - if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) - continue; - paths.Add(physicalFileProvider.Root); - } - throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); - } - } - - private static void Verify(StratusConfiguration _) - { - } - - private static Models.StratusConfiguration Get(StratusConfiguration? configuration) - { - Models.StratusConfiguration result; - if (configuration is null) throw new NullReferenceException(nameof(configuration)); - if (configuration.Destination is null) throw new NullReferenceException(nameof(configuration.Destination)); - if (configuration.FileDelimiterPattern is null) throw new NullReferenceException(nameof(configuration.FileDelimiterPattern)); - if (configuration.WatchFile is null) throw new NullReferenceException(nameof(configuration.WatchFile)); - Verify(configuration); - result = new(configuration.Destination, - configuration.FileDelimiterPattern, - configuration.WatchFile); - return result; - } - - public static Models.StratusConfiguration Get(IConfigurationRoot configurationRoot) - { - Models.StratusConfiguration result; - IConfigurationSection configurationSection = configurationRoot.GetSection(nameof(Models.StratusConfiguration)); -#pragma warning disable IL3050, IL2026 - StratusConfiguration? configuration = configurationSection.Get(); -#pragma warning restore IL3050, IL2026 - PreVerify(configurationRoot, configuration); - result = Get(configuration); - return result; - } - -} - -[JsonSourceGenerationOptions(WriteIndented = true)] -[JsonSerializable(typeof(StratusConfiguration))] -internal partial class BinderStratusConfigurationSourceGenerationContext : JsonSerializerContext -{ -} \ No newline at end of file diff --git a/Models/Binder/TransmissionControlProtocolConfiguration.cs b/Models/Binder/TransmissionControlProtocolConfiguration.cs deleted file mode 100644 index de6d82b..0000000 --- a/Models/Binder/TransmissionControlProtocolConfiguration.cs +++ /dev/null @@ -1,89 +0,0 @@ -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace File_Watcher.Models.Binder; - -public class TransmissionControlProtocolConfiguration -{ - - public string? Destination { get; set; } - public string? GhostPCLFileName { get; set; } - public string? IPAddress { get; set; } - public int? Port { get; set; } - public bool? Server { get; set; } - - public override string ToString() - { - string result = JsonSerializer.Serialize(this, BinderTransmissionControlProtocolConfigurationSourceGenerationContext.Default.TransmissionControlProtocolConfiguration); - return result; - } - - private static void PreVerify(IConfigurationRoot configurationRoot, TransmissionControlProtocolConfiguration? configuration) - { - if (configuration?.Destination is null) - { - List paths = []; - foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) - { - if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) - continue; - if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) - continue; - paths.Add(physicalFileProvider.Root); - } - throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); - } - } - - private static void Verify(TransmissionControlProtocolConfiguration _) - { - // if (transmissionControlProtocolConfiguration.IPAddresses is null) throw new NullReferenceException(nameof(transmissionControlProtocolConfiguration.IPAddresses)); - // foreach (KeyValuePair keyValuePair in transmissionControlProtocolConfiguration.IPAddresses) - // { - // if (string.IsNullOrEmpty(keyValuePair.Key)) - // throw new Exception(nameof(IPAddresses)); - // foreach (string value in keyValuePair.Value) - // { - // if (string.IsNullOrEmpty(value)) - // throw new Exception(nameof(IPAddresses)); - // } - // } - } - - private static Models.TransmissionControlProtocolConfiguration Get(TransmissionControlProtocolConfiguration? configuration) - { - Models.TransmissionControlProtocolConfiguration result; - if (configuration is null) throw new NullReferenceException(nameof(configuration)); - if (configuration.Destination is null) throw new NullReferenceException(nameof(configuration.Destination)); - if (configuration.GhostPCLFileName is null) throw new NullReferenceException(nameof(configuration.GhostPCLFileName)); - if (configuration.IPAddress is null) throw new NullReferenceException(nameof(configuration.IPAddress)); - if (configuration.Port is null) throw new NullReferenceException(nameof(configuration.Port)); - if (configuration.Server is null) throw new NullReferenceException(nameof(configuration.Server)); - Verify(configuration); - result = new(configuration.Destination, - configuration.GhostPCLFileName, - configuration.IPAddress, - configuration.Port.Value, - configuration.Server.Value); - return result; - } - - public static Models.TransmissionControlProtocolConfiguration Get(IConfigurationRoot configurationRoot) - { - Models.TransmissionControlProtocolConfiguration result; - IConfigurationSection configurationSection = configurationRoot.GetSection(nameof(Models.TransmissionControlProtocolConfiguration)); -#pragma warning disable IL3050, IL2026 - TransmissionControlProtocolConfiguration? configuration = configurationSection.Get(); -#pragma warning restore IL3050, IL2026 - PreVerify(configurationRoot, configuration); - result = Get(configuration); - return result; - } - -} - -[JsonSourceGenerationOptions(WriteIndented = true)] -[JsonSerializable(typeof(TransmissionControlProtocolConfiguration))] -internal partial class BinderTransmissionControlProtocolConfigurationSourceGenerationContext : JsonSerializerContext -{ -} \ No newline at end of file diff --git a/Models/Binder/WaferCounterConfiguration.cs b/Models/Binder/WaferCounterConfiguration.cs deleted file mode 100644 index f15382b..0000000 --- a/Models/Binder/WaferCounterConfiguration.cs +++ /dev/null @@ -1,69 +0,0 @@ -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace File_Watcher.Models.Binder; - -public class WaferCounterConfiguration -{ - - public string? Destination { get; set; } - public bool? MatchPath { get; set; } - - public override string ToString() - { - string result = JsonSerializer.Serialize(this, BinderWaferCounterConfigurationSourceGenerationContext.Default.WaferCounterConfiguration); - return result; - } - - private static void PreVerify(IConfigurationRoot configurationRoot, WaferCounterConfiguration? configuration) - { - if (configuration?.Destination is null) - { - List paths = []; - foreach (IConfigurationProvider configurationProvider in configurationRoot.Providers) - { - if (configurationProvider is not Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider jsonConfigurationProvider) - continue; - if (jsonConfigurationProvider.Source.FileProvider is not Microsoft.Extensions.FileProviders.PhysicalFileProvider physicalFileProvider) - continue; - paths.Add(physicalFileProvider.Root); - } - throw new NotSupportedException($"Not found!{Environment.NewLine}{string.Join(Environment.NewLine, paths.Distinct())}"); - } - } - - private static void Verify(WaferCounterConfiguration _) - { - } - - private static Models.WaferCounterConfiguration Get(WaferCounterConfiguration? configuration) - { - Models.WaferCounterConfiguration result; - if (configuration is null) throw new NullReferenceException(nameof(configuration)); - if (configuration.Destination is null) throw new NullReferenceException(nameof(configuration.Destination)); - if (configuration.MatchPath is null) throw new NullReferenceException(nameof(configuration.MatchPath)); - Verify(configuration); - result = new(configuration.Destination, - configuration.MatchPath.Value); - return result; - } - - public static Models.WaferCounterConfiguration Get(IConfigurationRoot configurationRoot) - { - Models.WaferCounterConfiguration result; - IConfigurationSection configurationSection = configurationRoot.GetSection(nameof(Models.WaferCounterConfiguration)); -#pragma warning disable IL3050, IL2026 - WaferCounterConfiguration? configuration = configurationSection.Get(); -#pragma warning restore IL3050, IL2026 - PreVerify(configurationRoot, configuration); - result = Get(configuration); - return result; - } - -} - -[JsonSourceGenerationOptions(WriteIndented = true)] -[JsonSerializable(typeof(WaferCounterConfiguration))] -internal partial class BinderWaferCounterConfigurationSourceGenerationContext : JsonSerializerContext -{ -} \ No newline at end of file diff --git a/Program.cs b/Program.cs index c0feb2b..d91295e 100644 --- a/Program.cs +++ b/Program.cs @@ -14,29 +14,7 @@ public class Program WebApplicationBuilder webApplicationBuilder = WebApplication.CreateBuilder(args); #pragma warning restore IL3050 _ = webApplicationBuilder.Configuration.AddUserSecrets(); - DriveConfiguration driveConfiguration = Models.Binder.DriveConfiguration.Get(webApplicationBuilder.Configuration); - EAFLogConfiguration eafLogConfiguration = Models.Binder.EAFLogConfiguration.Get(webApplicationBuilder.Configuration); - EAFProgramDataConfiguration eafProgramDataConfiguration = Models.Binder.EAFProgramDataConfiguration.Get(webApplicationBuilder.Configuration); - EDADatabaseConfiguration edaDatabaseConfiguration = Models.Binder.EDADatabaseConfiguration.Get(webApplicationBuilder.Configuration); - SerialConfiguration serialConfiguration = Models.Binder.SerialConfiguration.Get(webApplicationBuilder.Configuration); - StratusConfiguration stratusConfiguration = Models.Binder.StratusConfiguration.Get(webApplicationBuilder.Configuration); - CompassConfiguration compassConfiguration = Models.Binder.CompassConfiguration.Get(webApplicationBuilder.Configuration); - MetrologyConfiguration metrologyConfiguration = Models.Binder.MetrologyConfiguration.Get(webApplicationBuilder.Configuration); - NugetConfiguration nugetConfiguration = Models.Binder.NugetConfiguration.Get(webApplicationBuilder.Configuration); - WaferCounterConfiguration waferCounterConfiguration = Models.Binder.WaferCounterConfiguration.Get(webApplicationBuilder.Configuration); - TransmissionControlProtocolConfiguration transmissionControlProtocolConfiguration = Models.Binder.TransmissionControlProtocolConfiguration.Get(webApplicationBuilder.Configuration); - AppSettings appSettings = Models.Binder.AppSettings.Get(webApplicationBuilder.Configuration, - compassConfiguration, - driveConfiguration, - eafLogConfiguration, - eafProgramDataConfiguration, - edaDatabaseConfiguration, - nugetConfiguration, - metrologyConfiguration, - serialConfiguration, - stratusConfiguration, - transmissionControlProtocolConfiguration, - waferCounterConfiguration); + AppSettings appSettings = Models.Binder.AppSettings.Get(webApplicationBuilder.Configuration); if (string.IsNullOrEmpty(appSettings.Company)) throw new Exception("Company name must have a value!"); try