diff --git a/.vscode/.UserSecrets/file-watcher.json b/.vscode/.UserSecrets/file-watcher.json
deleted file mode 100644
index 046ffc1..0000000
--- a/.vscode/.UserSecrets/file-watcher.json
+++ /dev/null
@@ -1,195 +0,0 @@
-{
- "CamstarOracleConfiguration": {
- "DateFormat": "yyyy-MM-dd HH:mm:ss:fff",
- "DirectoryX": "C:/Users/ECUSLEOCamstarTsvc/AppData/Local/IFXApps/WinLog/Logs",
- "Directory": "D:/Tmp/Phares/WinLog/Logs",
- "LogFilter": "Camstar",
- "MessageFilters": [
- "Connection Dead",
- "not connected to ORACLE"
- ],
- "MillisecondsDelay": 90000,
- "MonitorApplicationResource": "LEO_CAMSTAR_ORACLE_P21_COUNT",
- "MonitorApplicationSite": "auc",
- "RollingMinutes": 998877123
- },
- "CompassConfiguration": {
- "Destination": "\\\\10.95.1.211\\Share\\RawData\\TRENDLOG",
- "HoursBack": 4,
- "MonthPattern": "MMM",
- "Pattern": "*.csv",
- "Source": "C:/Alerton/Compass/1.0/CLIMATEC/archive/trendlog",
- "TriggerAppendage": ".trg",
- "YearPattern": "yyyy"
- },
- "DriveConfiguration": {
- "Letter": "s",
- "Password": "zjtaxxwdEnJ/9tfXQFdj6TKiKBAmpCHWjdi6XYrflw4=",
- "Share": "\\\\10.95.1.211\\Share",
- "Use": true,
- "User": "infineon\\ECMESEAF"
- },
- "EAFLogConfiguration": {
- "SearchPattern": "*.log*"
- },
- "EAFProgramDataConfiguration": {
- "Destination": "\\\\messa08ec.infineon.com\\d$\\ProgramData\\EC_Characterization_Si\\RawData",
- "Source": "D:/ProgramData/EC_Characterization_Si/RawData"
- },
- "EDADatabaseConfiguration": {
- "CSharpDateTimeFormat": "yyyy-MM-dd_hh:mm:ss tt",
- "FileShare": "\\\\mesfs.infineon.com\\EC_EDA",
- "Name": "Staging",
- "OracleDateTimeFormat": "yyyy-MM-dd_hh:mi:ss AM",
- "Password": "8vIs2nEZPkcdBUfXX0hHlA==",
- "TNS": "(description=(address_list=(address=(protocol=tcp)(host=fimess-db.mes.infineon.com)(port=7001)))(connect_data=(sid=fimess)))",
- "TNSX": "(description=(address_list=(address=(protocol=tcp)(host=fimesp-db.mes.infineon.com)(port=7002)))(connect_data=(sid=fimesp)))",
- "UserName": "edastag"
- },
- "IsoConfiguration": {
- "DestinationDirectory": "D:/EAF/drssdv702.eu.infineon.com-eafdev-DeliveredPackages-IFX.EAF Kernel SEMI/v2.57.0.0",
- "SourceDirectory": "\\\\eafdev.drs.infineon.com\\eafdev\\DeliveredPackages\\IFX.EAF Kernel SEMI\\v2.57.0.0\\EAF v2.57.0.0 API\\complete_with_adaptations"
- },
- "InfinityQSConfiguration": {
- "ConnectionStringX": "Data Source=messad1001\\test1,59583;Initial Catalog=LSL2SQL;Persist Security Info=True;User ID=srpadmin;Password=0okm9ijn;",
- "ConnectionStringXX": "Data Source=messqlec1.infineon.com\\PROD1,53959;Initial Catalog=Metrology;User ID=metrology_rouser;Password=Metrologyrouser2024!;",
- "ConnectionStringXXX": "Data Source=messqlec1.infineon.com\\PROD1,53959;Initial Catalog=IRMNSPC;User ID=IRMNSPC;Password=dsaf;",
- "ConnectionString": "Data Source=messqlec1.infineon.com\\PROD1,53959;Initial Catalog=IRMNSPC;Integrated Security=True;",
- "DestinationDirectory": "L:/File-Watcher/Helper/InfinityQS",
- "SubGroupTime": 1727177147,
- "TestsFile": "L:/File-Watcher/Helper/InfinityQS/.json",
- "Tests": [
- {
- "Name": "Bin2",
- "Value": 1655396897
- },
- {
- "Name": "Thresh",
- "Value": 1655396909
- },
- {
- "Name": "GradeStdDev",
- "Value": 1656695902
- },
- {
- "Name": "HgCV Res Average",
- "Value": 1228920625
- },
- {
- "Name": "3mm Edge % from R/2",
- "Value": 1423499546
- },
- {
- "Name": "Average Sum of Defects",
- "Value": 1125073605
- }
- ]
- },
- "MetrologyConfiguration": {
- "DeleteOlderThanWeeks": 16,
- "DirectoriesBack": 2,
- "HardcodedValues": [
- "BIORAD2",
- "BIORAD3",
- "BIORAD4",
- "BIORAD5",
- "CDE2",
- "CDE3",
- "CDE4",
- "CDE5",
- "CDE6",
- "HGCV1",
- "HGCV2",
- "HGCV3",
- "TENCOR1",
- "TENCOR2",
- "TENCOR3",
- "SP101",
- "SPV01",
- "SRP",
- "WC6Inch",
- "WC8Inch",
- "Bio-Rad"
- ],
- "SourceDirectories": [
- "\\\\messa01ec.infineon.com\\apps\\Metrology\\Run Data Repository\\MET08ANLYSDIFAAST230\\Source\\MET08ANLYSDIFAAST230",
- "\\\\messa01ec.infineon.com\\apps\\Metrology\\Run Data Repository\\MET08DDUPSFS6420\\Source\\MET08DDUPSFS6420",
- "\\\\messa01ec.infineon.com\\apps\\Metrology\\Run Data Repository\\MET08DDUPSP1TBI\\Source\\MET08DDUPSP1TBI",
- "\\\\messa01ec.infineon.com\\apps\\Metrology\\Run Data Repository\\MET08RESIHGCV\\Source\\MET08RESIHGCV",
- "\\\\messa01ec.infineon.com\\apps\\Metrology\\Run Data Repository\\MET08RESIMAPCDE\\Source\\MET08RESIMAPCDE",
- "\\\\messa01ec.infineon.com\\apps\\Metrology\\Run Data Repository\\MET08RESISRP2100\\Source\\MET08RESISRP2100",
- "\\\\messa01ec.infineon.com\\apps\\Metrology\\Run Data Repository\\MET08THFTIRQS408M\\Source\\MET08THFTIRQS408M",
- "\\\\messa01ec.infineon.com\\apps\\Metrology\\Run Data Repository\\MET08THFTIRSTRATUS\\Source\\MET08THFTIRSTRATUS"
- ]
- },
- "NugetConfiguration": {
- "Destination": "L:/File-Watcher/Helper/Nuget/Packages",
- "KeyFileExtension": ".nuspec",
- "KeyFileExtensionB": "icon",
- "KeyFileExtensionC": "readme",
- "RenameToLower": true,
- "SearchPattern": "*.nupkg",
- "Source": "C:/Users/phares/.nuget/packages"
- },
- "SerialConfiguration": {
- "Destination": "L:/DevOps/MESA_FI/File-Watcher/.vscode",
- "GhostPCLFileName": "gpcl6win64.exe",
- "LincPDFCFileName": "LincPDFC.exe",
- "PortName": "COM37"
- },
- "StratusConfiguration": {
- "Days": 4,
- "Destination": "D:/Tmp",
- "DestinationX": "\\\\10.95.1.211\\Share\\RawData\\BIORAD4",
- "FileDelimiterPattern": "Mean [0-9.]*, STDD [0-9.]*",
- "WatchFile": "DataBiorad.txt"
- },
- "TransmissionControlProtocolConfiguration": {
- "Destination": "L:/DevOps/MESA_FI/File-Watcher/.vscode",
- "GhostPCLFileName": "gpcl6win64.exe",
- "IPAddress": "COM37",
- "IPAddresses": {
- "10.95.154.19": [
- "EPP-WEST",
- "6INCH",
- "WC6INCH3"
- ],
- "10.95.154.43": [
- "FQA",
- "6INCH",
- "WC6INCH1"
- ],
- "10.95.154.44": [
- "MU",
- "6INCH",
- "WC6INCH2"
- ],
- "10.95.154.46": [
- "EPP-EAST",
- "6INCH",
- "WC6INCH4"
- ],
- "10.95.154.47": [
- "FQA",
- "8INCH",
- "WC8INCH1"
- ],
- "10.95.154.48": [
- "MU",
- "8INCH",
- "WC8INCH2"
- ],
- "10.95.154.49": [
- "EPP-WEST",
- "8INCH",
- "WC8INCH3"
- ]
- },
- "Port": 950,
- "Server": false
- },
- "WaferCounterConfiguration": {
- "Destination": "\\\\mestsa01ec.infineon.com\\apps\\WaferCounter\\V203",
- "MatchPath": false
- }
-}
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
index a816981..0a66f88 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -15,19 +15,29 @@
"Camstar",
"CHIL",
"DEAT",
+ "DEVICEHEIGHTPOINTS",
+ "DEVICEWIDTHPOINTS",
"endianness",
"FAMC",
"FAMS",
+ "FIXEDMEDIA",
"GIVN",
+ "gpcl",
+ "Hmmssfff",
"HUSB",
"INDI",
"Infineon",
"Kanban",
"kanbn",
"Kofax",
+ "linc",
+ "Linc",
+ "NOPAUSE",
"NSFX",
"OBJE",
"onenote",
+ "PDFC",
+ "pdfwrite",
"PDSF",
"pged",
"Phares",
diff --git a/File-Watcher.csproj b/File-Watcher.csproj
index d2f67d5..18f5f72 100644
--- a/File-Watcher.csproj
+++ b/File-Watcher.csproj
@@ -18,30 +18,10 @@
-
-
+
+
-
-
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
-
- PreserveNewest
-
+
\ No newline at end of file
diff --git a/Helpers/HelperCompass.cs b/Helpers/HelperCompass.cs
index ae0e0e1..c7a9a62 100644
--- a/Helpers/HelperCompass.cs
+++ b/Helpers/HelperCompass.cs
@@ -29,7 +29,7 @@ internal class HelperCompass
if (string.IsNullOrEmpty(appSettings.DriveConfiguration.Password))
decrypted = string.Empty;
else
- decrypted = RijndaelEncryption.Decrypt(appSettings.DriveConfiguration.Password, appSettings.Company);
+ decrypted = RijndaelEncryption.Decrypt(appSettings.DriveConfiguration.Password, appSettings.FileWatcherConfiguration.Company);
arguments = $"use {appSettings.DriveConfiguration.Letter}: \"{appSettings.DriveConfiguration.Share}\" /p:yes /user:{appSettings.DriveConfiguration.User} {decrypted}";
_ = stringBuilder.Clear();
segments = arguments.Split(' ');
diff --git a/Helpers/HelperEAFLog.cs b/Helpers/HelperEAFLog.cs
index ac30c2c..c3568cf 100644
--- a/Helpers/HelperEAFLog.cs
+++ b/Helpers/HelperEAFLog.cs
@@ -7,8 +7,8 @@ internal static partial class HelperEAFLog
internal static bool DeleteFiles(AppSettings appSettings, ILogger logger)
{
- string[] files = Directory.GetFiles(appSettings.WatchDirectory, appSettings.EAFLogConfiguration.SearchPattern, SearchOption.AllDirectories);
- logger.LogInformation("After {MillisecondsDelay} with search pattern '{SearchPattern}' found {files}", appSettings.MillisecondsDelay, appSettings.EAFLogConfiguration.SearchPattern, files.Length);
+ string[] files = Directory.GetFiles(appSettings.FileWatcherConfiguration.WatchDirectory, appSettings.EAFLogConfiguration.SearchPattern, SearchOption.AllDirectories);
+ logger.LogInformation("After {MillisecondsDelay} with search pattern '{SearchPattern}' found {files}", appSettings.FileWatcherConfiguration.MillisecondsDelay, appSettings.EAFLogConfiguration.SearchPattern, files.Length);
foreach (string file in files)
{
if (file.EndsWith(".dll"))
diff --git a/Helpers/HelperEDADatabase.cs b/Helpers/HelperEDADatabase.cs
index 6d4f572..cd96cc5 100644
--- a/Helpers/HelperEDADatabase.cs
+++ b/Helpers/HelperEDADatabase.cs
@@ -1,9 +1,7 @@
using File_Watcher.Helpers.EDA;
using File_Watcher.Models;
-using System.Globalization;
using System.Text;
using System.Text.Json;
-using System.Text.RegularExpressions;
using System.Xml;
using System.Xml.Serialization;
@@ -12,12 +10,8 @@ namespace File_Watcher.Helpers;
internal static partial class HelperEDADatabase
{
- private static Calendar? _Calendar;
private static string? _EDADataCollectionPlansLastRun;
- [GeneratedRegex("[a-zA-Z0-9]{1,}")]
- private static partial Regex RegexAZ09();
-
private static Stream ToStream(string @this)
{
MemoryStream? stream = new();
@@ -207,7 +201,7 @@ internal static partial class HelperEDADatabase
}
}
- private static void DataCollectionPlans(AppSettings appSettings, ILogger logger, Calendar calendar, CancellationToken cancellationToken)
+ private static void DataCollectionPlans(AppSettings appSettings, ILogger logger, CancellationToken cancellationToken)
{
int fieldCount;
object @object;
@@ -219,7 +213,7 @@ internal static partial class HelperEDADatabase
Array objectTypes = Enum.GetValues(typeof(ModuleInstanceTypeName));
#pragma warning restore IL3050
Dictionary>>> rows = [];
- string decrypted = RijndaelEncryption.Decrypt(appSettings.EDADatabaseConfiguration.Password, appSettings.Company);
+ string decrypted = RijndaelEncryption.Decrypt(appSettings.EDADatabaseConfiguration.Password, appSettings.FileWatcherConfiguration.Company);
string connectionString = $"Data Source={appSettings.EDADatabaseConfiguration.TNS}; User Id={appSettings.EDADatabaseConfiguration.UserName}; Password={decrypted};";
rows.Add(appSettings.EDADatabaseConfiguration.Name, []);
foreach (ModuleInstanceTypeName objectType in objectTypes)
@@ -278,8 +272,7 @@ internal static partial class HelperEDADatabase
internal static bool SaveDataCollectionPlans(AppSettings appSettings, ILogger logger, CancellationToken cancellationToken)
{
- _Calendar ??= new CultureInfo("en-US").Calendar;
- DataCollectionPlans(appSettings, logger, _Calendar, cancellationToken);
+ DataCollectionPlans(appSettings, logger, cancellationToken);
return true;
}
diff --git a/Helpers/HelperEventLog.cs b/Helpers/HelperEventLog.cs
index 3f9cc28..9ac54f5 100644
--- a/Helpers/HelperEventLog.cs
+++ b/Helpers/HelperEventLog.cs
@@ -8,7 +8,7 @@ internal static partial class HelperEventLog
internal static bool ClearEventLogs(AppSettings appSettings, ILogger logger)
{
- if (Directory.Exists(appSettings.WatchDirectory))
+ if (Directory.Exists(appSettings.FileWatcherConfiguration.WatchDirectory))
{
#pragma warning disable CA1416
using (EventLog eventLog = new("Security", Environment.MachineName))
@@ -26,7 +26,7 @@ internal static partial class HelperEventLog
{ logger.LogInformation("Error: {logName} - {message}.", eventLog.LogDisplayName, ex.Message); }
}
#pragma warning restore CA1416
- logger.LogCritical("{Company}", appSettings.Company);
+ logger.LogCritical("{Company}", appSettings.FileWatcherConfiguration.Company);
}
return true;
}
diff --git a/Helpers/HelperInfinityQS.cs b/Helpers/HelperInfinityQS.cs
index 606bce2..07f82e6 100644
--- a/Helpers/HelperInfinityQS.cs
+++ b/Helpers/HelperInfinityQS.cs
@@ -6,10 +6,23 @@ namespace File_Watcher.Helpers;
internal static partial class HelperInfinityQS
{
+ private static void KillExisting(string processName)
+ {
+ Process[] processes = Process.GetProcessesByName(processName);
+ foreach (Process process in processes)
+ {
+ try
+ { process.Kill(); }
+ catch (Exception) { }
+ }
+ }
+
private static void RunMI()
{
#pragma warning disable CA1416
- ProcessStartInfo processStartInfo = new("iispcmi.exe")
+ string processName = "iispcmi.exe";
+ KillExisting(processName);
+ ProcessStartInfo processStartInfo = new(processName)
{
Domain = "Infineon",
UseShellExecute = false,
@@ -17,14 +30,15 @@ internal static partial class HelperInfinityQS
PasswordInClearText = "j(1(P%xB=g}3w9db",
WorkingDirectory = "C:/Program Files (x86)/InfinityQS International/ProFicient/Applications"
};
+ TimeSpan timeSpan = new(DateTime.Now.AddDays(7).Ticks - DateTime.Now.Ticks);
Process process = Process.Start(processStartInfo) ?? throw new NullReferenceException(nameof(Process));
- process.WaitForExit();
+ _ = process.WaitForExit((int)timeSpan.TotalMilliseconds);
#pragma warning restore CA1416
}
internal static bool Select(AppSettings appSettings, ILogger logger)
{
- logger.LogInformation(appSettings.Company);
+ logger.LogInformation(appSettings.FileWatcherConfiguration.Company);
RunMI();
return true;
}
diff --git a/Helpers/HelperStratus.cs b/Helpers/HelperStratus.cs
index 7d5b39b..684d8ed 100644
--- a/Helpers/HelperStratus.cs
+++ b/Helpers/HelperStratus.cs
@@ -29,7 +29,7 @@ internal static partial class HelperStratus
continue;
if (!Regex.Match(line, appSettings.StratusConfiguration.FileDelimiterPattern).Success)
continue;
- weekYearDirectory = Path.Combine(appSettings.WatchDirectory, $"{fileInfo.CreationTime.Year}_Week_{weekOfYear}");
+ weekYearDirectory = Path.Combine(appSettings.FileWatcherConfiguration.WatchDirectory, $"{fileInfo.CreationTime.Year}_Week_{weekOfYear}");
checkDirectory = Path.Combine(weekYearDirectory, fileInfo.CreationTime.ToString("yyyy-MM-dd"));
if (!Directory.Exists(checkDirectory))
_ = Directory.CreateDirectory(checkDirectory);
@@ -81,19 +81,19 @@ internal static partial class HelperStratus
internal static bool MoveFile(AppSettings appSettings, ILogger logger)
{
// http://10.95.154.10:8081/2023_Week_45/2023-11-08/a.txt
- string checkFile = Path.Combine(appSettings.WatchDirectory, appSettings.StratusConfiguration.WatchFile);
+ string checkFile = Path.Combine(appSettings.FileWatcherConfiguration.WatchDirectory, appSettings.StratusConfiguration.WatchFile);
try
{ TryMoveFile(appSettings, checkFile); }
catch (Exception ex)
{
logger.LogError(ex, "Inner loop error!");
- Thread.Sleep(appSettings.MillisecondsDelay * 5);
+ Thread.Sleep(appSettings.FileWatcherConfiguration.MillisecondsDelay * 5);
}
Console.WriteLine("Hello");
int days = appSettings.StratusConfiguration.Days;
- string sourceDirectory = appSettings.WatchDirectory;
- int millisecondsDelay = appSettings.MillisecondsDelay;
string pattern = appSettings.StratusConfiguration.FileDelimiterPattern;
+ string sourceDirectory = appSettings.FileWatcherConfiguration.WatchDirectory;
+ int millisecondsDelay = appSettings.FileWatcherConfiguration.MillisecondsDelay;
string archiveDirectory = Path.GetFullPath(appSettings.StratusConfiguration.Destination);
try
{ TryArchiveFilesFramework(sourceDirectory, pattern, archiveDirectory, days); }
diff --git a/Helpers/HelperTCP.cs b/Helpers/HelperTCP.cs
index fd1b221..169d1ff 100644
--- a/Helpers/HelperTCP.cs
+++ b/Helpers/HelperTCP.cs
@@ -99,7 +99,7 @@ internal static partial class HelperTCP
{
List results = [];
byte[] bytes = new byte[1024];
- string directory = Path.Combine(transmissionControlProtocolConfiguration.Destination, transmissionControlProtocolConfiguration.IPAddress);
+ string directory = Path.GetFullPath(Path.Combine(transmissionControlProtocolConfiguration.Destination, transmissionControlProtocolConfiguration.IPAddress));
if (!Directory.Exists(directory))
_ = Directory.CreateDirectory(directory);
do
@@ -110,7 +110,7 @@ internal static partial class HelperTCP
}
while (networkStream.DataAvailable);
if (results.Count > 0)
- File.WriteAllBytes(string.Concat(directory, $"-{DateTime.Now.Ticks}{directory[^1]}.raw"), results.ToArray());
+ File.WriteAllBytes(Path.Combine(directory, $"{DateTime.Now.Ticks}{directory[^1]}.raw"), results.ToArray());
}
internal static bool ReadWrite(AppSettings appSettings, ILogger logger)
diff --git a/Helpers/HelperWaferCounter.cs b/Helpers/HelperWaferCounter.cs
index 545933c..9a64507 100644
--- a/Helpers/HelperWaferCounter.cs
+++ b/Helpers/HelperWaferCounter.cs
@@ -11,7 +11,7 @@ internal static partial class HelperWaferCounter
string checkFile;
FileInfo fileInfo;
string checkDirectory;
- string[] directories = Directory.GetDirectories(appSettings.WatchDirectory, "*", SearchOption.TopDirectoryOnly);
+ string[] directories = Directory.GetDirectories(appSettings.FileWatcherConfiguration.WatchDirectory, "*", SearchOption.TopDirectoryOnly);
foreach (string directory in directories)
{
checkDirectory = !appSettings.WaferCounterConfiguration.MatchPath ? appSettings.WaferCounterConfiguration.Destination : Path.Combine(appSettings.WaferCounterConfiguration.Destination, Path.GetFileName(directory));
@@ -23,7 +23,7 @@ internal static partial class HelperWaferCounter
foreach (string file in files)
{
fileInfo = new(file);
- if (new TimeSpan(DateTime.Now.Ticks - fileInfo.LastWriteTime.Ticks).TotalMilliseconds < appSettings.MillisecondsDelay)
+ if (new TimeSpan(DateTime.Now.Ticks - fileInfo.LastWriteTime.Ticks).TotalMilliseconds < appSettings.FileWatcherConfiguration.MillisecondsDelay)
continue;
checkFile = Path.Combine(checkDirectory, Path.GetFileName(file));
if (File.Exists(checkFile))
diff --git a/Models/AppSettings.cs b/Models/AppSettings.cs
index 6fbe22e..b4db9f3 100644
--- a/Models/AppSettings.cs
+++ b/Models/AppSettings.cs
@@ -8,6 +8,7 @@ public record AppSettings(CamstarOracleConfiguration CamstarOracleConfiguration,
DriveConfiguration DriveConfiguration,
EAFLogConfiguration EAFLogConfiguration,
EDADatabaseConfiguration EDADatabaseConfiguration,
+ FileWatcherConfiguration FileWatcherConfiguration,
InfinityQSConfiguration InfinityQSConfiguration,
IsoConfiguration IsoConfiguration,
MetrologyConfiguration MetrologyConfiguration,
@@ -15,13 +16,7 @@ public record AppSettings(CamstarOracleConfiguration CamstarOracleConfiguration,
SerialConfiguration SerialConfiguration,
StratusConfiguration StratusConfiguration,
TransmissionControlProtocolConfiguration TransmissionControlProtocolConfiguration,
- WaferCounterConfiguration WaferCounterConfiguration,
- string BuildNumber,
- string Company,
- string GitCommitSeven,
- string Helper,
- int MillisecondsDelay,
- string WatchDirectory)
+ WaferCounterConfiguration WaferCounterConfiguration)
{
public override string ToString()
@@ -30,6 +25,73 @@ public record AppSettings(CamstarOracleConfiguration CamstarOracleConfiguration,
return result;
}
+ private static void Verify(AppSettings _)
+ { }
+
+ public static AppSettings Get(IConfigurationRoot configurationRoot)
+ {
+ AppSettings result;
+#pragma warning disable IL3050, IL2026
+ CamstarOracleConfiguration? camstarOracleConfiguration = configurationRoot.GetSection(nameof(CamstarOracleConfiguration)).Get();
+ CompassConfiguration? compassConfiguration = configurationRoot.GetSection(nameof(CompassConfiguration)).Get();
+ DriveConfiguration? driveConfiguration = configurationRoot.GetSection(nameof(DriveConfiguration)).Get();
+ EAFLogConfiguration? eafLogConfiguration = configurationRoot.GetSection(nameof(EAFLogConfiguration)).Get();
+ EDADatabaseConfiguration? edaDatabaseConfiguration = configurationRoot.GetSection(nameof(EDADatabaseConfiguration)).Get();
+ FileWatcherConfiguration? fileWatcherConfiguration = configurationRoot.GetSection(nameof(FileWatcherConfiguration)).Get();
+ InfinityQSConfiguration? infinityQSConfiguration = configurationRoot.GetSection(nameof(InfinityQSConfiguration)).Get();
+ IsoConfiguration? isoConfiguration = configurationRoot.GetSection(nameof(IsoConfiguration)).Get();
+ MetrologyConfiguration? metrologyConfiguration = configurationRoot.GetSection(nameof(MetrologyConfiguration)).Get();
+ NugetConfiguration? nugetConfiguration = configurationRoot.GetSection(nameof(NugetConfiguration)).Get();
+ SerialConfiguration? serialConfiguration = configurationRoot.GetSection(nameof(SerialConfiguration)).Get();
+ StratusConfiguration? stratusConfiguration = configurationRoot.GetSection(nameof(StratusConfiguration)).Get();
+ TransmissionControlProtocolConfiguration? transmissionControlProtocolConfiguration = configurationRoot.GetSection(nameof(TransmissionControlProtocolConfiguration)).Get();
+ WaferCounterConfiguration? waferCounterConfiguration = configurationRoot.GetSection(nameof(WaferCounterConfiguration)).Get();
+#pragma warning restore IL3050, IL2026
+ if (camstarOracleConfiguration is null
+ || compassConfiguration is null
+ || driveConfiguration is null
+ || eafLogConfiguration is null
+ || edaDatabaseConfiguration is null
+ || fileWatcherConfiguration is null
+ || infinityQSConfiguration is null
+ || isoConfiguration is null
+ || metrologyConfiguration is null
+ || nugetConfiguration is null
+ || serialConfiguration is null
+ || stratusConfiguration is null
+ || transmissionControlProtocolConfiguration is null
+ || waferCounterConfiguration is null
+ || fileWatcherConfiguration?.Company 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())}");
+ }
+ result = new(camstarOracleConfiguration,
+ compassConfiguration,
+ driveConfiguration,
+ eafLogConfiguration,
+ edaDatabaseConfiguration,
+ fileWatcherConfiguration,
+ infinityQSConfiguration,
+ isoConfiguration,
+ metrologyConfiguration,
+ nugetConfiguration,
+ serialConfiguration,
+ stratusConfiguration,
+ transmissionControlProtocolConfiguration,
+ waferCounterConfiguration);
+ Verify(result);
+ return result;
+ }
+
}
[JsonSourceGenerationOptions(WriteIndented = true)]
diff --git a/Models/Binder/.editorconfig b/Models/Binder/.editorconfig
deleted file mode 100644
index 1c444cd..0000000
--- a/Models/Binder/.editorconfig
+++ /dev/null
@@ -1,2 +0,0 @@
-[*.cs]
-csharp_preserve_single_line_statements = true
\ No newline at end of file
diff --git a/Models/Binder/AppSettings.cs b/Models/Binder/AppSettings.cs
deleted file mode 100644
index e49dc0e..0000000
--- a/Models/Binder/AppSettings.cs
+++ /dev/null
@@ -1,150 +0,0 @@
-using System.Text.Json;
-using System.Text.Json.Serialization;
-
-namespace File_Watcher.Models.Binder;
-
-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; }
- public int? MillisecondsDelay { get; set; }
- public string? WatchDirectory { get; set; }
-
- public override string ToString()
- {
- string result = JsonSerializer.Serialize(this, BinderAppSettingsSourceGenerationContext.Default.AppSettings);
- return result;
- }
-
- private static void PreVerify(IConfigurationRoot configurationRoot, AppSettings? appSettings)
- {
- if (appSettings?.BuildNumber 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(AppSettings _)
- {
- }
-
- private static Models.AppSettings Get(AppSettings? appSettings,
- CamstarOracleConfiguration camstarOracleConfiguration,
- CompassConfiguration compassConfiguration,
- DriveConfiguration driveConfiguration,
- EAFLogConfiguration eafLogConfiguration,
- EDADatabaseConfiguration edaDatabaseConfiguration,
- InfinityQSConfiguration infinityQSConfiguration,
- IsoConfiguration isoConfiguration,
- MetrologyConfiguration metrologyConfiguration,
- NugetConfiguration nugetConfiguration,
- SerialConfiguration serialConfiguration,
- StratusConfiguration stratusConfiguration,
- TransmissionControlProtocolConfiguration transmissionControlProtocolConfiguration,
- WaferCounterConfiguration waferCounterConfiguration)
- {
- Models.AppSettings result;
- if (appSettings is null) throw new NullReferenceException(nameof(appSettings));
- if (appSettings.BuildNumber is null) throw new NullReferenceException(nameof(BuildNumber));
- if (appSettings.Company is null) throw new NullReferenceException(nameof(Company));
- if (appSettings.GitCommitSeven is null) throw new NullReferenceException(nameof(GitCommitSeven));
- if (appSettings.Helper is null) throw new NullReferenceException(nameof(Helper));
- if (appSettings.MillisecondsDelay is null) throw new NullReferenceException(nameof(MillisecondsDelay));
- if (appSettings.WatchDirectory is null) throw new NullReferenceException(nameof(WatchDirectory));
- Verify(appSettings);
- result = new(camstarOracleConfiguration,
- compassConfiguration,
- driveConfiguration,
- eafLogConfiguration,
- edaDatabaseConfiguration,
- infinityQSConfiguration,
- isoConfiguration,
- metrologyConfiguration,
- nugetConfiguration,
- serialConfiguration,
- stratusConfiguration,
- transmissionControlProtocolConfiguration,
- waferCounterConfiguration,
- appSettings.BuildNumber,
- appSettings.Company,
- appSettings.GitCommitSeven,
- appSettings.Helper,
- appSettings.MillisecondsDelay.Value,
- appSettings.WatchDirectory);
- return result;
- }
-
- private static Models.AppSettings Get(AppSettings? appSettings)
- {
- Models.AppSettings? results;
- string? json;
- if (appSettings is null || appSettings.ConfigurationFileName is null)
- throw new NotSupportedException($"{nameof(appSettings.ConfigurationFileName)} must be set!");
- string jsonFile = Path.Combine(AppContext.BaseDirectory, appSettings.ConfigurationFileName);
- if (File.Exists(jsonFile))
- json = File.ReadAllText(jsonFile);
- else
- {
- json = 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(json) && File.Exists(jsonFile))
- json = File.ReadAllText(jsonFile);
- results = (string.IsNullOrEmpty(json) ? null : results = JsonSerializer.Deserialize(json, AppSettingsSourceGenerationContext.Default.AppSettings)) ??
- throw new NullReferenceException(nameof(Models.AppSettings));
- results = Get(appSettings,
- results.CamstarOracleConfiguration,
- results.CompassConfiguration,
- results.DriveConfiguration,
- results.EAFLogConfiguration,
- results.EDADatabaseConfiguration,
- results.InfinityQSConfiguration,
- results.IsoConfiguration,
- results.MetrologyConfiguration,
- results.NugetConfiguration,
- results.SerialConfiguration,
- results.StratusConfiguration,
- results.TransmissionControlProtocolConfiguration,
- results.WaferCounterConfiguration);
- return results;
- }
-
- 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);
- result = Get(appSettings);
- return result;
- }
-
-}
-
-[JsonSourceGenerationOptions(WriteIndented = true)]
-[JsonSerializable(typeof(AppSettings))]
-internal partial class BinderAppSettingsSourceGenerationContext : JsonSerializerContext
-{
-}
\ No newline at end of file
diff --git a/Models/FileWatcherConfiguration.cs b/Models/FileWatcherConfiguration.cs
new file mode 100644
index 0000000..ba29db9
--- /dev/null
+++ b/Models/FileWatcherConfiguration.cs
@@ -0,0 +1,24 @@
+using System.Text.Json;
+using System.Text.Json.Serialization;
+
+namespace File_Watcher.Models;
+
+public record FileWatcherConfiguration(string Company,
+ string Helper,
+ int MillisecondsDelay,
+ string WatchDirectory)
+{
+
+ public override string ToString()
+ {
+ string result = JsonSerializer.Serialize(this, FileWatcherConfigurationSourceGenerationContext.Default.FileWatcherConfiguration);
+ return result;
+ }
+
+}
+
+[JsonSourceGenerationOptions(WriteIndented = true)]
+[JsonSerializable(typeof(FileWatcherConfiguration))]
+internal partial class FileWatcherConfigurationSourceGenerationContext : JsonSerializerContext
+{
+}
\ No newline at end of file
diff --git a/Program.cs b/Program.cs
index 2d8bd32..3740d23 100644
--- a/Program.cs
+++ b/Program.cs
@@ -14,12 +14,16 @@ public class Program
WebApplicationBuilder webApplicationBuilder = WebApplication.CreateBuilder(args);
#pragma warning restore IL3050
_ = webApplicationBuilder.Configuration.AddUserSecrets();
- AppSettings appSettings = Models.Binder.AppSettings.Get(webApplicationBuilder.Configuration);
- if (string.IsNullOrEmpty(appSettings.Company))
+ AppSettings appSettings = AppSettings.Get(webApplicationBuilder.Configuration);
+ if (string.IsNullOrEmpty(appSettings.FileWatcherConfiguration.Company))
throw new Exception("Company name must have a value!");
try
{
- List collection = [];
+ List collection =
+ [
+ $"BuildNumber:{webApplicationBuilder.Configuration.GetValue("BuildNumber")};",
+ $"GitCommitSeven:{webApplicationBuilder.Configuration.GetValue("GitCommitSeven")};"
+ ];
_ = webApplicationBuilder.Services.AddHttpClient();
_ = webApplicationBuilder.Services.AddHostedService();
_ = webApplicationBuilder.Services.AddSingleton(collection);
@@ -38,13 +42,13 @@ public class Program
}
using WebApplication webApplication = webApplicationBuilder.Build();
logger = webApplication.Services.GetRequiredService>();
- if (string.IsNullOrEmpty(appSettings.Company))
+ if (string.IsNullOrEmpty(appSettings.FileWatcherConfiguration.Company))
{
Environment.ExitCode = -1;
_ = webApplication.StopAsync();
}
logger.LogInformation("Starting Web Application");
- logger.LogCritical("{Company}", appSettings.Company);
+ logger.LogCritical("{Company}", appSettings.FileWatcherConfiguration.Company);
await webApplication.RunAsync();
}
catch (Exception ex)
diff --git a/Worker.cs b/Worker.cs
index 06ae561..e2c20b0 100644
--- a/Worker.cs
+++ b/Worker.cs
@@ -15,7 +15,7 @@ public partial class Worker : BackgroundService
public override Task StopAsync(CancellationToken cancellationToken)
{
- if (_AppSettings.Helper == nameof(Helpers.HelperCamstarOracle))
+ if (_AppSettings.FileWatcherConfiguration.Helper == nameof(Helpers.HelperCamstarOracle))
Helpers.HelperCamstarOracle.Heartbeat(_AppSettings, _HttpClientFactory, _Logger, Infineon.Monitoring.MonA.State.Down, cancellationToken);
return base.StopAsync(cancellationToken);
}
@@ -25,7 +25,7 @@ public partial class Worker : BackgroundService
_Logger = logger;
_AppSettings = appSettings;
_HttpClientFactory = httpClientFactory;
- logger.LogInformation("{buildNumber}-{gitCommitSeven}", _AppSettings.BuildNumber, _AppSettings.GitCommitSeven);
+ logger.LogInformation(string.Join(Environment.NewLine, collection));
try
{ logger.LogInformation("<{folder}>", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)); }
catch (Exception) { }
@@ -35,18 +35,18 @@ public partial class Worker : BackgroundService
private void BodyInner(CancellationToken cancellationToken)
{
- _Logger.LogInformation("A) Next execute will be at {date}", DateTime.Now.AddMilliseconds(_AppSettings.MillisecondsDelay).ToString("yyyy-MM-dd hh:mm:ss.fff tt"));
+ _Logger.LogInformation("A) Next execute will be at {date}", DateTime.Now.AddMilliseconds(_AppSettings.FileWatcherConfiguration.MillisecondsDelay).ToString("yyyy-MM-dd hh:mm:ss.fff tt"));
if (_First is null || _First.Value)
{
_First = false;
- if (_AppSettings.Helper == nameof(Helpers.HelperCamstarOracle))
+ if (_AppSettings.FileWatcherConfiguration.Helper == nameof(Helpers.HelperCamstarOracle))
Helpers.HelperCamstarOracle.Heartbeat(_AppSettings, _HttpClientFactory, _Logger, Infineon.Monitoring.MonA.State.Up, cancellationToken);
}
- if (!Directory.Exists(_AppSettings.WatchDirectory))
- _ = Directory.CreateDirectory(_AppSettings.WatchDirectory);
+ if (!Directory.Exists(_AppSettings.FileWatcherConfiguration.WatchDirectory))
+ _ = Directory.CreateDirectory(_AppSettings.FileWatcherConfiguration.WatchDirectory);
else
{
- _ = _AppSettings.Helper switch
+ _ = _AppSettings.FileWatcherConfiguration.Helper switch
{
nameof(Helpers.HelperNuget) => Helpers.HelperNuget.Sync(_AppSettings, _Logger),
nameof(Helpers.HelperTCP) => Helpers.HelperTCP.ReadWrite(_AppSettings, _Logger),
@@ -64,28 +64,28 @@ public partial class Worker : BackgroundService
_ => throw new NotSupportedException()
};
}
- _Logger.LogInformation("B) Next execute will be at {date}", DateTime.Now.AddMilliseconds(_AppSettings.MillisecondsDelay).ToString("yyyy-MM-dd hh:mm:ss.fff tt"));
+ _Logger.LogInformation("B) Next execute will be at {date}", DateTime.Now.AddMilliseconds(_AppSettings.FileWatcherConfiguration.MillisecondsDelay).ToString("yyyy-MM-dd hh:mm:ss.fff tt"));
}
private async Task Body(CancellationToken cancellationToken)
{
if (!_IsWindowsService)
{
- _Logger.LogInformation("Set break point and skip to run {_AppSettings.Helper}!", _AppSettings.Helper);
- throw new EvaluateException($"Set break point and skip to run {_AppSettings.Helper}!");
+ _Logger.LogInformation("Set break point and skip to run {_AppSettings.FileWatcherConfiguration.Helper}!", _AppSettings.FileWatcherConfiguration.Helper);
+ throw new EvaluateException($"Set break point and skip to run {_AppSettings.FileWatcherConfiguration.Helper}!");
}
if (!_IsWindowsService)
{
for (int i = 0; i < int.MaxValue; i++)
{
BodyInner(cancellationToken);
- Thread.Sleep(_AppSettings.MillisecondsDelay);
+ Thread.Sleep(_AppSettings.FileWatcherConfiguration.MillisecondsDelay);
}
}
while (_IsWindowsService && !cancellationToken.IsCancellationRequested)
{
BodyInner(cancellationToken);
- await Task.Delay(_AppSettings.MillisecondsDelay, cancellationToken);
+ await Task.Delay(_AppSettings.FileWatcherConfiguration.MillisecondsDelay, cancellationToken);
}
}
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index 1380eab..0000000
--- a/package-lock.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "name": "File-Watcher",
- "lockfileVersion": 2,
- "requires": true,
- "packages": {
- "": {
- "devDependencies": {
- "prettier": "3.0.0"
- }
- },
- "node_modules/prettier": {
- "version": "3.0.0",
- "resolved": "http://localhost:4873/prettier/-/prettier-3.0.0.tgz",
- "integrity": "sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==",
- "dev": true,
- "bin": {
- "prettier": "bin/prettier.cjs"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
- }
- }
- },
- "dependencies": {
- "prettier": {
- "version": "3.0.0",
- "resolved": "http://localhost:4873/prettier/-/prettier-3.0.0.tgz",
- "integrity": "sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==",
- "dev": true
- }
- }
-}
diff --git a/package.json b/package.json
deleted file mode 100644
index b7f882a..0000000
--- a/package.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "scripts": {
- "prettier.check": "prettier . --check",
- "prettier.write": "prettier . --write",
- "garbage-collect": "git gc"
- },
- "devDependencies": {
- "prettier": "3.0.0"
- }
-}
\ No newline at end of file