diff --git a/Adaptation/DEP08CEPIEPSILON.yml b/Adaptation/DEP08CEPIEPSILON.yml index 857c0cd..ebcd484 100644 --- a/Adaptation/DEP08CEPIEPSILON.yml +++ b/Adaptation/DEP08CEPIEPSILON.yml @@ -38,9 +38,27 @@ stages: displayName: "Echo Check" - script: '"C:\program files\dotnet\dotnet.exe" nuget locals all --clear' - displayName: "Nuget Clear" + displayName: "Nuget Nuget Clear" enabled: false + - task: CopyFiles@2 + displayName: 'Copy GhostPCL Files to: D:\EAF-Mesa-Integration\copy' + inputs: + Contents: "*" + SourceFolder: '\\mesfs.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\GhostPCL' + TargetFolder: 'D:\EAF-Mesa-Integration\copy\GhostPCL' + OverWrite: true + enabled: true + + - task: CopyFiles@2 + displayName: 'Copy LincPDFC Files to: D:\EAF-Mesa-Integration\copy' + inputs: + Contents: "*" + SourceFolder: '\\mesfs.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\LincPDFC' + TargetFolder: 'D:\EAF-Mesa-Integration\copy\LincPDFC' + OverWrite: true + enabled: true + - script: | "C:\program files\dotnet\dotnet.exe" user-secrets init "C:\program files\dotnet\dotnet.exe" user-secrets set "BuildNumber" "$(Build.BuildId)" @@ -181,9 +199,27 @@ stages: displayName: "Echo Check" - script: '"C:\program files\dotnet\dotnet.exe" nuget locals all --clear' - displayName: "Nuget Clear" + displayName: "Nuget Nuget Clear" enabled: false + - task: CopyFiles@2 + displayName: 'Copy GhostPCL Files to: D:\EAF-Mesa-Integration\copy' + inputs: + Contents: "*" + SourceFolder: '\\mestsa003.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\GhostPCL' + TargetFolder: 'D:\EAF-Mesa-Integration\copy\GhostPCL' + OverWrite: true + enabled: true + + - task: CopyFiles@2 + displayName: 'Copy LincPDFC Files to: D:\EAF-Mesa-Integration\copy' + inputs: + Contents: "*" + SourceFolder: '\\mestsa003.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\LincPDFC' + TargetFolder: 'D:\EAF-Mesa-Integration\copy\LincPDFC' + OverWrite: true + enabled: true + - script: | "C:\program files\dotnet\dotnet.exe" user-secrets init "C:\program files\dotnet\dotnet.exe" user-secrets set "BuildNumber" "$(Build.BuildId)" diff --git a/Adaptation/FileHandlers/R29/FileRead.cs b/Adaptation/FileHandlers/R29/FileRead.cs index 3a69e09..138d374 100644 --- a/Adaptation/FileHandlers/R29/FileRead.cs +++ b/Adaptation/FileHandlers/R29/FileRead.cs @@ -231,7 +231,7 @@ public class FileRead : Shared.FileRead, IFileRead Test[] tests = (from l in descriptions select (Test)l.Test).ToArray(); if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0) CopyFile(reportFullPath); - results = new Tuple>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics[0]), tests, jsonElements, new List()); + results = new Tuple>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics), tests, jsonElements, new List()); return results; } diff --git a/Adaptation/FileHandlers/R32/FileRead.cs b/Adaptation/FileHandlers/R32/FileRead.cs index fa4a3e9..f2dec4a 100644 --- a/Adaptation/FileHandlers/R32/FileRead.cs +++ b/Adaptation/FileHandlers/R32/FileRead.cs @@ -231,7 +231,7 @@ public class FileRead : Shared.FileRead, IFileRead Test[] tests = (from l in descriptions select (Test)l.Test).ToArray(); if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0) CopyFile(reportFullPath); - results = new Tuple>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics[0]), tests, jsonElements, new List()); + results = new Tuple>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics), tests, jsonElements, new List()); return results; } diff --git a/Adaptation/FileHandlers/R36/FileRead.cs b/Adaptation/FileHandlers/R36/FileRead.cs index 1763522..5439318 100644 --- a/Adaptation/FileHandlers/R36/FileRead.cs +++ b/Adaptation/FileHandlers/R36/FileRead.cs @@ -231,7 +231,7 @@ public class FileRead : Shared.FileRead, IFileRead Test[] tests = (from l in descriptions select (Test)l.Test).ToArray(); if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0) CopyFile(reportFullPath); - results = new Tuple>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics[0]), tests, jsonElements, new List()); + results = new Tuple>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics), tests, jsonElements, new List()); return results; } diff --git a/Adaptation/FileHandlers/R55/FileRead.cs b/Adaptation/FileHandlers/R55/FileRead.cs index 9b418ca..891da19 100644 --- a/Adaptation/FileHandlers/R55/FileRead.cs +++ b/Adaptation/FileHandlers/R55/FileRead.cs @@ -231,7 +231,7 @@ public class FileRead : Shared.FileRead, IFileRead Test[] tests = (from l in descriptions select (Test)l.Test).ToArray(); if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0) CopyFile(reportFullPath); - results = new Tuple>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics[0]), tests, jsonElements, new List()); + results = new Tuple>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics), tests, jsonElements, new List()); return results; } diff --git a/Adaptation/FileHandlers/R57/FileRead.cs b/Adaptation/FileHandlers/R57/FileRead.cs index b50b08b..9f45b70 100644 --- a/Adaptation/FileHandlers/R57/FileRead.cs +++ b/Adaptation/FileHandlers/R57/FileRead.cs @@ -231,7 +231,7 @@ public class FileRead : Shared.FileRead, IFileRead Test[] tests = (from l in descriptions select (Test)l.Test).ToArray(); if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0) CopyFile(reportFullPath); - results = new Tuple>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics[0]), tests, jsonElements, new List()); + results = new Tuple>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics), tests, jsonElements, new List()); return results; } diff --git a/Adaptation/FileHandlers/R61/FileRead.cs b/Adaptation/FileHandlers/R61/FileRead.cs index cf28359..bec449a 100644 --- a/Adaptation/FileHandlers/R61/FileRead.cs +++ b/Adaptation/FileHandlers/R61/FileRead.cs @@ -231,7 +231,7 @@ public class FileRead : Shared.FileRead, IFileRead Test[] tests = (from l in descriptions select (Test)l.Test).ToArray(); if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0) CopyFile(reportFullPath); - results = new Tuple>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics[0]), tests, jsonElements, new List()); + results = new Tuple>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics), tests, jsonElements, new List()); return results; } diff --git a/Adaptation/FileHandlers/R62/FileRead.cs b/Adaptation/FileHandlers/R62/FileRead.cs index 95f1fc2..fb1d420 100644 --- a/Adaptation/FileHandlers/R62/FileRead.cs +++ b/Adaptation/FileHandlers/R62/FileRead.cs @@ -231,7 +231,7 @@ public class FileRead : Shared.FileRead, IFileRead Test[] tests = (from l in descriptions select (Test)l.Test).ToArray(); if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0) CopyFile(reportFullPath); - results = new Tuple>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics[0]), tests, jsonElements, new List()); + results = new Tuple>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics), tests, jsonElements, new List()); return results; } diff --git a/Adaptation/FileHandlers/R65/FileRead.cs b/Adaptation/FileHandlers/R65/FileRead.cs index 63847b8..6506a12 100644 --- a/Adaptation/FileHandlers/R65/FileRead.cs +++ b/Adaptation/FileHandlers/R65/FileRead.cs @@ -231,7 +231,7 @@ public class FileRead : Shared.FileRead, IFileRead Test[] tests = (from l in descriptions select (Test)l.Test).ToArray(); if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0) CopyFile(reportFullPath); - results = new Tuple>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics[0]), tests, jsonElements, new List()); + results = new Tuple>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics), tests, jsonElements, new List()); return results; } diff --git a/Adaptation/FileHandlers/R75/FileRead.cs b/Adaptation/FileHandlers/R75/FileRead.cs index 8e6c62b..a59354a 100644 --- a/Adaptation/FileHandlers/R75/FileRead.cs +++ b/Adaptation/FileHandlers/R75/FileRead.cs @@ -231,7 +231,7 @@ public class FileRead : Shared.FileRead, IFileRead Test[] tests = (from l in descriptions select (Test)l.Test).ToArray(); if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0) CopyFile(reportFullPath); - results = new Tuple>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics[0]), tests, jsonElements, new List()); + results = new Tuple>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics), tests, jsonElements, new List()); return results; } diff --git a/Adaptation/FileHandlers/R77/FileRead.cs b/Adaptation/FileHandlers/R77/FileRead.cs index 9a516e3..8226efa 100644 --- a/Adaptation/FileHandlers/R77/FileRead.cs +++ b/Adaptation/FileHandlers/R77/FileRead.cs @@ -231,7 +231,7 @@ public class FileRead : Shared.FileRead, IFileRead Test[] tests = (from l in descriptions select (Test)l.Test).ToArray(); if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0) CopyFile(reportFullPath); - results = new Tuple>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics[0]), tests, jsonElements, new List()); + results = new Tuple>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics), tests, jsonElements, new List()); return results; } diff --git a/Adaptation/Shared/FileRead.cs b/Adaptation/Shared/FileRead.cs index 49a4526..03b4109 100644 --- a/Adaptation/Shared/FileRead.cs +++ b/Adaptation/Shared/FileRead.cs @@ -478,27 +478,14 @@ public class FileRead : Properties.IFileRead } } - protected void WritePDSF(IFileRead fileRead, JsonElement[] jsonElements) + protected static void WritePDSF(IFileRead fileRead, JsonElement[] jsonElements) { - string directory; - string day = $"{_Logistics.DateTimeFromSequence:yyyy-MM-dd}"; - string weekOfYear = _Calendar.GetWeekOfYear(_Logistics.DateTimeFromSequence, CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString("00"); - string weekDirectory = $"{_Logistics.DateTimeFromSequence:yyyy}_Week_{weekOfYear}"; - if (!_CellInstanceConnectionName.StartsWith(_CellInstanceName) && _CellInstanceConnectionNameBase == _EquipmentType) - directory = Path.Combine(_TracePath, _EquipmentType, "Target", weekDirectory, day, _CellInstanceName, _CellInstanceConnectionName); - else - directory = Path.Combine(_TracePath, _EquipmentType, "Source", weekDirectory, day, _CellInstanceName, _CellInstanceConnectionName); - if (!Directory.Exists(directory)) - _ = Directory.CreateDirectory(directory); - string file = Path.Combine(directory, string.Concat(_Logistics.MesEntity, "_", _Logistics.Sequence, ".ipdsf")); - string lines = ProcessDataStandardFormat.GetPDSFText(fileRead, _Logistics, jsonElements, logisticsText: string.Empty); - File.WriteAllText(file, lines); - if (_Logistics.TotalSecondsSinceLastWriteTimeFromSequence > 600) - { - try - { File.SetLastWriteTime(file, _Logistics.DateTimeFromSequence); } - catch (Exception) { } - } +#pragma warning disable CA1510 + if (fileRead is null) + throw new ArgumentNullException(nameof(fileRead)); + if (jsonElements is null) + throw new ArgumentNullException(nameof(jsonElements)); +#pragma warning restore CA1510 } protected void WaitForThread(Thread thread, List threadExceptions) diff --git a/Adaptation/Shared/ProcessDataStandardFormat.cs b/Adaptation/Shared/ProcessDataStandardFormat.cs index 113ba5f..35e281a 100644 --- a/Adaptation/Shared/ProcessDataStandardFormat.cs +++ b/Adaptation/Shared/ProcessDataStandardFormat.cs @@ -136,6 +136,7 @@ internal class ProcessDataStandardFormat internal static ProcessDataStandardFormat GetProcessDataStandardFormat(string reportFullPath, string[]? lines = null, int columnsLine = 6) { ProcessDataStandardFormat result; + long? sequence; string segment; string[] segments; bool addToFooter = false; @@ -186,13 +187,25 @@ internal class ProcessDataStandardFormat } string? linesOne = lines.Length > 0 && body.Count == 0 && columns.Count == 0 ? lines[1] : null; logistics = GetLogistics(footer, linesOne: linesOne); + if (logistics.Count == 0) + sequence = null; + else + { + segments = logistics[0].Split(new string[] { "SEQUENCE=" }, StringSplitOptions.None); + sequence = segments.Length < 2 || !long.TryParse(segments[1].Split(';')[0], out long s) ? null : s; + } + if (sequence is null && !string.IsNullOrEmpty(reportFullPath)) + { + FileInfo fileInfo = new(reportFullPath); + sequence = fileInfo.LastWriteTime.Ticks; + } result = new(body: body.AsReadOnly(), columns: columns.AsReadOnly(), footer: footer.AsReadOnly(), header: header.AsReadOnly(), inputPDSF: null, logistics: logistics, - sequence: null); + sequence: sequence); return result; } @@ -236,7 +249,7 @@ internal class ProcessDataStandardFormat private static ProcessDataStandardFormat GetProcessDataStandardFormat(DateTime lastWriteTime, int columnsLine, string path, string[]? lines) { ProcessDataStandardFormat result; - long sequence; + long? sequence; string[] segments; bool addToFooter = false; List body = new(); @@ -268,12 +281,13 @@ internal class ProcessDataStandardFormat } logistics = GetLogistics(footer, linesOne: null); if (logistics.Count == 0) - sequence = lastWriteTime.Ticks; + sequence = null; else { segments = logistics[0].Split(new string[] { "SEQUENCE=" }, StringSplitOptions.None); - sequence = segments.Length < 2 || !long.TryParse(segments[1].Split(';')[0], out long s) ? lastWriteTime.Ticks : s; + sequence = segments.Length < 2 || !long.TryParse(segments[1].Split(';')[0], out long s) ? null : s; } + sequence ??= lastWriteTime.Ticks; result = new(body: body.AsReadOnly(), columns: new(columns), footer: footer.AsReadOnly(), @@ -302,7 +316,7 @@ internal class ProcessDataStandardFormat segments = bodyLine.Split('\t').ToList(); for (int c = 0; c < segments.Count; c++) { - value = segments[c].Replace("\"", "\\\"").Replace("\\", "\\\\"); + value = segments[c].Replace("\\", "\\\\").Replace("\"", "\\\""); _ = stringBuilder.Append('"').Append(processDataStandardFormat.Columns[c]).Append("\":\"").Append(value).Append("\","); } _ = stringBuilder.Remove(stringBuilder.Length - 1, 1); @@ -378,7 +392,7 @@ internal class ProcessDataStandardFormat break; for (int c = 0; c < segments.Length; c++) { - value = segments[c].Replace("\"", "\\\"").Replace("\\", "\\\\"); + value = segments[c].Replace("\\", "\\\\").Replace("\"", "\\\""); line += string.Concat('"', processDataStandardFormat.InputPDSF.Columns[c].Trim('"'), '"', ':', '"', value, '"', ','); } line = string.Concat(line.Substring(0, line.Length - 1), '}'); @@ -517,7 +531,7 @@ internal class ProcessDataStandardFormat { for (int c = 1; c < segments.Length; c++) { - value = segments[c].Replace("\"", "\\\"").Replace("\\", "\\\\"); + value = segments[c].Replace("\\", "\\\\").Replace("\"", "\\\""); _ = stringBuilder.Append('"').Append(processDataStandardFormat.Columns[c]).Append("\":\"").Append(value).Append("\","); } } @@ -525,7 +539,7 @@ internal class ProcessDataStandardFormat { for (int c = 1; c < segments.Length; c++) { - value = segments[c].Replace("\"", "\\\"").Replace("\\", "\\\\"); + value = segments[c].Replace("\\", "\\\\").Replace("\"", "\\\""); if (string.IsNullOrEmpty(value)) _ = stringBuilder.Append('"').Append(processDataStandardFormat.Columns[c]).Append("\":").Append(value).Append("null,"); else if (value.All(char.IsDigit))