Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d757093e4e | |||
| 9423feaaf5 | |||
| 9810cfd43c | |||
| 4e9c86f64e | |||
| a9bfda7da6 |
@ -107,6 +107,7 @@ dotnet_diagnostic.CA1864.severity = none # CA1864: To avoid double lookup, call
|
|||||||
dotnet_diagnostic.CA1866.severity = none # CA1866: Use 'string.EndsWith(char)' instead of 'string.EndsWith(string)' when you have a string with a single char
|
dotnet_diagnostic.CA1866.severity = none # CA1866: Use 'string.EndsWith(char)' instead of 'string.EndsWith(string)' when you have a string with a single char
|
||||||
dotnet_diagnostic.CA1869.severity = none # CA1869: Avoid creating a new 'JsonSerializerOptions' instance for every serialization operation. Cache and reuse instances instead.
|
dotnet_diagnostic.CA1869.severity = none # CA1869: Avoid creating a new 'JsonSerializerOptions' instance for every serialization operation. Cache and reuse instances instead.
|
||||||
dotnet_diagnostic.CA2254.severity = none # CA2254: The logging message template should not vary between calls to 'LoggerExtensions.LogInformation(ILogger, string?, params object?[])'
|
dotnet_diagnostic.CA2254.severity = none # CA2254: The logging message template should not vary between calls to 'LoggerExtensions.LogInformation(ILogger, string?, params object?[])'
|
||||||
|
dotnet_diagnostic.CS0618.severity = none # 'member' is obsolete: 'description'
|
||||||
dotnet_diagnostic.IDE0001.severity = warning # IDE0001: Simplify name
|
dotnet_diagnostic.IDE0001.severity = warning # IDE0001: Simplify name
|
||||||
dotnet_diagnostic.IDE0002.severity = warning # Simplify (member access) - System.Version.Equals("1", "2"); Version.Equals("1", "2");
|
dotnet_diagnostic.IDE0002.severity = warning # Simplify (member access) - System.Version.Equals("1", "2"); Version.Equals("1", "2");
|
||||||
dotnet_diagnostic.IDE0004.severity = warning # IDE0004: Cast is redundant.
|
dotnet_diagnostic.IDE0004.severity = warning # IDE0004: Cast is redundant.
|
||||||
@ -123,8 +124,9 @@ dotnet_diagnostic.IDE0300.severity = none # IDE0300: Collection initialization c
|
|||||||
dotnet_diagnostic.IDE0301.severity = none #IDE0301: Collection initialization can be simplified
|
dotnet_diagnostic.IDE0301.severity = none #IDE0301: Collection initialization can be simplified
|
||||||
dotnet_diagnostic.IDE0305.severity = none # IDE0305: Collection initialization can be simplified
|
dotnet_diagnostic.IDE0305.severity = none # IDE0305: Collection initialization can be simplified
|
||||||
dotnet_diagnostic.MSTEST0015.severity = none # MSTEST0015: Test method {method} should not be ignored
|
dotnet_diagnostic.MSTEST0015.severity = none # MSTEST0015: Test method {method} should not be ignored
|
||||||
dotnet_diagnostic.MSTEST0037.severity = error # MSTEST0037: Use proper 'Assert' methods
|
dotnet_diagnostic.MSTEST0037.severity = none # MSTEST0037: Use proper 'Assert' methods
|
||||||
dotnet_diagnostic.SYSLIB1045.severity = none # SYSLIB1045: diagnostics for regex source generation
|
dotnet_diagnostic.SYSLIB1045.severity = none # SYSLIB1045: diagnostics for regex source generation
|
||||||
|
dotnet_diagnostic.MSTEST0048.severity = none # MSTEST0048: Test method '{method}' should be attributed with 'DataTestMethod' when using 'DataRow' attributes
|
||||||
dotnet_naming_rule.abstract_method_should_be_pascal_case.severity = warning
|
dotnet_naming_rule.abstract_method_should_be_pascal_case.severity = warning
|
||||||
dotnet_naming_rule.abstract_method_should_be_pascal_case.style = pascal_case
|
dotnet_naming_rule.abstract_method_should_be_pascal_case.style = pascal_case
|
||||||
dotnet_naming_rule.abstract_method_should_be_pascal_case.symbols = abstract_method
|
dotnet_naming_rule.abstract_method_should_be_pascal_case.symbols = abstract_method
|
||||||
|
|||||||
2
Adaptation/.vscode/tasks.json
vendored
2
Adaptation/.vscode/tasks.json
vendored
@ -216,7 +216,7 @@
|
|||||||
{
|
{
|
||||||
"label": "File-Folder-Helper AOT s X Day-Helper-2025-03-20",
|
"label": "File-Folder-Helper AOT s X Day-Helper-2025-03-20",
|
||||||
"type": "shell",
|
"type": "shell",
|
||||||
"command": "L:/DevOps/Mesa_FI/File-Folder-Helper/bin/Release/net8.0/win-x64/publish/File-Folder-Helper.exe",
|
"command": "L:/DevOps/Mesa_FI/File-Folder-Helper/bin/Release/net10.0/win-x64/publish/File-Folder-Helper.exe",
|
||||||
"args": [
|
"args": [
|
||||||
"s",
|
"s",
|
||||||
"X",
|
"X",
|
||||||
|
|||||||
@ -22,7 +22,6 @@ public class CellInstanceConnectionName
|
|||||||
nameof(OpenInsight) => new OpenInsight.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
|
nameof(OpenInsight) => new OpenInsight.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
|
||||||
nameof(OpenInsightMetrologyViewer) => new OpenInsightMetrologyViewer.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
|
nameof(OpenInsightMetrologyViewer) => new OpenInsightMetrologyViewer.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
|
||||||
nameof(OpenInsightMetrologyViewerAttachments) => new OpenInsightMetrologyViewerAttachments.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
|
nameof(OpenInsightMetrologyViewerAttachments) => new OpenInsightMetrologyViewerAttachments.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
|
||||||
nameof(pdsf) => new pdsf.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
|
|
||||||
nameof(pcl) => new pcl.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
|
nameof(pcl) => new pcl.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
|
||||||
nameof(Processed) => new Processed.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
|
nameof(Processed) => new Processed.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
|
||||||
nameof(SPaCe) => new SPaCe.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
|
nameof(SPaCe) => new SPaCe.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
|
||||||
|
|||||||
@ -97,9 +97,9 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
|
|
||||||
private void CallbackInProcessCleared(string sourceArchiveFile, string traceDummyFile, string targetFileLocation, string monARessource, string inProcessDirectory, long sequence, bool warning)
|
private void CallbackInProcessCleared(string sourceArchiveFile, string traceDummyFile, string targetFileLocation, string monARessource, string inProcessDirectory, long sequence, bool warning)
|
||||||
{
|
{
|
||||||
const string site = "sjc";
|
const string site = "els";
|
||||||
string stateName = string.Concat("Dummy_", _EventName);
|
string stateName = string.Concat("Dummy_", _EventName);
|
||||||
const string monInURL = "http://moninhttp.sjc.infineon.com/input/text";
|
const string monInURL = $"http://moninhttp.{site}.infineon.com/input/text";
|
||||||
MonIn monIn = MonIn.GetInstance(monInURL);
|
MonIn monIn = MonIn.GetInstance(monInURL);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|||||||
@ -17,6 +17,7 @@ public class WSRequest
|
|||||||
//
|
//
|
||||||
|
|
||||||
public string Area { get; set; }
|
public string Area { get; set; }
|
||||||
|
public string AttemptCounter { get; set; }
|
||||||
public string Ccomp { get; set; }
|
public string Ccomp { get; set; }
|
||||||
public string CellName { get; set; }
|
public string CellName { get; set; }
|
||||||
public string CondType { get; set; }
|
public string CondType { get; set; }
|
||||||
@ -30,6 +31,7 @@ public class WSRequest
|
|||||||
public string GradeRadialGradient { get; set; }
|
public string GradeRadialGradient { get; set; }
|
||||||
public string GradeStdDev { get; set; }
|
public string GradeStdDev { get; set; }
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
public string IndexOf { get; set; }
|
||||||
public string Layer { get; set; }
|
public string Layer { get; set; }
|
||||||
public string Lot { get; set; }
|
public string Lot { get; set; }
|
||||||
public string Model { get; set; }
|
public string Model { get; set; }
|
||||||
@ -84,6 +86,7 @@ public class WSRequest
|
|||||||
//Header
|
//Header
|
||||||
{
|
{
|
||||||
Area = x.Area;
|
Area = x.Area;
|
||||||
|
AttemptCounter = x.AttemptCounter;
|
||||||
Ccomp = x.Ccomp;
|
Ccomp = x.Ccomp;
|
||||||
CondType = x.CondType;
|
CondType = x.CondType;
|
||||||
Date = x.Date;
|
Date = x.Date;
|
||||||
@ -95,6 +98,7 @@ public class WSRequest
|
|||||||
GradeMean = x.GradeMean;
|
GradeMean = x.GradeMean;
|
||||||
GradeRadialGradient = x.GradeRadialGradient;
|
GradeRadialGradient = x.GradeRadialGradient;
|
||||||
GradeStdDev = x.GradeStdDev;
|
GradeStdDev = x.GradeStdDev;
|
||||||
|
IndexOf = x.IndexOf;
|
||||||
Operator = logistics.MesEntity; // different name
|
Operator = logistics.MesEntity; // different name
|
||||||
Layer = x.Layer;
|
Layer = x.Layer;
|
||||||
Lot = x.Lot;
|
Lot = x.Lot;
|
||||||
|
|||||||
@ -30,6 +30,8 @@ public class Description : IDescription, Shared.Properties.IDescription
|
|||||||
[JsonPropertyName("PSN")] public string PSN { get; set; }
|
[JsonPropertyName("PSN")] public string PSN { get; set; }
|
||||||
[JsonPropertyName("Reactor")] public string Reactor { get; set; }
|
[JsonPropertyName("Reactor")] public string Reactor { get; set; }
|
||||||
[JsonPropertyName("Recipe")] public string Recipe { get; set; }
|
[JsonPropertyName("Recipe")] public string Recipe { get; set; }
|
||||||
|
[JsonPropertyName("IndexOf")] public string IndexOf { get; set; }
|
||||||
|
[JsonPropertyName("AttemptCounter")] public string AttemptCounter { get; set; }
|
||||||
//
|
//
|
||||||
[JsonPropertyName("Area")] public string Area { get; set; }
|
[JsonPropertyName("Area")] public string Area { get; set; }
|
||||||
[JsonPropertyName("Folder")] public string Folder { get; set; }
|
[JsonPropertyName("Folder")] public string Folder { get; set; }
|
||||||
@ -312,6 +314,8 @@ public class Description : IDescription, Shared.Properties.IDescription
|
|||||||
PSN = processData.PSN,
|
PSN = processData.PSN,
|
||||||
Reactor = processData.Reactor,
|
Reactor = processData.Reactor,
|
||||||
Recipe = string.Empty,
|
Recipe = string.Empty,
|
||||||
|
IndexOf = nameof(IndexOf),
|
||||||
|
AttemptCounter = nameof(AttemptCounter),
|
||||||
//
|
//
|
||||||
Area = processData.Area,
|
Area = processData.Area,
|
||||||
Folder = processData.Folder,
|
Folder = processData.Folder,
|
||||||
@ -404,7 +408,7 @@ public class Description : IDescription, Shared.Properties.IDescription
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Description GetDefault(IFileRead fileRead, Logistics logistics)
|
private static Description GetDefault(IFileRead fileRead, Logistics logistics)
|
||||||
{
|
{
|
||||||
Description result = new()
|
Description result = new()
|
||||||
{
|
{
|
||||||
@ -427,6 +431,8 @@ public class Description : IDescription, Shared.Properties.IDescription
|
|||||||
PSN = nameof(PSN),
|
PSN = nameof(PSN),
|
||||||
Reactor = nameof(Reactor),
|
Reactor = nameof(Reactor),
|
||||||
Recipe = nameof(Recipe),
|
Recipe = nameof(Recipe),
|
||||||
|
IndexOf = nameof(IndexOf),
|
||||||
|
AttemptCounter = nameof(AttemptCounter),
|
||||||
//
|
//
|
||||||
Area = nameof(Area),
|
Area = nameof(Area),
|
||||||
Folder = nameof(Folder),
|
Folder = nameof(Folder),
|
||||||
@ -510,6 +516,15 @@ public class Description : IDescription, Shared.Properties.IDescription
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal static JsonElement GetDefaultJsonElement(IFileRead fileRead, Logistics logistics)
|
||||||
|
{
|
||||||
|
JsonElement result;
|
||||||
|
Description description = GetDefault(fileRead, logistics);
|
||||||
|
string json = JsonSerializer.Serialize(description, DescriptionSourceGenerationContext.Default.Description);
|
||||||
|
result = JsonSerializer.Deserialize<JsonElement>(json);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
internal static string GetDateFormat() => "MM/dd/yyyy hh:mm:ss tt";
|
internal static string GetDateFormat() => "MM/dd/yyyy hh:mm:ss tt";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -109,39 +109,38 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
|
|
||||||
private Tuple<string, Test[], JsonElement[], List<FileInfo>> GetExtractResult(string reportFullPath, DateTime dateTime)
|
private Tuple<string, Test[], JsonElement[], List<FileInfo>> GetExtractResult(string reportFullPath, DateTime dateTime)
|
||||||
{
|
{
|
||||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> results = new(string.Empty, Array.Empty<Test>(), Array.Empty<JsonElement>(), new List<FileInfo>());
|
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
||||||
|
Test[] tests = Array.Empty<Test>();
|
||||||
|
List<JsonElement> jsonElements = new();
|
||||||
|
List<FileInfo> fileInfoCollection = new();
|
||||||
_TickOffset ??= 0; // new FileInfo(reportFullPath).LastWriteTime.Ticks - dateTime.Ticks;
|
_TickOffset ??= 0; // new FileInfo(reportFullPath).LastWriteTime.Ticks - dateTime.Ticks;
|
||||||
_Logistics = new Logistics(this, _TickOffset.Value, reportFullPath, useSplitForMID: true);
|
_Logistics = new Logistics(this, _TickOffset.Value, reportFullPath, useSplitForMID: true);
|
||||||
SetFileParameterLotIDToLogisticsMID();
|
SetFileParameterLotIDToLogisticsMID();
|
||||||
|
fileInfoCollection.Add(_Logistics.FileInfo);
|
||||||
if (_Logistics.FileInfo.Length < _MinFileLength)
|
if (_Logistics.FileInfo.Length < _MinFileLength)
|
||||||
results.Item4.Add(_Logistics.FileInfo);
|
results = new(string.Empty, tests, jsonElements.ToArray(), fileInfoCollection);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ReadOnlyCollection<string> lines = Convert.PDF(_Logistics, _GhostPCLFileName, _PDFTextStripperFileName, results.Item4);
|
ReadOnlyCollection<string> lines = Convert.PDF(_Logistics, _GhostPCLFileName, _PDFTextStripperFileName, fileInfoCollection);
|
||||||
Run? run = Run.Get(_Logistics, results.Item4, lines);
|
Run? run = Run.Get(_Logistics, fileInfoCollection, lines);
|
||||||
if (run is null)
|
if (run is null)
|
||||||
throw new Exception(string.Concat("A) No Data - ", dateTime.Ticks));
|
results = new(string.Concat("A) No Data - ", dateTime.Ticks), tests, jsonElements.ToArray(), fileInfoCollection);
|
||||||
IProcessData iProcessData = new ProcessData(this, _Logistics, results.Item4, lines);
|
|
||||||
if (iProcessData is not ProcessData processData)
|
|
||||||
results = new(string.Concat("B) No Data - ", dateTime.Ticks), Array.Empty<Test>(), Array.Empty<JsonElement>(), results.Item4);
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
string mid;
|
string mid;
|
||||||
if (!string.IsNullOrEmpty(processData.Lot) && string.IsNullOrEmpty(processData.Reactor) && string.IsNullOrEmpty(processData.RDS) && string.IsNullOrEmpty(processData.PSN))
|
Descriptor descriptor = ProcessData.GetDescriptor(run.Header.Lot);
|
||||||
mid = processData.Lot;
|
if (!string.IsNullOrEmpty(descriptor.Lot) && string.IsNullOrEmpty(descriptor.Reactor) && string.IsNullOrEmpty(descriptor.RDS) && string.IsNullOrEmpty(descriptor.PSN))
|
||||||
else if (!string.IsNullOrEmpty(processData.Employee) && string.IsNullOrEmpty(processData.Reactor) && string.IsNullOrEmpty(processData.RDS) && string.IsNullOrEmpty(processData.PSN))
|
mid = descriptor.Lot;
|
||||||
mid = processData.Employee;
|
else if (!string.IsNullOrEmpty(descriptor.Employee) && string.IsNullOrEmpty(descriptor.Reactor) && string.IsNullOrEmpty(descriptor.RDS) && string.IsNullOrEmpty(descriptor.PSN))
|
||||||
|
mid = descriptor.Employee;
|
||||||
else
|
else
|
||||||
{
|
mid = string.Concat(descriptor.Reactor, "-", descriptor.RDS, "-", descriptor.PSN);
|
||||||
mid = string.Concat(processData.Reactor, "-", processData.RDS, "-", processData.PSN);
|
mid = Regex.Replace(mid, @"[\\,\/,\:,\*,\?,\"",\<,\>,\|]", "_").Split('\r')[0].Split('\n')[0];
|
||||||
mid = Regex.Replace(mid, @"[\\,\/,\:,\*,\?,\"",\<,\>,\|]", "_").Split('\r')[0].Split('\n')[0];
|
|
||||||
}
|
|
||||||
SetFileParameterLotID(mid);
|
SetFileParameterLotID(mid);
|
||||||
_Logistics.Update(mid, processData.Reactor);
|
_Logistics.Update(mid, descriptor.Reactor);
|
||||||
if (iProcessData.Details.Count > 0)
|
JsonElement jsonElement = Description.GetDefaultJsonElement(this, _Logistics);
|
||||||
results = iProcessData.GetResults(this, _Logistics, results.Item4);
|
jsonElements.Add(jsonElement);
|
||||||
else
|
results = new(_Logistics.Logistics1[0], tests, jsonElements.ToArray(), fileInfoCollection);
|
||||||
results = new(string.Concat("C) No Data - ", dateTime.Ticks), Array.Empty<Test>(), Array.Empty<JsonElement>(), results.Item4);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return results;
|
return results;
|
||||||
|
|||||||
@ -1,14 +1,9 @@
|
|||||||
using Adaptation.Shared;
|
using Adaptation.Shared;
|
||||||
using Adaptation.Shared.Methods;
|
using Adaptation.Shared.Methods;
|
||||||
using log4net;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Collections.ObjectModel;
|
|
||||||
using System.Data;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Text.Json.Serialization;
|
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace Adaptation.FileHandlers.pcl;
|
namespace Adaptation.FileHandlers.pcl;
|
||||||
@ -16,12 +11,6 @@ namespace Adaptation.FileHandlers.pcl;
|
|||||||
internal class ProcessData : IProcessData
|
internal class ProcessData : IProcessData
|
||||||
{
|
{
|
||||||
|
|
||||||
private int _I;
|
|
||||||
private string _Data;
|
|
||||||
|
|
||||||
private readonly ILog _Log;
|
|
||||||
private readonly List<object> _Details;
|
|
||||||
|
|
||||||
public string JobID { get; set; }
|
public string JobID { get; set; }
|
||||||
public string MesEntity { get; set; }
|
public string MesEntity { get; set; }
|
||||||
public string Area { get; set; }
|
public string Area { get; set; }
|
||||||
@ -85,114 +74,16 @@ internal class ProcessData : IProcessData
|
|||||||
public string NineMean { get; set; }
|
public string NineMean { get; set; }
|
||||||
public string NineResRangePercent { get; set; }
|
public string NineResRangePercent { get; set; }
|
||||||
|
|
||||||
List<object> Shared.Properties.IProcessData.Details => _Details;
|
List<object> Shared.Properties.IProcessData.Details { get; }
|
||||||
|
|
||||||
public ProcessData(IFileRead fileRead, Logistics logistics, List<FileInfo> fileInfoCollection, ReadOnlyCollection<string> lines)
|
|
||||||
{
|
|
||||||
_Details = new List<object>();
|
|
||||||
_I = 0;
|
|
||||||
_Data = string.Empty;
|
|
||||||
JobID = logistics.JobID;
|
|
||||||
Date = GetDateTime(logistics);
|
|
||||||
MesEntity = logistics.MesEntity;
|
|
||||||
_Log = LogManager.GetLogger(typeof(ProcessData));
|
|
||||||
Parse(fileRead, logistics, fileInfoCollection, lines);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static DateTime GetDateTime(Logistics logistics) =>
|
private static DateTime GetDateTime(Logistics logistics) =>
|
||||||
logistics.DateTimeFromSequence;
|
logistics.DateTimeFromSequence;
|
||||||
|
|
||||||
string IProcessData.GetCurrentReactor(IFileRead fileRead, Logistics logistics, Dictionary<string, string> reactors) => throw new Exception(string.Concat("See ", nameof(Parse)));
|
string IProcessData.GetCurrentReactor(IFileRead fileRead, Logistics logistics, Dictionary<string, string> reactors) =>
|
||||||
|
throw new Exception(string.Concat("See ", nameof(IProcessData)));
|
||||||
|
|
||||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> IProcessData.GetResults(IFileRead fileRead, Logistics logistics, List<FileInfo> fileInfoCollection)
|
Tuple<string, Test[], JsonElement[], List<FileInfo>> IProcessData.GetResults(IFileRead fileRead, Logistics logistics, List<FileInfo> fileInfoCollection) =>
|
||||||
{
|
throw new NotImplementedException();
|
||||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
|
||||||
List<Test> tests = new();
|
|
||||||
foreach (object item in _Details)
|
|
||||||
tests.Add(Test.HgCV);
|
|
||||||
List<IDescription> descriptions = fileRead.GetDescriptions(fileRead, tests, this);
|
|
||||||
if (tests.Count != descriptions.Count)
|
|
||||||
throw new Exception();
|
|
||||||
for (int i = 0; i < tests.Count; i++)
|
|
||||||
{
|
|
||||||
if (descriptions[i] is not Description description)
|
|
||||||
throw new Exception();
|
|
||||||
if (description.Test != (int)tests[i])
|
|
||||||
throw new Exception();
|
|
||||||
}
|
|
||||||
FileInfo fileInfo = new($"{logistics.ReportFullPath}.descriptions.json");
|
|
||||||
List<Description> fileReadDescriptions = (from l in descriptions select (Description)l).ToList();
|
|
||||||
string json = JsonSerializer.Serialize(fileReadDescriptions, fileReadDescriptions.GetType());
|
|
||||||
File.WriteAllText(fileInfo.FullName, json);
|
|
||||||
File.SetLastWriteTime(fileInfo.FullName, logistics.DateTimeFromSequence);
|
|
||||||
fileInfoCollection.Add(fileInfo);
|
|
||||||
JsonElement[] jsonElements = JsonSerializer.Deserialize<JsonElement[]>(json) ?? throw new Exception();
|
|
||||||
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(logistics.Logistics1[0], tests.ToArray(), jsonElements, fileInfoCollection);
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ScanPast(string text)
|
|
||||||
{
|
|
||||||
int num = _Data.IndexOf(text, _I);
|
|
||||||
if (num > -1)
|
|
||||||
{
|
|
||||||
_I = num + text.Length;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_I = _Data.Length;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private string GetBefore(string text)
|
|
||||||
{
|
|
||||||
int num = _Data.IndexOf(text, _I);
|
|
||||||
string text2;
|
|
||||||
if (num > -1)
|
|
||||||
{
|
|
||||||
text2 = _Data.Substring(_I, num - _I);
|
|
||||||
_I = num + text.Length;
|
|
||||||
return text2.Trim();
|
|
||||||
}
|
|
||||||
text2 = _Data.Substring(_I);
|
|
||||||
_I = _Data.Length;
|
|
||||||
return text2.Trim();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool IsNullOrWhiteSpace(string text)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < text.Length; i++)
|
|
||||||
{
|
|
||||||
if (!char.IsWhiteSpace(text[i]))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private bool IsBlankLine()
|
|
||||||
{
|
|
||||||
int num = _Data.IndexOf("\n", _I);
|
|
||||||
return IsNullOrWhiteSpace((num > -1) ? _Data.Substring(_I, num - _I) : _Data.Substring(_I));
|
|
||||||
}
|
|
||||||
|
|
||||||
private string GetToEOL() => GetBefore("\n");
|
|
||||||
|
|
||||||
private string GetToken()
|
|
||||||
{
|
|
||||||
while (_I < _Data.Length && IsNullOrWhiteSpace(_Data.Substring(_I, 1)))
|
|
||||||
{
|
|
||||||
_I++;
|
|
||||||
}
|
|
||||||
int j;
|
|
||||||
for (j = _I; j < _Data.Length && !IsNullOrWhiteSpace(_Data.Substring(j, 1)); j++)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
string text = _Data.Substring(_I, j - _I);
|
|
||||||
_I = j;
|
|
||||||
return text.Trim();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static (string, string) GetReactorAndRDS(string defaultReactor, string defaultRDS, string text, string formattedText, string[] segments)
|
private static (string, string) GetReactorAndRDS(string defaultReactor, string defaultRDS, string text, string formattedText, string[] segments)
|
||||||
{
|
{
|
||||||
@ -323,294 +214,8 @@ internal class ProcessData : IProcessData
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Set(Logistics logistics, string headerText)
|
|
||||||
{
|
|
||||||
string lot;
|
|
||||||
string rds;
|
|
||||||
string psn;
|
|
||||||
string zone;
|
|
||||||
string layer;
|
|
||||||
string reactor;
|
|
||||||
string employee;
|
|
||||||
ScanPast("Lot :");
|
|
||||||
if (headerText.Contains("Ramp Rate :"))
|
|
||||||
lot = GetBefore("Ramp Rate :");
|
|
||||||
else if (headerText.Contains("Forward Rate :"))
|
|
||||||
lot = GetBefore("Forward Rate :");
|
|
||||||
else if (headerText.Contains("Conduct Type:"))
|
|
||||||
lot = GetBefore("Conduct Type:");
|
|
||||||
else
|
|
||||||
lot = string.Empty;
|
|
||||||
Descriptor descriptor = GetDescriptor(lot);
|
|
||||||
lot = descriptor.Lot;
|
|
||||||
psn = descriptor.PSN;
|
|
||||||
rds = descriptor.RDS;
|
|
||||||
zone = descriptor.Zone;
|
|
||||||
layer = descriptor.Layer;
|
|
||||||
reactor = descriptor.Reactor;
|
|
||||||
employee = descriptor.Employee;
|
|
||||||
Lot = lot;
|
|
||||||
PSN = psn;
|
|
||||||
RDS = rds;
|
|
||||||
Zone = zone;
|
|
||||||
Layer = layer;
|
|
||||||
Reactor = reactor;
|
|
||||||
Employee = employee;
|
|
||||||
UniqueId = string.Format("{0}_{1}_{2}", logistics.JobID, lot, Path.GetFileNameWithoutExtension(logistics.ReportFullPath));
|
|
||||||
}
|
|
||||||
|
|
||||||
private List<Detail> GetDetails()
|
|
||||||
{
|
|
||||||
List<Detail> results = new();
|
|
||||||
Detail detail;
|
|
||||||
string token = GetToken();
|
|
||||||
while (!string.IsNullOrEmpty(token))
|
|
||||||
{
|
|
||||||
detail = new()
|
|
||||||
{ NAvg = token };
|
|
||||||
_ = GetToEOL();
|
|
||||||
detail.Nsl = GetToken();
|
|
||||||
_ = GetToEOL();
|
|
||||||
detail.Vd = GetToken();
|
|
||||||
_ = GetToEOL();
|
|
||||||
detail.FlatZ = GetToken();
|
|
||||||
_ = GetToEOL();
|
|
||||||
detail.RhoAvg = GetToken();
|
|
||||||
_ = GetToEOL();
|
|
||||||
detail.Rhosl = GetToken();
|
|
||||||
_ = GetToEOL();
|
|
||||||
detail.Phase = GetToken();
|
|
||||||
_ = GetToEOL();
|
|
||||||
detail.Grade = GetToken();
|
|
||||||
detail.UniqueId = string.Concat("_Point-", results.Count + 1);
|
|
||||||
results.Add(detail);
|
|
||||||
_ = GetToken();
|
|
||||||
_ = GetToken();
|
|
||||||
_ = GetToken();
|
|
||||||
_ = GetToken();
|
|
||||||
token = GetToken();
|
|
||||||
//if (token.Contains("LincPDF") || token.Contains("MULTIPLE"))
|
|
||||||
if (token.Contains("MULTIPLE"))
|
|
||||||
{
|
|
||||||
//ScanPast("Flat Z: Grade : % Flat Z: Grade : % Flat Z: Grade : %");
|
|
||||||
//ScanPast("Flat Z: Grade : % Flat Z: Grade : % Flat Z: Grade : %");
|
|
||||||
ScanPast("Flat Z: Grade : % Flat Z: Grade : % Flat Z: Grade : %");
|
|
||||||
ScanPast("Flat Z: Grade : % Flat Z: Grade : % Flat Z: Grade : %");
|
|
||||||
token = GetToken();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static double Variance(List<double> samples)
|
|
||||||
{
|
|
||||||
if (samples.Count <= 1)
|
|
||||||
return double.NaN;
|
|
||||||
double variance = 0;
|
|
||||||
double t = samples[0];
|
|
||||||
for (int i = 1; i < samples.Count; i++)
|
|
||||||
{
|
|
||||||
t += samples[i];
|
|
||||||
double diff = ((i + 1) * samples[i]) - t;
|
|
||||||
variance += diff * diff / ((i + 1.0) * i);
|
|
||||||
}
|
|
||||||
return variance / (samples.Count - 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static double StandardDeviation(List<double> samples) =>
|
|
||||||
Math.Sqrt(Variance(samples));
|
|
||||||
|
|
||||||
private void PopulateCalculated(List<Detail> details)
|
|
||||||
{
|
|
||||||
if (details.Count != 9)
|
|
||||||
{
|
|
||||||
NineMean = string.Empty;
|
|
||||||
Nine4mmEdgeMean = string.Empty;
|
|
||||||
Nine10mmEdgeMean = string.Empty;
|
|
||||||
NineEdgeMeanDelta = string.Empty;
|
|
||||||
NineResRangePercent = string.Empty;
|
|
||||||
NineCriticalPointsStdDev = string.Empty;
|
|
||||||
NineCriticalPointsAverage = string.Empty;
|
|
||||||
NineCriticalPointsPhaseAngleAverage = string.Empty;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int j;
|
|
||||||
double phase;
|
|
||||||
double rhoAvg;
|
|
||||||
double phaseValue;
|
|
||||||
double rhoAvgValue;
|
|
||||||
List<double> allRhoPoints = new();
|
|
||||||
List<double> edge4mmRhoPoints = new();
|
|
||||||
List<double> edge10mmRhoPoints = new();
|
|
||||||
List<double> criticalRhoPoints = new();
|
|
||||||
List<double> criticalPhasePoints = new();
|
|
||||||
for (int i = 0; i < details.Count; i++)
|
|
||||||
{
|
|
||||||
j = i + 1;
|
|
||||||
if (!double.TryParse(details[i].RhoAvg, out rhoAvg))
|
|
||||||
rhoAvgValue = 0;
|
|
||||||
else
|
|
||||||
rhoAvgValue = rhoAvg;
|
|
||||||
if (!double.TryParse(details[i].Phase, out phase))
|
|
||||||
phaseValue = 0;
|
|
||||||
else
|
|
||||||
phaseValue = phase;
|
|
||||||
allRhoPoints.Add(rhoAvgValue);
|
|
||||||
if (j is 3 or 4 or 7 or 8)
|
|
||||||
edge4mmRhoPoints.Add(rhoAvgValue);
|
|
||||||
else if (j == 1)
|
|
||||||
{
|
|
||||||
criticalRhoPoints.Add(rhoAvgValue);
|
|
||||||
criticalPhasePoints.Add(phaseValue);
|
|
||||||
}
|
|
||||||
else if (j is 2 or 5 or 6 or 9)
|
|
||||||
{
|
|
||||||
criticalRhoPoints.Add(rhoAvgValue);
|
|
||||||
edge10mmRhoPoints.Add(rhoAvgValue);
|
|
||||||
criticalPhasePoints.Add(phaseValue);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
throw new NotSupportedException();
|
|
||||||
}
|
|
||||||
double nineMean = allRhoPoints.Average();
|
|
||||||
double nine4mmEdgeSum = edge4mmRhoPoints.Sum();
|
|
||||||
double nine10mmEdgeSum = edge10mmRhoPoints.Sum();
|
|
||||||
double nine4mmEdgeMean = edge4mmRhoPoints.Average();
|
|
||||||
double nine10mmEdgeMean = edge10mmRhoPoints.Average();
|
|
||||||
double nineCriticalPointsAverage = criticalRhoPoints.Average();
|
|
||||||
double nineCriticalPointsStdDev = StandardDeviation(criticalRhoPoints);
|
|
||||||
double nineCriticalPointsPhaseAngleAverage = criticalPhasePoints.Average();
|
|
||||||
double nineEdgeMeanDelta = (nine4mmEdgeSum - nine10mmEdgeSum) / nine10mmEdgeSum * 100;
|
|
||||||
double nineResRangePercent = (criticalRhoPoints.Max() - criticalRhoPoints.Min()) / nineCriticalPointsAverage * 100;
|
|
||||||
NineMean = nineMean.ToString("0.0000000");
|
|
||||||
Nine4mmEdgeMean = nine4mmEdgeMean.ToString("0.0000000");
|
|
||||||
Nine10mmEdgeMean = nine10mmEdgeMean.ToString("0.0000000");
|
|
||||||
NineEdgeMeanDelta = nineEdgeMeanDelta.ToString("0.0000000");
|
|
||||||
NineResRangePercent = nineResRangePercent.ToString("0.0000000");
|
|
||||||
NineCriticalPointsStdDev = nineCriticalPointsStdDev.ToString("0.0000000");
|
|
||||||
NineCriticalPointsAverage = nineCriticalPointsAverage.ToString("0.0000000");
|
|
||||||
NineCriticalPointsPhaseAngleAverage = nineCriticalPointsPhaseAngleAverage.ToString("0.0000000");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#nullable enable
|
#nullable enable
|
||||||
|
|
||||||
private void Parse(IFileRead fileRead, Logistics logistics, List<FileInfo> fileInfoCollection, ReadOnlyCollection<string> lines)
|
|
||||||
{
|
|
||||||
if (fileRead is null)
|
|
||||||
throw new ArgumentNullException(nameof(fileRead));
|
|
||||||
string headerText = string.Join(Environment.NewLine, lines);
|
|
||||||
if (headerText.Contains("G A T E V O L T A G E"))
|
|
||||||
throw new Exception("Ignore: GATEVOLTAGE runs are not parsed.");
|
|
||||||
if (!string.IsNullOrEmpty(headerText))
|
|
||||||
{
|
|
||||||
headerText = headerText.Replace("box", "");
|
|
||||||
headerText = headerText.Replace("bar", "");
|
|
||||||
headerText = headerText.Replace("horiz", "");
|
|
||||||
headerText = headerText.Replace("center", "");
|
|
||||||
headerText = headerText.Replace("upper", "");
|
|
||||||
headerText = headerText.Replace("lower", "");
|
|
||||||
headerText = headerText.Replace("right", "");
|
|
||||||
headerText = headerText.Replace("left", "");
|
|
||||||
headerText = headerText.Replace("thin", "");
|
|
||||||
headerText = headerText.Replace("vertical", "");
|
|
||||||
headerText = headerText.Replace("line", "");
|
|
||||||
headerText = headerText.Replace("middle", "");
|
|
||||||
headerText = headerText.Replace("side", "");
|
|
||||||
headerText = headerText.Replace("top", "");
|
|
||||||
headerText = headerText.Replace("corner", "");
|
|
||||||
headerText = headerText.Replace("bottom", "");
|
|
||||||
headerText = headerText.Replace("ruleunder", "_");
|
|
||||||
headerText = headerText.Replace("@", "");
|
|
||||||
headerText = headerText.Replace("*", "");
|
|
||||||
_I = 0;
|
|
||||||
_Data = headerText;
|
|
||||||
_Log.Debug($"****MERCURY-DATA [002]= {headerText}");
|
|
||||||
ScanPast("Operator:");
|
|
||||||
_ = GetBefore("Start Voltage:");
|
|
||||||
StartVoltage = GetBefore("V");
|
|
||||||
ScanPast("Wafer :");
|
|
||||||
Wafer = GetBefore("S Voltage :");
|
|
||||||
StopVoltage = GetBefore("V");
|
|
||||||
Set(logistics, headerText);
|
|
||||||
RampRate = GetBefore("mV/sec");
|
|
||||||
ScanPast("Plan :");
|
|
||||||
Plan = GetBefore("G limit :");
|
|
||||||
//GLimit = GetBefore("S ");
|
|
||||||
GLimit = GetBefore("S");
|
|
||||||
ScanPast("Setup File:");
|
|
||||||
//SetupFile = GetBefore("O O");
|
|
||||||
SetupFile = GetBefore("O O");
|
|
||||||
ScanPast("Wafer size :");
|
|
||||||
WaferSize = GetBefore("mm");
|
|
||||||
ScanPast("Folder :");
|
|
||||||
//Folder = GetBefore("N N");
|
|
||||||
Folder = GetBefore("N N");
|
|
||||||
ScanPast("Ccomp : ");
|
|
||||||
Ccomp = GetBefore("pF");
|
|
||||||
ScanPast("Pattern :");
|
|
||||||
//Pattern = GetBefore("C C");
|
|
||||||
Pattern = GetBefore("C C");
|
|
||||||
ScanPast("Area:");
|
|
||||||
Area = GetBefore("cm2");
|
|
||||||
ScanPast("Cond Type :");
|
|
||||||
CondType = GetBefore("Rho Method:");
|
|
||||||
//RhoMethod = GetBefore("N N");
|
|
||||||
RhoMethod = GetBefore("N N");
|
|
||||||
ScanPast("Model :");
|
|
||||||
//Model = GetBefore("T T");
|
|
||||||
Model = GetBefore("T T");
|
|
||||||
ScanPast("Navg :");
|
|
||||||
NAvgMean = GetToken();
|
|
||||||
NAvgStdDev = GetToken();
|
|
||||||
NAvgRadialGradient = GetToken();
|
|
||||||
ScanPast("Nsl :");
|
|
||||||
NslMean = GetToken();
|
|
||||||
NslStdDev = GetToken();
|
|
||||||
NslRadialGradient = GetToken();
|
|
||||||
ScanPast("Vd :");
|
|
||||||
VdMean = GetToken();
|
|
||||||
VdStdDev = GetToken();
|
|
||||||
VdRadialGradient = GetToken();
|
|
||||||
ScanPast("Flat Z:");
|
|
||||||
FlatZMean = GetToken();
|
|
||||||
FlatZStdDev = GetToken();
|
|
||||||
FlatZRadialGradient = GetToken();
|
|
||||||
ScanPast("Rhoavg:");
|
|
||||||
RhoAvgMean = GetToken();
|
|
||||||
RhoAvgStdDev = GetToken();
|
|
||||||
RhoAvgRadialGradient = GetToken();
|
|
||||||
ScanPast("Rhosl :");
|
|
||||||
RhoslMean = GetToken();
|
|
||||||
RhoslStdDev = GetToken();
|
|
||||||
RhoslRadialGradient = GetToken();
|
|
||||||
ScanPast("Phase :");
|
|
||||||
PhaseMean = GetToken();
|
|
||||||
PhaseStdDev = GetToken();
|
|
||||||
PhaseRadialGradient = GetToken();
|
|
||||||
ScanPast("Grade :");
|
|
||||||
GradeMean = GetToken();
|
|
||||||
GradeStdDev = GetToken();
|
|
||||||
GradeRadialGradient = GetToken();
|
|
||||||
ScanPast("Rs :");
|
|
||||||
RsMean = GetToken();
|
|
||||||
RsStdDev = GetToken();
|
|
||||||
RsRadialGradient = GetToken();
|
|
||||||
//ScanPast("Flat Z: Grade : % Flat Z: Grade : % Flat Z: Grade : %");
|
|
||||||
ScanPast("Flat Z: Grade : % Flat Z: Grade : % Flat Z: Grade : %");
|
|
||||||
List<Detail> details = GetDetails();
|
|
||||||
PopulateCalculated(details);
|
|
||||||
_Details.AddRange(details);
|
|
||||||
}
|
|
||||||
foreach (Detail detail in _Details.Cast<Detail>())
|
|
||||||
{
|
|
||||||
detail.HeaderUniqueId = UniqueId;
|
|
||||||
detail.UniqueId = string.Concat(detail, detail.UniqueId);
|
|
||||||
}
|
|
||||||
fileInfoCollection.Add(logistics.FileInfo);
|
|
||||||
}
|
|
||||||
|
|
||||||
internal static List<Description> GetDescriptions(JsonElement[] jsonElements)
|
internal static List<Description> GetDescriptions(JsonElement[] jsonElements)
|
||||||
{
|
{
|
||||||
List<Description> results = new();
|
List<Description> results = new();
|
||||||
|
|||||||
@ -1,13 +0,0 @@
|
|||||||
namespace Adaptation.FileHandlers.pdsf;
|
|
||||||
|
|
||||||
internal class Constant
|
|
||||||
{
|
|
||||||
|
|
||||||
public int Take { get; } = 11;
|
|
||||||
public string Site { get; } = "Site: ";
|
|
||||||
public string Multiple { get; } = "MULTIPLE";
|
|
||||||
public string SummaryLine { get; } = "SUMMARY A A";
|
|
||||||
public string LastUnits { get; } = "Flat Z: Grade : % Flat Z: Grade : % Flat Z: Grade : %";
|
|
||||||
public string LastUnitsB { get; } = "Flat Z: Grade : % Flat Z: Grade : % Flat Z: Grade : %";
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,89 +0,0 @@
|
|||||||
using Adaptation.Shared;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Collections.ObjectModel;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.IO;
|
|
||||||
|
|
||||||
namespace Adaptation.FileHandlers.pdsf;
|
|
||||||
|
|
||||||
internal class Convert
|
|
||||||
{
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Convert the raw data file to parsable file format - in this case from PCL to PDF
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="sourceFile">source file to be converted to PDF</param>
|
|
||||||
/// <returns></returns>
|
|
||||||
private static string ConvertSourceFileToPdf(Logistics logistics, string ghostPCLFileName)
|
|
||||||
{
|
|
||||||
string result = Path.ChangeExtension(logistics.ReportFullPath, ".pdf");
|
|
||||||
if (!File.Exists(result))
|
|
||||||
{
|
|
||||||
//string arguments = string.Concat("-i \"", sourceFile, "\" -o \"", result, "\"");
|
|
||||||
string arguments = string.Concat("-dSAFER -dBATCH -dNOPAUSE -dFIXEDMEDIA -dFitPage -dAutoRotatePages=/All -dDEVICEWIDTHPOINTS=792 -dDEVICEHEIGHTPOINTS=612 -sOutputFile=\"", result, "\" -sDEVICE=pdfwrite \"", logistics.ReportFullPath, "\"");
|
|
||||||
//Process process = Process.Start(configData.LincPDFCFileName, arguments);
|
|
||||||
Process process = Process.Start(ghostPCLFileName, arguments);
|
|
||||||
_ = process.WaitForExit(30000);
|
|
||||||
if (!File.Exists(result))
|
|
||||||
throw new Exception("PDF file wasn't created");
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static ReadOnlyCollection<string> GetTextFromPDF(string pdfTextStripperFileName, string sourceFileNamePdf, string altHeaderFileName)
|
|
||||||
{
|
|
||||||
string[] result;
|
|
||||||
ProcessStartInfo processStartInfo = new(pdfTextStripperFileName, $"s \"{sourceFileNamePdf}\"")
|
|
||||||
{
|
|
||||||
UseShellExecute = false,
|
|
||||||
RedirectStandardError = true,
|
|
||||||
RedirectStandardOutput = true,
|
|
||||||
};
|
|
||||||
Process process = Process.Start(processStartInfo);
|
|
||||||
_ = process.WaitForExit(30000);
|
|
||||||
if (!File.Exists(altHeaderFileName))
|
|
||||||
result = Array.Empty<string>();
|
|
||||||
else
|
|
||||||
result = File.ReadAllLines(altHeaderFileName);
|
|
||||||
return new(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
internal static ReadOnlyCollection<string> PDF(Logistics logistics, string ghostPCLFileName, string pdfTextStripperFileName, List<FileInfo> fileInfoCollection)
|
|
||||||
{
|
|
||||||
ReadOnlyCollection<string> result;
|
|
||||||
string sourceFileNamePdf = ConvertSourceFileToPdf(logistics, ghostPCLFileName);
|
|
||||||
fileInfoCollection.Add(new FileInfo(sourceFileNamePdf));
|
|
||||||
string altHeaderFileName = Path.ChangeExtension(logistics.ReportFullPath, ".txt");
|
|
||||||
if (File.Exists(altHeaderFileName))
|
|
||||||
{
|
|
||||||
result = new(File.ReadAllLines(altHeaderFileName));
|
|
||||||
fileInfoCollection.Add(new FileInfo(altHeaderFileName));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
//Pdfbox, IKVM.AWT.WinForms
|
|
||||||
org.apache.pdfbox.pdmodel.PDDocument pdfDocument = org.apache.pdfbox.pdmodel.PDDocument.load(sourceFileNamePdf);
|
|
||||||
org.apache.pdfbox.util.PDFTextStripper stripper = new();
|
|
||||||
string text = stripper.getText(pdfDocument);
|
|
||||||
pdfDocument.close();
|
|
||||||
File.AppendAllText(altHeaderFileName, text);
|
|
||||||
fileInfoCollection.Add(new FileInfo(altHeaderFileName));
|
|
||||||
result = new(text.Split(new string[] { Environment.NewLine }, StringSplitOptions.None));
|
|
||||||
}
|
|
||||||
catch (MissingMethodException)
|
|
||||||
{
|
|
||||||
if (!File.Exists(pdfTextStripperFileName))
|
|
||||||
throw;
|
|
||||||
result = GetTextFromPDF(pdfTextStripperFileName, sourceFileNamePdf, altHeaderFileName);
|
|
||||||
if (result.Count == 0)
|
|
||||||
throw;
|
|
||||||
fileInfoCollection.Add(new FileInfo(altHeaderFileName));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,136 +0,0 @@
|
|||||||
using Adaptation.Eaf.Management.ConfigurationData.CellAutomation;
|
|
||||||
using Adaptation.Ifx.Eaf.EquipmentConnector.File.Configuration;
|
|
||||||
using Adaptation.Shared;
|
|
||||||
using Adaptation.Shared.Duplicator;
|
|
||||||
using Adaptation.Shared.Methods;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Collections.ObjectModel;
|
|
||||||
using System.IO;
|
|
||||||
using System.Text.Json;
|
|
||||||
|
|
||||||
namespace Adaptation.FileHandlers.pdsf;
|
|
||||||
|
|
||||||
public class FileRead : Shared.FileRead, IFileRead
|
|
||||||
{
|
|
||||||
|
|
||||||
private readonly string _GhostPCLFileName;
|
|
||||||
private readonly string _PDFTextStripperFileName;
|
|
||||||
|
|
||||||
public FileRead(ISMTP smtp, Dictionary<string, string> fileParameter, string cellInstanceName, int? connectionCount, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList<ModelObjectParameterDefinition> modelObjectParameters, string equipmentDictionaryName, Dictionary<string, List<long>> dummyRuns, Dictionary<long, List<Shared.Metrology.WS.Results>> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) :
|
|
||||||
base(new Description(), false, smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null)
|
|
||||||
{
|
|
||||||
_MinFileLength = 150;
|
|
||||||
_NullData = string.Empty;
|
|
||||||
_Logistics = new(this);
|
|
||||||
if (_FileParameter is null)
|
|
||||||
throw new Exception(cellInstanceConnectionName);
|
|
||||||
if (_ModelObjectParameterDefinitions is null)
|
|
||||||
throw new Exception(cellInstanceConnectionName);
|
|
||||||
if (_IsDuplicator)
|
|
||||||
throw new Exception(cellInstanceConnectionName);
|
|
||||||
_GhostPCLFileName = Path.Combine(AppContext.BaseDirectory, "gpcl6win64.exe");
|
|
||||||
if (!File.Exists(_GhostPCLFileName))
|
|
||||||
throw new Exception("Ghost PCL FileName doesn't Exist!");
|
|
||||||
_PDFTextStripperFileName = Path.Combine(AppContext.BaseDirectory, "PDF-Text-Stripper.exe");
|
|
||||||
if (!File.Exists(_PDFTextStripperFileName))
|
|
||||||
throw new Exception("PDF-Text-Stripper FileName doesn't Exist!");
|
|
||||||
if (_IsEAFHosted)
|
|
||||||
NestExistingFiles(_FileConnectorConfiguration);
|
|
||||||
}
|
|
||||||
|
|
||||||
void IFileRead.Move(Tuple<string, Test[], JsonElement[], List<FileInfo>> extractResults, Exception exception) => Move(extractResults);
|
|
||||||
|
|
||||||
void IFileRead.WaitForThread() => WaitForThread(thread: null, threadExceptions: null);
|
|
||||||
|
|
||||||
string IFileRead.GetEventDescription()
|
|
||||||
{
|
|
||||||
string result = _Description.GetEventDescription();
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
List<string> IFileRead.GetHeaderNames()
|
|
||||||
{
|
|
||||||
List<string> results = _Description.GetHeaderNames();
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
string[] IFileRead.Move(Tuple<string, Test[], JsonElement[], List<FileInfo>> extractResults, string to, string from, string resolvedFileLocation, Exception exception)
|
|
||||||
{
|
|
||||||
string[] results = Move(extractResults, to, from, resolvedFileLocation, exception);
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
JsonProperty[] IFileRead.GetDefault()
|
|
||||||
{
|
|
||||||
JsonProperty[] results = _Description.GetDefault(this, _Logistics);
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
Dictionary<string, string> IFileRead.GetDisplayNamesJsonElement()
|
|
||||||
{
|
|
||||||
Dictionary<string, string> results = _Description.GetDisplayNamesJsonElement(this);
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
List<IDescription> IFileRead.GetDescriptions(IFileRead fileRead, List<Test> tests, IProcessData processData)
|
|
||||||
{
|
|
||||||
List<IDescription> results = _Description.GetDescriptions(fileRead, _Logistics, tests, processData);
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> IFileRead.GetExtractResult(string reportFullPath, string eventName)
|
|
||||||
{
|
|
||||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
|
||||||
if (string.IsNullOrEmpty(eventName))
|
|
||||||
throw new Exception();
|
|
||||||
_ReportFullPath = reportFullPath;
|
|
||||||
DateTime dateTime = DateTime.Now;
|
|
||||||
results = GetExtractResult(reportFullPath, dateTime);
|
|
||||||
if (results.Item3 is null)
|
|
||||||
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(results.Item1, Array.Empty<Test>(), JsonSerializer.Deserialize<JsonElement[]>("[]"), results.Item4);
|
|
||||||
if (results.Item3.Length > 0 && _IsEAFHosted)
|
|
||||||
WritePDSF(this, results.Item3);
|
|
||||||
UpdateLastTicksDuration(DateTime.Now.Ticks - dateTime.Ticks);
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> IFileRead.ReExtract()
|
|
||||||
{
|
|
||||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
|
||||||
List<string> headerNames = _Description.GetHeaderNames();
|
|
||||||
Dictionary<string, string> keyValuePairs = _Description.GetDisplayNamesJsonElement(this);
|
|
||||||
results = ReExtract(this, headerNames, keyValuePairs);
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
#nullable enable
|
|
||||||
|
|
||||||
private Tuple<string, Test[], JsonElement[], List<FileInfo>> GetExtractResult(string reportFullPath, DateTime dateTime)
|
|
||||||
{
|
|
||||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
|
||||||
string result;
|
|
||||||
JsonElement[] jsonElements;
|
|
||||||
Test[] tests = Array.Empty<Test>();
|
|
||||||
List<FileInfo> fileInfoCollection = new();
|
|
||||||
ProcessDataStandardFormat processDataStandardFormat = ProcessDataStandardFormat.GetProcessDataStandardFormat(reportFullPath);
|
|
||||||
_Logistics = new Logistics(reportFullPath, processDataStandardFormat);
|
|
||||||
SetFileParameterLotIDToLogisticsMID();
|
|
||||||
ReadOnlyCollection<string> lines = Convert.PDF(_Logistics, _GhostPCLFileName, _PDFTextStripperFileName, fileInfoCollection);
|
|
||||||
Run? run = Run.Get(_Logistics, fileInfoCollection, lines);
|
|
||||||
if (run is null)
|
|
||||||
{
|
|
||||||
jsonElements = Array.Empty<JsonElement>();
|
|
||||||
result = string.Concat("A) No Data - ", dateTime.Ticks);
|
|
||||||
results = new(result, tests, jsonElements, fileInfoCollection);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
result = string.Join(Environment.NewLine, _Logistics.Logistics1);
|
|
||||||
jsonElements = _IsEAFHosted ? Array.Empty<JsonElement>() : ProcessDataStandardFormat.GetArray(processDataStandardFormat);
|
|
||||||
results = new(result, tests, jsonElements, fileInfoCollection);
|
|
||||||
}
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,169 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Collections.ObjectModel;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text.Json;
|
|
||||||
using System.Text.Json.Serialization;
|
|
||||||
|
|
||||||
namespace Adaptation.FileHandlers.pdsf;
|
|
||||||
|
|
||||||
#nullable enable
|
|
||||||
|
|
||||||
internal class Header
|
|
||||||
{
|
|
||||||
|
|
||||||
[JsonConstructor]
|
|
||||||
public Header(string @operator, string startVoltage, string wafer, string stopVoltage, string lot, string rampRate, string plan, string gLimit, string date, string time, string setupFile, string waferSize, string folder, string ccomp, string pattern, string area, string condType, string rhoMethod, string model)
|
|
||||||
{
|
|
||||||
Operator = @operator;
|
|
||||||
StartVoltage = startVoltage;
|
|
||||||
Wafer = wafer;
|
|
||||||
StopVoltage = stopVoltage;
|
|
||||||
Lot = lot;
|
|
||||||
RampRate = rampRate;
|
|
||||||
Plan = plan;
|
|
||||||
GLimit = gLimit;
|
|
||||||
Date = date;
|
|
||||||
Time = time;
|
|
||||||
SetupFile = setupFile;
|
|
||||||
WaferSize = waferSize;
|
|
||||||
Folder = folder;
|
|
||||||
Ccomp = ccomp;
|
|
||||||
Pattern = pattern;
|
|
||||||
Area = area;
|
|
||||||
CondType = condType;
|
|
||||||
RhoMethod = rhoMethod;
|
|
||||||
Model = model;
|
|
||||||
}
|
|
||||||
|
|
||||||
[JsonPropertyName("Operator")] public string Operator { get; }
|
|
||||||
[JsonPropertyName("Start Voltage")] public string StartVoltage { get; }
|
|
||||||
[JsonPropertyName("Wafer")] public string Wafer { get; }
|
|
||||||
[JsonPropertyName("Stop Voltage")] public string StopVoltage { get; }
|
|
||||||
[JsonPropertyName("Lot")] public string Lot { get; }
|
|
||||||
[JsonPropertyName("Ramp Rate")] public string RampRate { get; }
|
|
||||||
[JsonPropertyName("Plan")] public string Plan { get; }
|
|
||||||
[JsonPropertyName("G limit")] public string GLimit { get; }
|
|
||||||
[JsonPropertyName("Date")] public string Date { get; }
|
|
||||||
[JsonPropertyName("Time")] public string Time { get; }
|
|
||||||
[JsonPropertyName("Setup File")] public string SetupFile { get; }
|
|
||||||
[JsonPropertyName("Wafer size")] public string WaferSize { get; }
|
|
||||||
[JsonPropertyName("Folder")] public string Folder { get; }
|
|
||||||
[JsonPropertyName("Ccomp")] public string Ccomp { get; }
|
|
||||||
[JsonPropertyName("Pattern")] public string Pattern { get; }
|
|
||||||
[JsonPropertyName("Area")] public string Area { get; }
|
|
||||||
[JsonPropertyName("Cond Type")] public string CondType { get; }
|
|
||||||
[JsonPropertyName("Rho Method")] public string RhoMethod { get; }
|
|
||||||
[JsonPropertyName("Model")] public string Model { get; }
|
|
||||||
|
|
||||||
private static string[] GetRemove() =>
|
|
||||||
new string[]
|
|
||||||
{
|
|
||||||
" L L",
|
|
||||||
" O O",
|
|
||||||
" G G",
|
|
||||||
" C C",
|
|
||||||
" O O",
|
|
||||||
" N N",
|
|
||||||
" C C",
|
|
||||||
" E E",
|
|
||||||
" N N",
|
|
||||||
" T T",
|
|
||||||
" R R",
|
|
||||||
" A A",
|
|
||||||
" T T",
|
|
||||||
" I I",
|
|
||||||
" O O",
|
|
||||||
" N N"
|
|
||||||
};
|
|
||||||
|
|
||||||
public static Header Get() =>
|
|
||||||
new(string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty);
|
|
||||||
|
|
||||||
private static ReadOnlyCollection<JsonProperty> GetJsonProperties()
|
|
||||||
{
|
|
||||||
JsonProperty[] results;
|
|
||||||
string json;
|
|
||||||
Header header = Get();
|
|
||||||
json = JsonSerializer.Serialize(header);
|
|
||||||
JsonElement jsonElement = JsonSerializer.Deserialize<JsonElement>(json);
|
|
||||||
results = jsonElement.EnumerateObject().ToArray();
|
|
||||||
return new(results);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Header? Get(Constant constant, ReadOnlyCollection<string> lines)
|
|
||||||
{
|
|
||||||
Header? result;
|
|
||||||
string json;
|
|
||||||
string check;
|
|
||||||
string[] segments;
|
|
||||||
string[] segmentsB;
|
|
||||||
string[] segmentsC;
|
|
||||||
bool found = false;
|
|
||||||
string[] remove = GetRemove();
|
|
||||||
Dictionary<string, string> keyValuePairs = new();
|
|
||||||
ReadOnlyCollection<JsonProperty> jsonProperties = GetJsonProperties();
|
|
||||||
foreach (string line in lines)
|
|
||||||
{
|
|
||||||
if (line.Contains(constant.Site))
|
|
||||||
found = true;
|
|
||||||
if (!found)
|
|
||||||
continue;
|
|
||||||
if (line == constant.SummaryLine)
|
|
||||||
break;
|
|
||||||
foreach (JsonProperty jsonProperty in jsonProperties)
|
|
||||||
{
|
|
||||||
segments = line.Split(new string[] { $"{jsonProperty.Name}:", $"{jsonProperty.Name} :" }, StringSplitOptions.None);
|
|
||||||
if (segments.Length < 2)
|
|
||||||
continue;
|
|
||||||
check = segments[1].Trim();
|
|
||||||
foreach (JsonProperty jsonPropertyB in jsonProperties)
|
|
||||||
{
|
|
||||||
segmentsB = check.Split(new string[] { $"{jsonPropertyB.Name}:", $"{jsonPropertyB.Name} :" }, StringSplitOptions.None);
|
|
||||||
if (segmentsB.Length > 1)
|
|
||||||
check = segmentsB[0].Trim();
|
|
||||||
}
|
|
||||||
foreach (string r in remove)
|
|
||||||
{
|
|
||||||
segmentsC = check.Split(new string[] { r }, StringSplitOptions.None);
|
|
||||||
if (segmentsC.Length > 1)
|
|
||||||
check = segmentsC[0].Trim();
|
|
||||||
}
|
|
||||||
keyValuePairs.Add(jsonProperty.Name, check);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (keyValuePairs.Count != jsonProperties.Count)
|
|
||||||
result = null;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
json = JsonSerializer.Serialize(keyValuePairs);
|
|
||||||
result = JsonSerializer.Deserialize(json, HeaderSourceGenerationContext.Default.Header) ?? throw new NullReferenceException(nameof(result));
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
[JsonSourceGenerationOptions(WriteIndented = true)]
|
|
||||||
[JsonSerializable(typeof(Header))]
|
|
||||||
internal partial class HeaderSourceGenerationContext : JsonSerializerContext
|
|
||||||
{
|
|
||||||
}
|
|
||||||
@ -1,143 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Collections.ObjectModel;
|
|
||||||
using System.Text.Json.Serialization;
|
|
||||||
|
|
||||||
namespace Adaptation.FileHandlers.pdsf;
|
|
||||||
|
|
||||||
#nullable enable
|
|
||||||
|
|
||||||
internal class Point
|
|
||||||
{
|
|
||||||
|
|
||||||
public Point(string site, string x, string y, string nAvg, string rhoAvg, string nsl, string rhosl, string vd, string phase, string flatZ, string grade, string xLeft, string xRight, string bottomY, string topY)
|
|
||||||
{
|
|
||||||
Site = site;
|
|
||||||
X = x;
|
|
||||||
Y = y;
|
|
||||||
NAvg = nAvg;
|
|
||||||
RhoAvg = rhoAvg;
|
|
||||||
Nsl = nsl;
|
|
||||||
Rhosl = rhosl;
|
|
||||||
Vd = vd;
|
|
||||||
Phase = phase;
|
|
||||||
FlatZ = flatZ;
|
|
||||||
Grade = grade;
|
|
||||||
XLeft = xLeft;
|
|
||||||
XRight = xRight;
|
|
||||||
BottomY = bottomY;
|
|
||||||
TopY = topY;
|
|
||||||
}
|
|
||||||
|
|
||||||
[JsonPropertyName("Site")] public string Site { get; }
|
|
||||||
[JsonPropertyName("X")] public string X { get; }
|
|
||||||
[JsonPropertyName("Y")] public string Y { get; }
|
|
||||||
[JsonPropertyName("Navg")] public string NAvg { get; }
|
|
||||||
[JsonPropertyName("Rhoavg")] public string RhoAvg { get; }
|
|
||||||
[JsonPropertyName("Nsl")] public string Nsl { get; }
|
|
||||||
[JsonPropertyName("Rhosl")] public string Rhosl { get; }
|
|
||||||
[JsonPropertyName("Vd")] public string Vd { get; }
|
|
||||||
[JsonPropertyName("Phase")] public string Phase { get; }
|
|
||||||
[JsonPropertyName("Flat Z")] public string FlatZ { get; }
|
|
||||||
[JsonPropertyName("Grade")] public string Grade { get; }
|
|
||||||
[JsonPropertyName("X Left")] public string XLeft { get; }
|
|
||||||
[JsonPropertyName("X Right")] public string XRight { get; }
|
|
||||||
[JsonPropertyName("Bottom Y")] public string BottomY { get; }
|
|
||||||
[JsonPropertyName("Top Y")] public string TopY { get; }
|
|
||||||
|
|
||||||
public static Point Get() =>
|
|
||||||
new(string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty);
|
|
||||||
|
|
||||||
public static ReadOnlyCollection<Point> GetCollection(Constant constant, ReadOnlyCollection<string> lines)
|
|
||||||
{
|
|
||||||
List<Point> results = new();
|
|
||||||
string s;
|
|
||||||
string line;
|
|
||||||
Point point;
|
|
||||||
string[] segments;
|
|
||||||
string[] segmentsB;
|
|
||||||
bool found = false;
|
|
||||||
string[] segmentsC;
|
|
||||||
bool foundB = false;
|
|
||||||
int x = constant.Take - 2;
|
|
||||||
List<string> sites = new();
|
|
||||||
for (int i = 0; i < lines.Count; i++)
|
|
||||||
{
|
|
||||||
line = lines[i];
|
|
||||||
segmentsC = line.Split(new string[] { constant.Site }, StringSplitOptions.RemoveEmptyEntries);
|
|
||||||
if (segmentsC.Length > 1)
|
|
||||||
{
|
|
||||||
foreach (string segment in segmentsC)
|
|
||||||
sites.Add(segment.Trim());
|
|
||||||
}
|
|
||||||
if (line == constant.SummaryLine)
|
|
||||||
{
|
|
||||||
sites.RemoveAt(0);
|
|
||||||
found = true;
|
|
||||||
}
|
|
||||||
if (!found)
|
|
||||||
continue;
|
|
||||||
if (!foundB && line.Contains(constant.Multiple))
|
|
||||||
foundB = true;
|
|
||||||
if (line != constant.LastUnitsB)
|
|
||||||
continue;
|
|
||||||
if (foundB)
|
|
||||||
{
|
|
||||||
foundB = false;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
for (int j = 0; j < sites.Count; j++)
|
|
||||||
{
|
|
||||||
s = sites[j];
|
|
||||||
if (i + constant.Take > lines.Count)
|
|
||||||
break;
|
|
||||||
segments = s.Split(new string[] { "(", ",", ")" }, StringSplitOptions.None);
|
|
||||||
if (segments.Length < 2)
|
|
||||||
break;
|
|
||||||
segmentsB = lines[i + x].Split(' ');
|
|
||||||
if (segmentsB.Length < 2)
|
|
||||||
break;
|
|
||||||
point = new(site: segments[0].Trim(),
|
|
||||||
x: segments[1].Trim(),
|
|
||||||
y: segments[2].Trim(),
|
|
||||||
nAvg: lines[i + 1].Trim(),
|
|
||||||
nsl: lines[i + 2].Trim(),
|
|
||||||
vd: lines[i + 3].Trim(),
|
|
||||||
flatZ: lines[i + 4].Trim(),
|
|
||||||
rhoAvg: lines[i + 5].Trim(),
|
|
||||||
rhosl: lines[i + 6].Trim(),
|
|
||||||
phase: lines[i + 7].Trim(),
|
|
||||||
grade: lines[i + 8].Trim(),
|
|
||||||
xLeft: segmentsB[0],
|
|
||||||
xRight: segmentsB[1],
|
|
||||||
bottomY: lines[i + 10].Trim(),
|
|
||||||
topY: lines[i + 11].Trim());
|
|
||||||
results.Add(point);
|
|
||||||
i += constant.Take;
|
|
||||||
}
|
|
||||||
sites.Clear();
|
|
||||||
}
|
|
||||||
return new(results);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
[JsonSourceGenerationOptions(WriteIndented = true)]
|
|
||||||
[JsonSerializable(typeof(Point))]
|
|
||||||
internal partial class PointSourceGenerationContext : JsonSerializerContext
|
|
||||||
{
|
|
||||||
}
|
|
||||||
@ -1,196 +0,0 @@
|
|||||||
using System.Text.Json.Serialization;
|
|
||||||
|
|
||||||
namespace Adaptation.FileHandlers.pdsf;
|
|
||||||
|
|
||||||
#nullable enable
|
|
||||||
|
|
||||||
internal class Row
|
|
||||||
{
|
|
||||||
|
|
||||||
public Row(Run run, int i)
|
|
||||||
{
|
|
||||||
Index = i;
|
|
||||||
//
|
|
||||||
Operator = run.Header.Operator;
|
|
||||||
StartVoltage = run.Header.StartVoltage;
|
|
||||||
Wafer = run.Header.Wafer;
|
|
||||||
StopVoltage = run.Header.StopVoltage;
|
|
||||||
Lot = run.Header.Lot;
|
|
||||||
RampRate = run.Header.RampRate;
|
|
||||||
Plan = run.Header.Plan;
|
|
||||||
GLimit = run.Header.GLimit;
|
|
||||||
Date = run.Header.Date;
|
|
||||||
Time = run.Header.Time;
|
|
||||||
SetupFile = run.Header.SetupFile;
|
|
||||||
WaferSize = run.Header.WaferSize;
|
|
||||||
Folder = run.Header.Folder;
|
|
||||||
Ccomp = run.Header.Ccomp;
|
|
||||||
Pattern = run.Header.Pattern;
|
|
||||||
Area = run.Header.Area;
|
|
||||||
CondType = run.Header.CondType;
|
|
||||||
RhoMethod = run.Header.RhoMethod;
|
|
||||||
Model = run.Header.Model;
|
|
||||||
if (run.Summary.Mean is null)
|
|
||||||
{
|
|
||||||
MeanNAvg = string.Empty;
|
|
||||||
MeanNsl = string.Empty;
|
|
||||||
MeanVd = string.Empty;
|
|
||||||
MeanFlatZ = string.Empty;
|
|
||||||
MeanRhoAvg = string.Empty;
|
|
||||||
MeanRhosl = string.Empty;
|
|
||||||
MeanPhase = string.Empty;
|
|
||||||
MeanGrade = string.Empty;
|
|
||||||
MeanRs = string.Empty;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
MeanNAvg = run.Summary.Mean.NAvg;
|
|
||||||
MeanNsl = run.Summary.Mean.Nsl;
|
|
||||||
MeanVd = run.Summary.Mean.Vd;
|
|
||||||
MeanFlatZ = run.Summary.Mean.FlatZ;
|
|
||||||
MeanRhoAvg = run.Summary.Mean.RhoAvg;
|
|
||||||
MeanRhosl = run.Summary.Mean.Rhosl;
|
|
||||||
MeanPhase = run.Summary.Mean.Phase;
|
|
||||||
MeanGrade = run.Summary.Mean.Grade;
|
|
||||||
MeanRs = run.Summary.Mean.Rs;
|
|
||||||
}
|
|
||||||
if (run.Summary.StandardDeviationPercentage is null)
|
|
||||||
{
|
|
||||||
StandardDeviationPercentageNAvg = string.Empty;
|
|
||||||
StandardDeviationPercentageNsl = string.Empty;
|
|
||||||
StandardDeviationPercentageVd = string.Empty;
|
|
||||||
StandardDeviationPercentageFlatZ = string.Empty;
|
|
||||||
StandardDeviationPercentageRhoAvg = string.Empty;
|
|
||||||
StandardDeviationPercentageRhosl = string.Empty;
|
|
||||||
StandardDeviationPercentagePhase = string.Empty;
|
|
||||||
StandardDeviationPercentageGrade = string.Empty;
|
|
||||||
StandardDeviationPercentageRs = string.Empty;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
StandardDeviationPercentageNAvg = run.Summary.StandardDeviationPercentage.NAvg;
|
|
||||||
StandardDeviationPercentageNsl = run.Summary.StandardDeviationPercentage.Nsl;
|
|
||||||
StandardDeviationPercentageVd = run.Summary.StandardDeviationPercentage.Vd;
|
|
||||||
StandardDeviationPercentageFlatZ = run.Summary.StandardDeviationPercentage.FlatZ;
|
|
||||||
StandardDeviationPercentageRhoAvg = run.Summary.StandardDeviationPercentage.RhoAvg;
|
|
||||||
StandardDeviationPercentageRhosl = run.Summary.StandardDeviationPercentage.Rhosl;
|
|
||||||
StandardDeviationPercentagePhase = run.Summary.StandardDeviationPercentage.Phase;
|
|
||||||
StandardDeviationPercentageGrade = run.Summary.StandardDeviationPercentage.Grade;
|
|
||||||
StandardDeviationPercentageRs = run.Summary.StandardDeviationPercentage.Rs;
|
|
||||||
}
|
|
||||||
if (run.Summary.RadialGradient is null)
|
|
||||||
{
|
|
||||||
RadialGradientNAvg = string.Empty;
|
|
||||||
RadialGradientNsl = string.Empty;
|
|
||||||
RadialGradientVd = string.Empty;
|
|
||||||
RadialGradientFlatZ = string.Empty;
|
|
||||||
RadialGradientRhoAvg = string.Empty;
|
|
||||||
RadialGradientRhosl = string.Empty;
|
|
||||||
RadialGradientPhase = string.Empty;
|
|
||||||
RadialGradientGrade = string.Empty;
|
|
||||||
RadialGradientRs = string.Empty;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
RadialGradientNAvg = run.Summary.RadialGradient.NAvg;
|
|
||||||
RadialGradientNsl = run.Summary.RadialGradient.Nsl;
|
|
||||||
RadialGradientVd = run.Summary.RadialGradient.Vd;
|
|
||||||
RadialGradientFlatZ = run.Summary.RadialGradient.FlatZ;
|
|
||||||
RadialGradientRhoAvg = run.Summary.RadialGradient.RhoAvg;
|
|
||||||
RadialGradientRhosl = run.Summary.RadialGradient.Rhosl;
|
|
||||||
RadialGradientPhase = run.Summary.RadialGradient.Phase;
|
|
||||||
RadialGradientGrade = run.Summary.RadialGradient.Grade;
|
|
||||||
RadialGradientRs = run.Summary.RadialGradient.Rs;
|
|
||||||
}
|
|
||||||
Site = run.Points[i].Site;
|
|
||||||
X = run.Points[i].X;
|
|
||||||
Y = run.Points[i].Y;
|
|
||||||
NAvg = run.Points[i].NAvg;
|
|
||||||
RhoAvg = run.Points[i].RhoAvg;
|
|
||||||
Nsl = run.Points[i].Nsl;
|
|
||||||
Rhosl = run.Points[i].Rhosl;
|
|
||||||
Vd = run.Points[i].Vd;
|
|
||||||
Phase = run.Points[i].Phase;
|
|
||||||
FlatZ = run.Points[i].FlatZ;
|
|
||||||
Grade = run.Points[i].Grade;
|
|
||||||
XLeft = run.Points[i].XLeft;
|
|
||||||
XRight = run.Points[i].XRight;
|
|
||||||
BottomY = run.Points[i].BottomY;
|
|
||||||
TopY = run.Points[i].TopY;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int Index { get; }
|
|
||||||
//
|
|
||||||
public string Operator { get; }
|
|
||||||
public string StartVoltage { get; }
|
|
||||||
public string Wafer { get; }
|
|
||||||
public string StopVoltage { get; }
|
|
||||||
public string Lot { get; }
|
|
||||||
public string RampRate { get; }
|
|
||||||
public string Plan { get; }
|
|
||||||
public string GLimit { get; }
|
|
||||||
public string Date { get; }
|
|
||||||
public string Time { get; }
|
|
||||||
public string SetupFile { get; }
|
|
||||||
public string WaferSize { get; }
|
|
||||||
public string Folder { get; }
|
|
||||||
public string Ccomp { get; }
|
|
||||||
public string Pattern { get; }
|
|
||||||
public string Area { get; }
|
|
||||||
public string CondType { get; }
|
|
||||||
public string RhoMethod { get; }
|
|
||||||
public string Model { get; }
|
|
||||||
//
|
|
||||||
public string MeanNAvg { get; }
|
|
||||||
public string MeanNsl { get; }
|
|
||||||
public string MeanVd { get; }
|
|
||||||
public string MeanFlatZ { get; }
|
|
||||||
public string MeanRhoAvg { get; }
|
|
||||||
public string MeanRhosl { get; }
|
|
||||||
public string MeanPhase { get; }
|
|
||||||
public string MeanGrade { get; }
|
|
||||||
public string MeanRs { get; }
|
|
||||||
//
|
|
||||||
public string StandardDeviationPercentageNAvg { get; }
|
|
||||||
public string StandardDeviationPercentageNsl { get; }
|
|
||||||
public string StandardDeviationPercentageVd { get; }
|
|
||||||
public string StandardDeviationPercentageFlatZ { get; }
|
|
||||||
public string StandardDeviationPercentageRhoAvg { get; }
|
|
||||||
public string StandardDeviationPercentageRhosl { get; }
|
|
||||||
public string StandardDeviationPercentagePhase { get; }
|
|
||||||
public string StandardDeviationPercentageGrade { get; }
|
|
||||||
public string StandardDeviationPercentageRs { get; }
|
|
||||||
//
|
|
||||||
public string RadialGradientNAvg { get; }
|
|
||||||
public string RadialGradientNsl { get; }
|
|
||||||
public string RadialGradientVd { get; }
|
|
||||||
public string RadialGradientFlatZ { get; }
|
|
||||||
public string RadialGradientRhoAvg { get; }
|
|
||||||
public string RadialGradientRhosl { get; }
|
|
||||||
public string RadialGradientPhase { get; }
|
|
||||||
public string RadialGradientGrade { get; }
|
|
||||||
public string RadialGradientRs { get; }
|
|
||||||
//
|
|
||||||
public string Site { get; }
|
|
||||||
public string X { get; }
|
|
||||||
public string Y { get; }
|
|
||||||
public string NAvg { get; }
|
|
||||||
public string RhoAvg { get; }
|
|
||||||
public string Nsl { get; }
|
|
||||||
public string Rhosl { get; }
|
|
||||||
public string Vd { get; }
|
|
||||||
public string Phase { get; }
|
|
||||||
public string FlatZ { get; }
|
|
||||||
public string Grade { get; }
|
|
||||||
public string XLeft { get; }
|
|
||||||
public string XRight { get; }
|
|
||||||
public string BottomY { get; }
|
|
||||||
public string TopY { get; }
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
[JsonSourceGenerationOptions(WriteIndented = true)]
|
|
||||||
[JsonSerializable(typeof(Row))]
|
|
||||||
internal partial class RowSourceGenerationContext : JsonSerializerContext
|
|
||||||
{
|
|
||||||
}
|
|
||||||
@ -1,148 +0,0 @@
|
|||||||
using Adaptation.Shared;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Collections.ObjectModel;
|
|
||||||
using System.IO;
|
|
||||||
using System.Text;
|
|
||||||
using System.Text.Json;
|
|
||||||
using System.Text.Json.Serialization;
|
|
||||||
|
|
||||||
namespace Adaptation.FileHandlers.pdsf;
|
|
||||||
|
|
||||||
#nullable enable
|
|
||||||
|
|
||||||
internal class Run
|
|
||||||
{
|
|
||||||
|
|
||||||
public Run(Header header, Summary summary, ReadOnlyCollection<Point> points)
|
|
||||||
{
|
|
||||||
Header = header;
|
|
||||||
Summary = summary;
|
|
||||||
Points = points;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Header Header { get; }
|
|
||||||
public Summary Summary { get; }
|
|
||||||
public ReadOnlyCollection<Point> Points { get; }
|
|
||||||
|
|
||||||
private static ReadOnlyCollection<string> FilterLines(ReadOnlyCollection<string> collection)
|
|
||||||
{
|
|
||||||
List<string> results = new();
|
|
||||||
foreach (string line in collection)
|
|
||||||
{
|
|
||||||
if (string.IsNullOrEmpty(line) || line is "*" or "@")
|
|
||||||
continue;
|
|
||||||
if (line.Length < 3 || line[0] is not '*' and not '@' || line[1] != ' ')
|
|
||||||
results.Add(line);
|
|
||||||
else
|
|
||||||
results.Add(line.Substring(2));
|
|
||||||
}
|
|
||||||
return new(results);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void WriteJson(Logistics logistics, List<FileInfo> fileInfoCollection, Run result)
|
|
||||||
{
|
|
||||||
FileInfo fileInfo = new($"{logistics.ReportFullPath}.run.json");
|
|
||||||
string json = JsonSerializer.Serialize(result, RunSourceGenerationContext.Default.Run);
|
|
||||||
File.WriteAllText(fileInfo.FullName, json);
|
|
||||||
File.SetLastWriteTime(fileInfo.FullName, logistics.DateTimeFromSequence);
|
|
||||||
fileInfoCollection.Add(fileInfo);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static ReadOnlyCollection<string> GetLines(Logistics logistics, JsonElement[]? jsonElements)
|
|
||||||
{
|
|
||||||
List<string> results = new();
|
|
||||||
int columns = 0;
|
|
||||||
StringBuilder stringBuilder = new();
|
|
||||||
results.Add($"\"Count\",{jsonElements?.Length}");
|
|
||||||
results.Add($"\"{nameof(logistics.Sequence)}\",\"{logistics.Sequence}\"");
|
|
||||||
results.Add($"\"{nameof(logistics.MesEntity)}\",\"{logistics.MesEntity}\"");
|
|
||||||
string dateTimeFromSequence = logistics.DateTimeFromSequence.ToString("MM/dd/yyyy hh:mm:ss tt");
|
|
||||||
for (int i = 0; i < jsonElements?.Length;)
|
|
||||||
{
|
|
||||||
_ = stringBuilder.Append('"').Append(nameof(logistics.DateTimeFromSequence)).Append('"').Append(',');
|
|
||||||
foreach (JsonProperty jsonProperty in jsonElements[0].EnumerateObject())
|
|
||||||
{
|
|
||||||
columns += 1;
|
|
||||||
_ = stringBuilder.Append('"').Append(jsonProperty.Name).Append('"').Append(',');
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (jsonElements?.Length != 0)
|
|
||||||
_ = stringBuilder.Remove(stringBuilder.Length - 1, 1);
|
|
||||||
results.Add(stringBuilder.ToString());
|
|
||||||
for (int i = 0; i < jsonElements?.Length; i++)
|
|
||||||
{
|
|
||||||
_ = stringBuilder.Clear();
|
|
||||||
_ = stringBuilder.Append('"').Append(dateTimeFromSequence).Append('"').Append(',');
|
|
||||||
foreach (JsonProperty jsonProperty in jsonElements[i].EnumerateObject())
|
|
||||||
{
|
|
||||||
if (jsonProperty.Value.ValueKind == JsonValueKind.Object)
|
|
||||||
_ = stringBuilder.Append(',');
|
|
||||||
else if (jsonProperty.Value.ValueKind != JsonValueKind.String)
|
|
||||||
_ = stringBuilder.Append(jsonProperty.Value).Append(',');
|
|
||||||
else
|
|
||||||
_ = stringBuilder.Append('"').Append(jsonProperty.Value).Append('"').Append(',');
|
|
||||||
}
|
|
||||||
_ = stringBuilder.Remove(stringBuilder.Length - 1, 1);
|
|
||||||
results.Add(stringBuilder.ToString());
|
|
||||||
}
|
|
||||||
return results.AsReadOnly();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void WriteCommaSeparatedValues(Logistics logistics, Run run)
|
|
||||||
{
|
|
||||||
List<Row> results = new();
|
|
||||||
Row row;
|
|
||||||
for (int i = 0; i < run.Points.Count; i++)
|
|
||||||
{
|
|
||||||
row = new(run, i);
|
|
||||||
results.Add(row);
|
|
||||||
}
|
|
||||||
string json = JsonSerializer.Serialize(results);
|
|
||||||
JsonElement[]? jsonElements = JsonSerializer.Deserialize<JsonElement[]>(json);
|
|
||||||
ReadOnlyCollection<string> lines = GetLines(logistics, jsonElements);
|
|
||||||
File.WriteAllText($"{logistics.ReportFullPath}.csv", string.Join(Environment.NewLine, lines));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Run? Get(Logistics logistics, List<FileInfo> fileInfoCollection, ReadOnlyCollection<string> collection)
|
|
||||||
{
|
|
||||||
Run? result;
|
|
||||||
Constant constant = new();
|
|
||||||
ReadOnlyCollection<string> lines = FilterLines(collection);
|
|
||||||
if (collection.Count <= constant.Take)
|
|
||||||
result = null;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Header? header = Header.Get(constant, lines);
|
|
||||||
if (header is null)
|
|
||||||
result = null;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Summary? summary = SummarySegment.Get(constant, lines);
|
|
||||||
if (summary is null)
|
|
||||||
result = null;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ReadOnlyCollection<Point> points = Point.GetCollection(constant, lines) ?? throw new NullReferenceException(nameof(summary));
|
|
||||||
if (points.Count == 0)
|
|
||||||
result = null;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
result = new(header, summary, points);
|
|
||||||
WriteJson(logistics, fileInfoCollection, result);
|
|
||||||
WriteCommaSeparatedValues(logistics, result);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
[JsonSourceGenerationOptions(WriteIndented = true)]
|
|
||||||
[JsonSerializable(typeof(Run))]
|
|
||||||
internal partial class RunSourceGenerationContext : JsonSerializerContext
|
|
||||||
{
|
|
||||||
}
|
|
||||||
@ -1,27 +0,0 @@
|
|||||||
using System.Text.Json.Serialization;
|
|
||||||
|
|
||||||
namespace Adaptation.FileHandlers.pdsf;
|
|
||||||
|
|
||||||
#nullable enable
|
|
||||||
|
|
||||||
internal class Summary
|
|
||||||
{
|
|
||||||
|
|
||||||
public Summary(SummarySegment? mean, SummarySegment? standardDeviationPercentage, SummarySegment? radialGradient)
|
|
||||||
{
|
|
||||||
Mean = mean;
|
|
||||||
StandardDeviationPercentage = standardDeviationPercentage;
|
|
||||||
RadialGradient = radialGradient;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SummarySegment? Mean { get; }
|
|
||||||
public SummarySegment? StandardDeviationPercentage { get; }
|
|
||||||
public SummarySegment? RadialGradient { get; }
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
[JsonSourceGenerationOptions(WriteIndented = true)]
|
|
||||||
[JsonSerializable(typeof(Summary))]
|
|
||||||
internal partial class SummarySourceGenerationContext : JsonSerializerContext
|
|
||||||
{
|
|
||||||
}
|
|
||||||
@ -1,119 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Collections.ObjectModel;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text.Json;
|
|
||||||
using System.Text.Json.Serialization;
|
|
||||||
|
|
||||||
namespace Adaptation.FileHandlers.pdsf;
|
|
||||||
|
|
||||||
#nullable enable
|
|
||||||
|
|
||||||
internal class SummarySegment
|
|
||||||
{
|
|
||||||
|
|
||||||
public SummarySegment(string nAvg, string nsl, string vd, string flatZ, string rhoAvg, string rhosl, string phase, string grade, string rs)
|
|
||||||
{
|
|
||||||
NAvg = nAvg;
|
|
||||||
Nsl = nsl;
|
|
||||||
Vd = vd;
|
|
||||||
FlatZ = flatZ;
|
|
||||||
RhoAvg = rhoAvg;
|
|
||||||
Rhosl = rhosl;
|
|
||||||
Phase = phase;
|
|
||||||
Grade = grade;
|
|
||||||
Rs = rs;
|
|
||||||
}
|
|
||||||
|
|
||||||
[JsonPropertyName("Navg")] public string NAvg { get; }
|
|
||||||
[JsonPropertyName("Nsl")] public string Nsl { get; }
|
|
||||||
[JsonPropertyName("Vd")] public string Vd { get; }
|
|
||||||
[JsonPropertyName("Flat Z")] public string FlatZ { get; }
|
|
||||||
[JsonPropertyName("Rhoavg")] public string RhoAvg { get; }
|
|
||||||
[JsonPropertyName("Rhosl")] public string Rhosl { get; }
|
|
||||||
[JsonPropertyName("Phase")] public string Phase { get; }
|
|
||||||
[JsonPropertyName("Grade")] public string Grade { get; }
|
|
||||||
[JsonPropertyName("Rs")] public string Rs { get; }
|
|
||||||
|
|
||||||
public static SummarySegment Get() =>
|
|
||||||
new(string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty,
|
|
||||||
string.Empty);
|
|
||||||
|
|
||||||
private static ReadOnlyCollection<JsonProperty> GetJsonProperties()
|
|
||||||
{
|
|
||||||
JsonProperty[] results;
|
|
||||||
string json;
|
|
||||||
SummarySegment summarySegment = Get();
|
|
||||||
json = JsonSerializer.Serialize(summarySegment);
|
|
||||||
JsonElement jsonElement = JsonSerializer.Deserialize<JsonElement>(json);
|
|
||||||
results = jsonElement.EnumerateObject().ToArray();
|
|
||||||
return new(results);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Summary? Get(Constant constant, ReadOnlyCollection<string> lines)
|
|
||||||
{
|
|
||||||
Summary? result;
|
|
||||||
string json;
|
|
||||||
string[] segments;
|
|
||||||
bool found = false;
|
|
||||||
string[] segmentsB;
|
|
||||||
List<string> names = new();
|
|
||||||
Dictionary<string, string> keyValuePairs = new();
|
|
||||||
Dictionary<string, string> keyValuePairsB = new();
|
|
||||||
Dictionary<string, string> keyValuePairsC = new();
|
|
||||||
ReadOnlyCollection<JsonProperty> jsonProperties = GetJsonProperties();
|
|
||||||
foreach (string line in lines)
|
|
||||||
{
|
|
||||||
if (line == constant.SummaryLine)
|
|
||||||
found = true;
|
|
||||||
if (!found)
|
|
||||||
continue;
|
|
||||||
if (line.Contains(constant.Site))
|
|
||||||
break;
|
|
||||||
if (line.Contains(constant.LastUnits))
|
|
||||||
break;
|
|
||||||
foreach (JsonProperty jsonProperty in jsonProperties)
|
|
||||||
{
|
|
||||||
segments = line.Split(new string[] { $"{jsonProperty.Name}:", $"{jsonProperty.Name} :" }, StringSplitOptions.None);
|
|
||||||
if (segments.Length < 2 || !line.StartsWith(jsonProperty.Name))
|
|
||||||
continue;
|
|
||||||
segmentsB = segments[1].Trim().Split(' ');
|
|
||||||
if (segmentsB.Length < 3)
|
|
||||||
continue;
|
|
||||||
if (names.Contains(jsonProperty.Name))
|
|
||||||
continue;
|
|
||||||
names.Add(jsonProperty.Name);
|
|
||||||
keyValuePairs.Add(jsonProperty.Name, segmentsB[0]);
|
|
||||||
keyValuePairsB.Add(jsonProperty.Name, segmentsB[1]);
|
|
||||||
keyValuePairsC.Add(jsonProperty.Name, segmentsB[2]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (keyValuePairs.Count != jsonProperties.Count || keyValuePairsB.Count != jsonProperties.Count || keyValuePairsC.Count != jsonProperties.Count)
|
|
||||||
result = null;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
json = JsonSerializer.Serialize(keyValuePairs);
|
|
||||||
SummarySegment? mean = JsonSerializer.Deserialize(json, SummarySegmentSourceGenerationContext.Default.SummarySegment);
|
|
||||||
json = JsonSerializer.Serialize(keyValuePairsB);
|
|
||||||
SummarySegment? standardDeviationPercentage = JsonSerializer.Deserialize(json, SummarySegmentSourceGenerationContext.Default.SummarySegment);
|
|
||||||
json = JsonSerializer.Serialize(keyValuePairsC);
|
|
||||||
SummarySegment? radialGradient = JsonSerializer.Deserialize(json, SummarySegmentSourceGenerationContext.Default.SummarySegment);
|
|
||||||
result = new(mean, standardDeviationPercentage, radialGradient);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
[JsonSourceGenerationOptions(WriteIndented = true)]
|
|
||||||
[JsonSerializable(typeof(SummarySegment))]
|
|
||||||
internal partial class SummarySegmentSourceGenerationContext : JsonSerializerContext
|
|
||||||
{
|
|
||||||
}
|
|
||||||
@ -226,9 +226,9 @@ public class MonIn : IMonIn, IDisposable
|
|||||||
{
|
{
|
||||||
StringBuilder stringBuilder = new();
|
StringBuilder stringBuilder = new();
|
||||||
if (string.IsNullOrEmpty(subresource))
|
if (string.IsNullOrEmpty(subresource))
|
||||||
_ = stringBuilder.AppendFormat(_CultureInfo, "> {0} {1} \"{2}\" \"{3}\" {4} \n{5}", site.Trim(), timeStamp.HasValue ? GetDateTimeNowAsPosix(timeStamp.Value) : (object)"now", resource.Trim(), stateName.Trim(), state.Trim(), description.Trim());
|
_ = stringBuilder.AppendFormat(_CultureInfo, "> {0} {1} \"{2}\" \"{3}\" {4} \n{5}", site.Trim(), timeStamp.HasValue ? GetDateTimeNowAsPosix(timeStamp.Value) : "now", resource.Trim(), stateName.Trim(), state.Trim(), description.Trim());
|
||||||
else
|
else
|
||||||
_ = stringBuilder.AppendFormat(_CultureInfo, "> {0} {1} \"{2}\" \"{3}\" \"{4}\" {5} \n{6}", site.Trim(), timeStamp.HasValue ? GetDateTimeNowAsPosix(timeStamp.Value) : (object)"now", resource.Trim(), subresource.Trim(), stateName.Trim(), state.Trim(), description.Trim());
|
_ = stringBuilder.AppendFormat(_CultureInfo, "> {0} {1} \"{2}\" \"{3}\" \"{4}\" {5} \n{6}", site.Trim(), timeStamp.HasValue ? GetDateTimeNowAsPosix(timeStamp.Value) : "now", resource.Trim(), subresource.Trim(), stateName.Trim(), state.Trim(), description.Trim());
|
||||||
return stringBuilder.ToString();
|
return stringBuilder.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -247,14 +247,14 @@ public class MonIn : IMonIn, IDisposable
|
|||||||
if (string.IsNullOrEmpty(subresource))
|
if (string.IsNullOrEmpty(subresource))
|
||||||
{
|
{
|
||||||
if (unit.Equals(string.Empty) && !interval.HasValue)
|
if (unit.Equals(string.Empty) && !interval.HasValue)
|
||||||
_ = stringBuilder.AppendFormat(_CultureInfo, "> {0} {1} \"{2}\" \"{3}\" {4} \n{5}", site.Trim(), timeStamp.HasValue ? GetDateTimeNowAsPosix(timeStamp.Value) : (object)"now", resource.Trim(), performanceName.Trim(), value, description.Trim());
|
_ = stringBuilder.AppendFormat(_CultureInfo, "> {0} {1} \"{2}\" \"{3}\" {4} \n{5}", site.Trim(), timeStamp.HasValue ? GetDateTimeNowAsPosix(timeStamp.Value) : "now", resource.Trim(), performanceName.Trim(), value, description.Trim());
|
||||||
else
|
else
|
||||||
_ = stringBuilder.AppendFormat(_CultureInfo, "> {0} {1} \"{2}\" \"{3}\" {4} {5} {{interval={6}, unit={7}}}\n", site.Trim(), timeStamp.HasValue ? GetDateTimeNowAsPosix(timeStamp.Value) : (object)"now", resource.Trim(), performanceName.Trim(), value, description.Trim(), interval.HasValue ? interval.Value.ToString() : (object)string.Empty, unit.Trim());
|
_ = stringBuilder.AppendFormat(_CultureInfo, "> {0} {1} \"{2}\" \"{3}\" {4} {5} {{interval={6}, unit={7}}}\n", site.Trim(), timeStamp.HasValue ? GetDateTimeNowAsPosix(timeStamp.Value) : "now", resource.Trim(), performanceName.Trim(), value, description.Trim(), interval.HasValue ? interval.Value.ToString() : string.Empty, unit.Trim());
|
||||||
}
|
}
|
||||||
else if (unit.Equals(string.Empty) && !interval.HasValue)
|
else if (unit.Equals(string.Empty) && !interval.HasValue)
|
||||||
_ = stringBuilder.AppendFormat(_CultureInfo, "> {0} {1} \"{2}\" \"{3}\" \"{4}\" {5} \n{6}", site.Trim(), timeStamp.HasValue ? GetDateTimeNowAsPosix(timeStamp.Value) : (object)"now", resource.Trim(), subresource.Trim(), performanceName.Trim(), value, description.Trim());
|
_ = stringBuilder.AppendFormat(_CultureInfo, "> {0} {1} \"{2}\" \"{3}\" \"{4}\" {5} \n{6}", site.Trim(), timeStamp.HasValue ? GetDateTimeNowAsPosix(timeStamp.Value) : "now", resource.Trim(), subresource.Trim(), performanceName.Trim(), value, description.Trim());
|
||||||
else
|
else
|
||||||
_ = stringBuilder.AppendFormat(_CultureInfo, "> {0} {1} \"{2}\" \"{3}\" \"{4}\" {5} {6} {{interval={7}, unit={8}}}\n", site.Trim(), timeStamp.HasValue ? GetDateTimeNowAsPosix(timeStamp.Value) : (object)"now", resource.Trim(), subresource.Trim(), performanceName.Trim(), value, description.Trim(), interval.HasValue ? interval.Value.ToString() : (object)string.Empty, unit.Trim());
|
_ = stringBuilder.AppendFormat(_CultureInfo, "> {0} {1} \"{2}\" \"{3}\" \"{4}\" {5} {6} {{interval={7}, unit={8}}}\n", site.Trim(), timeStamp.HasValue ? GetDateTimeNowAsPosix(timeStamp.Value) : "now", resource.Trim(), subresource.Trim(), performanceName.Trim(), value, description.Trim(), interval.HasValue ? interval.Value.ToString() : string.Empty, unit.Trim());
|
||||||
return stringBuilder.ToString();
|
return stringBuilder.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -10,7 +10,7 @@
|
|||||||
<IsPackable>false</IsPackable>
|
<IsPackable>false</IsPackable>
|
||||||
<Nullable>disable</Nullable>
|
<Nullable>disable</Nullable>
|
||||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<VSTestLogger>trx</VSTestLogger>
|
<VSTestLogger>trx</VSTestLogger>
|
||||||
@ -35,8 +35,8 @@
|
|||||||
<RuntimeHostConfigurationOption Include="AssemblyName" Value="MET08RESIHGCV" />
|
<RuntimeHostConfigurationOption Include="AssemblyName" Value="MET08RESIHGCV" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="coverlet.collector" Version="6.0.3" />
|
<PackageReference Include="coverlet.collector" Version="6.0.4" />
|
||||||
<PackageReference Include="FFMpegCore" Version="5.1.0" />
|
<PackageReference Include="FFMpegCore" Version="5.4.0" />
|
||||||
<PackageReference Include="IKVM.AWT.WinForms" Version="7.2.4630.5"><NoWarn>NU1701</NoWarn></PackageReference>
|
<PackageReference Include="IKVM.AWT.WinForms" Version="7.2.4630.5"><NoWarn>NU1701</NoWarn></PackageReference>
|
||||||
<PackageReference Include="IKVM.OpenJDK.Core" Version="7.2.4630.5"><NoWarn>NU1701</NoWarn></PackageReference>
|
<PackageReference Include="IKVM.OpenJDK.Core" Version="7.2.4630.5"><NoWarn>NU1701</NoWarn></PackageReference>
|
||||||
<PackageReference Include="IKVM.OpenJDK.Media" Version="7.2.4630.5"><NoWarn>NU1701</NoWarn></PackageReference>
|
<PackageReference Include="IKVM.OpenJDK.Media" Version="7.2.4630.5"><NoWarn>NU1701</NoWarn></PackageReference>
|
||||||
@ -44,29 +44,28 @@
|
|||||||
<PackageReference Include="IKVM.OpenJDK.Util" Version="7.2.4630.5"><NoWarn>NU1701</NoWarn></PackageReference>
|
<PackageReference Include="IKVM.OpenJDK.Util" Version="7.2.4630.5"><NoWarn>NU1701</NoWarn></PackageReference>
|
||||||
<PackageReference Include="IKVM.OpenJDK.XML.API" Version="7.2.4630.5"><NoWarn>NU1701</NoWarn></PackageReference>
|
<PackageReference Include="IKVM.OpenJDK.XML.API" Version="7.2.4630.5"><NoWarn>NU1701</NoWarn></PackageReference>
|
||||||
<PackageReference Include="IKVM.Runtime" Version="7.2.4630.5"><NoWarn>NU1701</NoWarn></PackageReference>
|
<PackageReference Include="IKVM.Runtime" Version="7.2.4630.5"><NoWarn>NU1701</NoWarn></PackageReference>
|
||||||
<PackageReference Include="Instances" Version="3.0.1" />
|
<PackageReference Include="Instances" Version="3.0.2" />
|
||||||
<PackageReference Include="log4net" Version="3.0.3"></PackageReference>
|
<PackageReference Include="log4net" Version="3.2.0"></PackageReference>
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="9.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="10.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="9.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="10.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="9.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="10.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="9.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="10.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.json" Version="9.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.json" Version="10.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration" Version="9.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration" Version="10.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.0" />
|
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="10.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="9.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="10.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="9.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="10.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="9.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Logging" Version="10.0.0" />
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
|
||||||
<PackageReference Include="Microsoft.Win32.SystemEvents" Version="9.0.0" />
|
<PackageReference Include="Microsoft.Win32.SystemEvents" Version="10.0.0" />
|
||||||
<PackageReference Include="MSTest.TestAdapter" Version="3.7.0" />
|
<PackageReference Include="MSTest.TestAdapter" Version="3.7.0" />
|
||||||
<PackageReference Include="MSTest.TestFramework" Version="3.7.0" />
|
<PackageReference Include="MSTest.TestFramework" Version="3.7.0" />
|
||||||
<PackageReference Include="Pdfbox" Version="1.1.1"><NoWarn>NU1701</NoWarn></PackageReference>
|
<PackageReference Include="Pdfbox" Version="1.1.1"><NoWarn>NU1701</NoWarn></PackageReference>
|
||||||
<PackageReference Include="RoboSharp" Version="1.6.0" />
|
<PackageReference Include="RoboSharp" Version="1.6.0" />
|
||||||
<PackageReference Include="System.Configuration.ConfigurationManager" Version="9.0.0" />
|
<PackageReference Include="System.Configuration.ConfigurationManager" Version="10.0.0" />
|
||||||
<PackageReference Include="System.Data.OleDb" Version="9.0.0" />
|
<PackageReference Include="System.Data.OleDb" Version="10.0.0" />
|
||||||
<PackageReference Include="System.Data.SqlClient" Version="4.8.6" />
|
<PackageReference Include="System.Data.SqlClient" Version="4.9.0" />
|
||||||
<PackageReference Include="System.Drawing.Common" Version="9.0.0" />
|
<PackageReference Include="System.Drawing.Common" Version="10.0.0" />
|
||||||
<PackageReference Include="System.Text.Json" Version="9.0.0" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Infineon.Mesa.PDF.Text.Stripper" Version="4.8.0.2"><NoWarn>NU1701</NoWarn></PackageReference>
|
<PackageReference Include="Infineon.Mesa.PDF.Text.Stripper" Version="4.8.0.2"><NoWarn>NU1701</NoWarn></PackageReference>
|
||||||
|
|||||||
@ -187,7 +187,7 @@ internal class ProcessDataStandardFormat
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
string? linesOne = lines.Length > 0 && body.Count == 0 && columns.Count == 0 ? lines[1] : null;
|
string? linesOne = lines.Length > 1 && body.Count == 0 && columns.Count == 0 ? lines[1] : null;
|
||||||
logistics = GetLogistics(footer, linesOne: linesOne);
|
logistics = GetLogistics(footer, linesOne: linesOne);
|
||||||
if (logistics.Count == 0)
|
if (logistics.Count == 0)
|
||||||
sequence = null;
|
sequence = null;
|
||||||
@ -235,7 +235,7 @@ internal class ProcessDataStandardFormat
|
|||||||
const int columnsLine = 6;
|
const int columnsLine = 6;
|
||||||
FileInfo fileInfo = new(reportFullPath);
|
FileInfo fileInfo = new(reportFullPath);
|
||||||
ProcessDataStandardFormat processDataStandardFormat = GetProcessDataStandardFormat(fileInfo.LastWriteTime, columnsLine, fileInfo.FullName, lines: null);
|
ProcessDataStandardFormat processDataStandardFormat = GetProcessDataStandardFormat(fileInfo.LastWriteTime, columnsLine, fileInfo.FullName, lines: null);
|
||||||
JsonElement[]? jsonElements = processDataStandardFormatMapping.OldColumnNames.Count != processDataStandardFormatMapping.ColumnIndices.Count ? null : GetFullArray(processDataStandardFormat);
|
JsonElement[]? jsonElements = processDataStandardFormatMapping.OldColumnNames.Count == 0 ? null : GetFullArray(processDataStandardFormat);
|
||||||
JsonProperty[]? jsonProperties = jsonElements is null || jsonElements.Length == 0 ? null : jsonElements[0].EnumerateObject().ToArray();
|
JsonProperty[]? jsonProperties = jsonElements is null || jsonElements.Length == 0 ? null : jsonElements[0].EnumerateObject().ToArray();
|
||||||
if (jsonElements is null || jsonProperties is null || jsonProperties.Length != processDataStandardFormatMapping.NewColumnNames.Count)
|
if (jsonElements is null || jsonProperties is null || jsonProperties.Length != processDataStandardFormatMapping.NewColumnNames.Count)
|
||||||
result = processDataStandardFormat;
|
result = processDataStandardFormat;
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#if true
|
#if v2_60_0
|
||||||
using Adaptation._Tests.Shared;
|
using Adaptation._Tests.Shared;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#if true
|
#if v2_60_0
|
||||||
using Adaptation._Tests.Shared;
|
using Adaptation._Tests.Shared;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#if true
|
#if v2_60_0
|
||||||
using Adaptation._Tests.Shared;
|
using Adaptation._Tests.Shared;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#if true
|
#if v2_60_0
|
||||||
using Adaptation._Tests.Shared;
|
using Adaptation._Tests.Shared;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
|||||||
@ -0,0 +1,65 @@
|
|||||||
|
#if true
|
||||||
|
using Adaptation._Tests.Shared;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
namespace Adaptation._Tests.CreateSelfDescription.Production.v2_61_1;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class HGCV1 : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static HGCV1 EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
static HGCV1() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||||
|
|
||||||
|
public HGCV1() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public HGCV1(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new HGCV1(testContext);
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(testContext.TestName, " - ClassInitialize"));
|
||||||
|
string[] fileNameAndText = EAFLoggingUnitTesting.AdaptationTesting.GetCSharpText(testContext.TestName);
|
||||||
|
File.WriteAllText(fileNameAndText[0], fileNameAndText[1]);
|
||||||
|
File.WriteAllText(fileNameAndText[2], fileNameAndText[3]);
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassCleanup()]
|
||||||
|
public static void ClassCleanup()
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting?.Logger?.LogInformation("Cleanup");
|
||||||
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__HGCV1__pcl()
|
||||||
|
{
|
||||||
|
string check = "*.pcl";
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||||
|
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@ -0,0 +1,76 @@
|
|||||||
|
#if true
|
||||||
|
using Adaptation._Tests.Shared;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
namespace Adaptation._Tests.CreateSelfDescription.Production.v2_61_1;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class HGCV2 : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static HGCV2 EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
static HGCV2() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||||
|
|
||||||
|
public HGCV2() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public HGCV2(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new HGCV2(testContext);
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(testContext.TestName, " - ClassInitialize"));
|
||||||
|
string[] fileNameAndText = EAFLoggingUnitTesting.AdaptationTesting.GetCSharpText(testContext.TestName);
|
||||||
|
File.WriteAllText(fileNameAndText[0], fileNameAndText[1]);
|
||||||
|
File.WriteAllText(fileNameAndText[2], fileNameAndText[3]);
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassCleanup()]
|
||||||
|
public static void ClassCleanup()
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting?.Logger?.LogInformation("Cleanup");
|
||||||
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__HGCV2__pcl()
|
||||||
|
{
|
||||||
|
string check = "*.pcl";
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||||
|
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Ignore]
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__HGCV2__pdsf()
|
||||||
|
{
|
||||||
|
string check = "*EQP_*.pdsf";
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||||
|
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@ -0,0 +1,65 @@
|
|||||||
|
#if true
|
||||||
|
using Adaptation._Tests.Shared;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
namespace Adaptation._Tests.CreateSelfDescription.Production.v2_61_1;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class HGCV3 : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static HGCV3 EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
static HGCV3() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||||
|
|
||||||
|
public HGCV3() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public HGCV3(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new HGCV3(testContext);
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(testContext.TestName, " - ClassInitialize"));
|
||||||
|
string[] fileNameAndText = EAFLoggingUnitTesting.AdaptationTesting.GetCSharpText(testContext.TestName);
|
||||||
|
File.WriteAllText(fileNameAndText[0], fileNameAndText[1]);
|
||||||
|
File.WriteAllText(fileNameAndText[2], fileNameAndText[3]);
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassCleanup()]
|
||||||
|
public static void ClassCleanup()
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting?.Logger?.LogInformation("Cleanup");
|
||||||
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__HGCV3__pcl()
|
||||||
|
{
|
||||||
|
string check = "*.pcl";
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||||
|
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@ -0,0 +1,195 @@
|
|||||||
|
#if true
|
||||||
|
using Adaptation._Tests.Shared;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
namespace Adaptation._Tests.CreateSelfDescription.Production.v2_61_1;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class MET08RESIHGCV : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static MET08RESIHGCV EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
static MET08RESIHGCV() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||||
|
|
||||||
|
public MET08RESIHGCV() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public MET08RESIHGCV(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new MET08RESIHGCV(testContext);
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(testContext.TestName, " - ClassInitialize"));
|
||||||
|
string[] fileNameAndText = EAFLoggingUnitTesting.AdaptationTesting.GetCSharpText(testContext.TestName);
|
||||||
|
File.WriteAllText(fileNameAndText[0], fileNameAndText[1]);
|
||||||
|
File.WriteAllText(fileNameAndText[2], fileNameAndText[3]);
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassCleanup()]
|
||||||
|
public static void ClassCleanup()
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting?.Logger?.LogInformation("Cleanup");
|
||||||
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__MoveMatchingFiles()
|
||||||
|
{
|
||||||
|
string check = "*.pdsf";
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||||
|
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__OpenInsightMetrologyViewer()
|
||||||
|
{
|
||||||
|
string check = "*.pdsf";
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||||
|
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__IQSSi()
|
||||||
|
{
|
||||||
|
string check = "*.pdsf";
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||||
|
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__OpenInsight()
|
||||||
|
{
|
||||||
|
string check = "*.pdsf";
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||||
|
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__OpenInsightMetrologyViewerAttachments()
|
||||||
|
{
|
||||||
|
string check = "*.pdsf";
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||||
|
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__APC()
|
||||||
|
{
|
||||||
|
string check = "*.pdsf";
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||||
|
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__SPaCe()
|
||||||
|
{
|
||||||
|
string check = "*.pdsf";
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||||
|
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__Processed()
|
||||||
|
{
|
||||||
|
string check = "*.pdsf";
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||||
|
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__Archive()
|
||||||
|
{
|
||||||
|
string check = "*.pdsf";
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||||
|
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__Dummy()
|
||||||
|
{
|
||||||
|
string check = "638417860100000000.zip";
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||||
|
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__InterceptIQS()
|
||||||
|
{
|
||||||
|
string check = "HgCV_Unload_Res_9Points*.txt";
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||||
|
_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);
|
||||||
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@ -1,4 +1,4 @@
|
|||||||
#if true
|
#if v2_60_0
|
||||||
using Adaptation._Tests.Shared;
|
using Adaptation._Tests.Shared;
|
||||||
using Adaptation.Shared;
|
using Adaptation.Shared;
|
||||||
using Adaptation.Shared.Methods;
|
using Adaptation.Shared.Methods;
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#if true
|
#if v2_60_0
|
||||||
using Adaptation._Tests.Shared;
|
using Adaptation._Tests.Shared;
|
||||||
using Adaptation.Shared;
|
using Adaptation.Shared;
|
||||||
using Adaptation.Shared.Methods;
|
using Adaptation.Shared.Methods;
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#if true
|
#if v2_60_0
|
||||||
using Adaptation._Tests.Shared;
|
using Adaptation._Tests.Shared;
|
||||||
using Adaptation.Shared;
|
using Adaptation.Shared;
|
||||||
using Adaptation.Shared.Methods;
|
using Adaptation.Shared.Methods;
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#if true
|
#if v2_60_0
|
||||||
using Adaptation._Tests.Shared;
|
using Adaptation._Tests.Shared;
|
||||||
using Adaptation.Shared;
|
using Adaptation.Shared;
|
||||||
using Adaptation.Shared.Methods;
|
using Adaptation.Shared.Methods;
|
||||||
|
|||||||
59
Adaptation/_Tests/Extract/Production/v2.61.1/HGCV1.cs
Normal file
59
Adaptation/_Tests/Extract/Production/v2.61.1/HGCV1.cs
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
#if true
|
||||||
|
using Adaptation._Tests.Shared;
|
||||||
|
using Adaptation.Shared;
|
||||||
|
using Adaptation.Shared.Methods;
|
||||||
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
namespace Adaptation._Tests.Extract.Production.v2_61_1;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class HGCV1
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
private static CreateSelfDescription.Production.v2_61_1.HGCV1 _HGCV1;
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
CreateSelfDescription.Production.v2_61_1.HGCV1.ClassInitialize(testContext);
|
||||||
|
_HGCV1 = CreateSelfDescription.Production.v2_61_1.HGCV1.EAFLoggingUnitTesting;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void NonThrowTryCatch()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{ throw new Exception(); }
|
||||||
|
catch (Exception) { }
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__HGCV1__pcl() => _HGCV1.Production__v2_61_1__HGCV1__pcl();
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__HGCV1__pcl637955429602879992__Normal()
|
||||||
|
{
|
||||||
|
string check = "*.pcl";
|
||||||
|
bool validatePDSF = false;
|
||||||
|
_HGCV1.Production__v2_61_1__HGCV1__pcl();
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
string[] variables = _HGCV1.AdaptationTesting.GetVariables(methodBase, check, validatePDSF);
|
||||||
|
IFileRead fileRead = _HGCV1.AdaptationTesting.Get(methodBase, sourceFileLocation: variables[2], sourceFileFilter: variables[3], useCyclicalForDescription: false);
|
||||||
|
Logistics logistics = new(fileRead);
|
||||||
|
_ = AdaptationTesting.ReExtractCompareUpdatePassDirectory(variables, fileRead, logistics, validatePDSF);
|
||||||
|
NonThrowTryCatch();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
74
Adaptation/_Tests/Extract/Production/v2.61.1/HGCV2.cs
Normal file
74
Adaptation/_Tests/Extract/Production/v2.61.1/HGCV2.cs
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
#if true
|
||||||
|
using Adaptation._Tests.Shared;
|
||||||
|
using Adaptation.Shared;
|
||||||
|
using Adaptation.Shared.Methods;
|
||||||
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
namespace Adaptation._Tests.Extract.Production.v2_61_1;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class HGCV2
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
private static CreateSelfDescription.Production.v2_61_1.HGCV2 _HGCV2;
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
CreateSelfDescription.Production.v2_61_1.HGCV2.ClassInitialize(testContext);
|
||||||
|
_HGCV2 = CreateSelfDescription.Production.v2_61_1.HGCV2.EAFLoggingUnitTesting;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void NonThrowTryCatch()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{ throw new Exception(); }
|
||||||
|
catch (Exception) { }
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__HGCV2__pcl() => _HGCV2.Production__v2_61_1__HGCV2__pcl();
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__HGCV2__pcl637955471606299897__Normal()
|
||||||
|
{
|
||||||
|
string check = "*.pcl";
|
||||||
|
bool validatePDSF = false;
|
||||||
|
_HGCV2.Production__v2_61_1__HGCV2__pcl();
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
string[] variables = _HGCV2.AdaptationTesting.GetVariables(methodBase, check, validatePDSF);
|
||||||
|
IFileRead fileRead = _HGCV2.AdaptationTesting.Get(methodBase, sourceFileLocation: variables[2], sourceFileFilter: variables[3], useCyclicalForDescription: false);
|
||||||
|
Logistics logistics = new(fileRead);
|
||||||
|
_ = AdaptationTesting.ReExtractCompareUpdatePassDirectory(variables, fileRead, logistics, validatePDSF);
|
||||||
|
NonThrowTryCatch();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Ignore]
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__HGCV2__pdsf__Normal()
|
||||||
|
{
|
||||||
|
bool validatePDSF = false;
|
||||||
|
string check = "*EQP_*.pdsf";
|
||||||
|
_HGCV2.Production__v2_61_1__HGCV2__pdsf();
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
string[] variables = _HGCV2.AdaptationTesting.GetVariables(methodBase, check, validatePDSF);
|
||||||
|
IFileRead fileRead = _HGCV2.AdaptationTesting.Get(methodBase, sourceFileLocation: variables[2], sourceFileFilter: variables[3], useCyclicalForDescription: false);
|
||||||
|
Logistics logistics = new(fileRead);
|
||||||
|
_ = AdaptationTesting.ReExtractCompareUpdatePassDirectory(variables, fileRead, logistics, validatePDSF);
|
||||||
|
NonThrowTryCatch();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
111
Adaptation/_Tests/Extract/Production/v2.61.1/HGCV3.cs
Normal file
111
Adaptation/_Tests/Extract/Production/v2.61.1/HGCV3.cs
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
#if true
|
||||||
|
using Adaptation._Tests.Shared;
|
||||||
|
using Adaptation.Shared;
|
||||||
|
using Adaptation.Shared.Methods;
|
||||||
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
namespace Adaptation._Tests.Extract.Production.v2_61_1;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class HGCV3
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
private static CreateSelfDescription.Production.v2_61_1.HGCV3 _HGCV3;
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
CreateSelfDescription.Production.v2_61_1.HGCV3.ClassInitialize(testContext);
|
||||||
|
_HGCV3 = CreateSelfDescription.Production.v2_61_1.HGCV3.EAFLoggingUnitTesting;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void NonThrowTryCatch()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{ throw new Exception(); }
|
||||||
|
catch (Exception) { }
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__HGCV3__pcl() => _HGCV3.Production__v2_61_1__HGCV3__pcl();
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
[ExpectedException(typeof(AssertFailedException))]
|
||||||
|
public void Production__v2_61_1__HGCV3__pcl637812984345592512__MinFileLength()
|
||||||
|
{
|
||||||
|
string check = "*.pcl";
|
||||||
|
bool validatePDSF = false;
|
||||||
|
_HGCV3.Production__v2_61_1__HGCV3__pcl();
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
string[] variables = _HGCV3.AdaptationTesting.GetVariables(methodBase, check, validatePDSF);
|
||||||
|
IFileRead fileRead = _HGCV3.AdaptationTesting.Get(methodBase, sourceFileLocation: variables[2], sourceFileFilter: variables[3], useCyclicalForDescription: false);
|
||||||
|
Logistics logistics = new(fileRead);
|
||||||
|
_ = AdaptationTesting.ReExtractCompareUpdatePassDirectory(variables, fileRead, logistics, validatePDSF);
|
||||||
|
NonThrowTryCatch();
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__HGCV3__pcl637816384579205568__Normal()
|
||||||
|
{
|
||||||
|
string check = "*.pcl";
|
||||||
|
bool validatePDSF = false;
|
||||||
|
_HGCV3.Production__v2_61_1__HGCV3__pcl();
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
string[] variables = _HGCV3.AdaptationTesting.GetVariables(methodBase, check, validatePDSF);
|
||||||
|
IFileRead fileRead = _HGCV3.AdaptationTesting.Get(methodBase, sourceFileLocation: variables[2], sourceFileFilter: variables[3], useCyclicalForDescription: false);
|
||||||
|
Logistics logistics = new(fileRead);
|
||||||
|
_ = AdaptationTesting.ReExtractCompareUpdatePassDirectory(variables, fileRead, logistics, validatePDSF);
|
||||||
|
NonThrowTryCatch();
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__HGCV3__pcl637955459372840332__Normal()
|
||||||
|
{
|
||||||
|
string check = "*.pcl";
|
||||||
|
bool validatePDSF = false;
|
||||||
|
_HGCV3.Production__v2_61_1__HGCV3__pcl();
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
string[] variables = _HGCV3.AdaptationTesting.GetVariables(methodBase, check, validatePDSF);
|
||||||
|
IFileRead fileRead = _HGCV3.AdaptationTesting.Get(methodBase, sourceFileLocation: variables[2], sourceFileFilter: variables[3], useCyclicalForDescription: false);
|
||||||
|
Logistics logistics = new(fileRead);
|
||||||
|
_ = AdaptationTesting.ReExtractCompareUpdatePassDirectory(variables, fileRead, logistics, validatePDSF);
|
||||||
|
NonThrowTryCatch();
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__HGCV3__pcl638416903464189143__PopulateCalculated()
|
||||||
|
{
|
||||||
|
string check = "*.pcl";
|
||||||
|
bool validatePDSF = false;
|
||||||
|
_HGCV3.Production__v2_61_1__HGCV3__pcl();
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
string[] variables = _HGCV3.AdaptationTesting.GetVariables(methodBase, check, validatePDSF);
|
||||||
|
IFileRead fileRead = _HGCV3.AdaptationTesting.Get(methodBase, sourceFileLocation: variables[2], sourceFileFilter: variables[3], useCyclicalForDescription: false);
|
||||||
|
Logistics logistics = new(fileRead);
|
||||||
|
_ = AdaptationTesting.ReExtractCompareUpdatePassDirectory(variables, fileRead, logistics, validatePDSF);
|
||||||
|
NonThrowTryCatch();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
212
Adaptation/_Tests/Extract/Production/v2.61.1/MET08RESIHGCV.cs
Normal file
212
Adaptation/_Tests/Extract/Production/v2.61.1/MET08RESIHGCV.cs
Normal file
@ -0,0 +1,212 @@
|
|||||||
|
#if true
|
||||||
|
using Adaptation._Tests.Shared;
|
||||||
|
using Adaptation.Shared;
|
||||||
|
using Adaptation.Shared.Methods;
|
||||||
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
namespace Adaptation._Tests.Extract.Production.v2_61_1;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class MET08RESIHGCV
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
private static CreateSelfDescription.Production.v2_61_1.MET08RESIHGCV _MET08RESIHGCV;
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
CreateSelfDescription.Production.v2_61_1.MET08RESIHGCV.ClassInitialize(testContext);
|
||||||
|
_MET08RESIHGCV = CreateSelfDescription.Production.v2_61_1.MET08RESIHGCV.EAFLoggingUnitTesting;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void NonThrowTryCatch()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{ throw new Exception(); }
|
||||||
|
catch (Exception) { }
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__MoveMatchingFiles() => _MET08RESIHGCV.Production__v2_61_1__MET08RESIHGCV__MoveMatchingFiles();
|
||||||
|
|
||||||
|
[Ignore]
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__MoveMatchingFiles637955459372840332__Normal()
|
||||||
|
{
|
||||||
|
string check = "*.pdsf";
|
||||||
|
bool validatePDSF = false;
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
_MET08RESIHGCV.Production__v2_61_1__MET08RESIHGCV__MoveMatchingFiles();
|
||||||
|
string[] variables = _MET08RESIHGCV.AdaptationTesting.GetVariables(methodBase, check, validatePDSF);
|
||||||
|
IFileRead fileRead = _MET08RESIHGCV.AdaptationTesting.Get(methodBase, sourceFileLocation: variables[2], sourceFileFilter: variables[3], useCyclicalForDescription: false);
|
||||||
|
Logistics logistics = new(fileRead);
|
||||||
|
_ = AdaptationTesting.ReExtractCompareUpdatePassDirectory(variables, fileRead, logistics, validatePDSF);
|
||||||
|
NonThrowTryCatch();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Ignore]
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__MoveMatchingFiles638899177571912731__Columns()
|
||||||
|
{
|
||||||
|
string check = "*.pdsf";
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
_MET08RESIHGCV.Production__v2_61_1__MET08RESIHGCV__MoveMatchingFiles();
|
||||||
|
string[] variables = _MET08RESIHGCV.AdaptationTesting.GetVariables(methodBase, check, validatePDSF: false);
|
||||||
|
IFileRead fileRead = _MET08RESIHGCV.AdaptationTesting.Get(methodBase, sourceFileLocation: variables[2], sourceFileFilter: variables[3], useCyclicalForDescription: false);
|
||||||
|
Logistics logistics = new(fileRead);
|
||||||
|
_ = AdaptationTesting.ReExtractCompareUpdatePassDirectory(variables, fileRead, logistics);
|
||||||
|
NonThrowTryCatch();
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__OpenInsightMetrologyViewer() => _MET08RESIHGCV.Production__v2_61_1__MET08RESIHGCV__OpenInsightMetrologyViewer();
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__OpenInsightMetrologyViewer637961644453719245__Normal()
|
||||||
|
{
|
||||||
|
string check = "*.pdsf";
|
||||||
|
bool validatePDSF = false;
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
_MET08RESIHGCV.Production__v2_61_1__MET08RESIHGCV__OpenInsightMetrologyViewer();
|
||||||
|
string[] variables = _MET08RESIHGCV.AdaptationTesting.GetVariables(methodBase, check, validatePDSF);
|
||||||
|
IFileRead fileRead = _MET08RESIHGCV.AdaptationTesting.Get(methodBase, sourceFileLocation: variables[2], sourceFileFilter: variables[3], useCyclicalForDescription: false);
|
||||||
|
Logistics logistics = new(fileRead);
|
||||||
|
_ = AdaptationTesting.ReExtractCompareUpdatePassDirectory(variables, fileRead, logistics, validatePDSF);
|
||||||
|
NonThrowTryCatch();
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__IQSSi() => _MET08RESIHGCV.Production__v2_61_1__MET08RESIHGCV__IQSSi();
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__OpenInsight() => _MET08RESIHGCV.Production__v2_61_1__MET08RESIHGCV__OpenInsight();
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__OpenInsight638054470203066399__IqsSql()
|
||||||
|
{
|
||||||
|
string check = "*.pdsf";
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
_MET08RESIHGCV.Production__v2_61_1__MET08RESIHGCV__OpenInsight();
|
||||||
|
string[] variables = _MET08RESIHGCV.AdaptationTesting.GetVariables(methodBase, check, validatePDSF: false);
|
||||||
|
IFileRead fileRead = _MET08RESIHGCV.AdaptationTesting.Get(methodBase, sourceFileLocation: variables[2], sourceFileFilter: variables[3], useCyclicalForDescription: false);
|
||||||
|
Logistics logistics = new(fileRead);
|
||||||
|
_ = AdaptationTesting.ReExtractCompareUpdatePassDirectory(variables, fileRead, logistics);
|
||||||
|
NonThrowTryCatch();
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__OpenInsight638116020180910181__IqsSql()
|
||||||
|
{
|
||||||
|
string check = "*.pdsf";
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
_MET08RESIHGCV.Production__v2_61_1__MET08RESIHGCV__OpenInsight();
|
||||||
|
string[] variables = _MET08RESIHGCV.AdaptationTesting.GetVariables(methodBase, check, validatePDSF: false);
|
||||||
|
IFileRead fileRead = _MET08RESIHGCV.AdaptationTesting.Get(methodBase, sourceFileLocation: variables[2], sourceFileFilter: variables[3], useCyclicalForDescription: false);
|
||||||
|
Logistics logistics = new(fileRead);
|
||||||
|
_ = AdaptationTesting.ReExtractCompareUpdatePassDirectory(variables, fileRead, logistics);
|
||||||
|
NonThrowTryCatch();
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__OpenInsightMetrologyViewerAttachments() => _MET08RESIHGCV.Production__v2_61_1__MET08RESIHGCV__OpenInsightMetrologyViewerAttachments();
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__OpenInsightMetrologyViewerAttachments638116020180910181__Viewer()
|
||||||
|
{
|
||||||
|
string check = "*.pdsf";
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
_MET08RESIHGCV.Production__v2_61_1__MET08RESIHGCV__OpenInsightMetrologyViewerAttachments();
|
||||||
|
string[] variables = _MET08RESIHGCV.AdaptationTesting.GetVariables(methodBase, check, validatePDSF: false);
|
||||||
|
IFileRead fileRead = _MET08RESIHGCV.AdaptationTesting.Get(methodBase, sourceFileLocation: variables[2], sourceFileFilter: variables[3], useCyclicalForDescription: false);
|
||||||
|
Logistics logistics = new(fileRead);
|
||||||
|
_ = AdaptationTesting.ReExtractCompareUpdatePassDirectory(variables, fileRead, logistics);
|
||||||
|
NonThrowTryCatch();
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__APC() => _MET08RESIHGCV.Production__v2_61_1__MET08RESIHGCV__APC();
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__SPaCe() => _MET08RESIHGCV.Production__v2_61_1__MET08RESIHGCV__SPaCe();
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__Processed() => _MET08RESIHGCV.Production__v2_61_1__MET08RESIHGCV__Processed();
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__Archive() => _MET08RESIHGCV.Production__v2_61_1__MET08RESIHGCV__Archive();
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__Dummy() => _MET08RESIHGCV.Production__v2_61_1__MET08RESIHGCV__Dummy();
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__InterceptIQS() => _MET08RESIHGCV.Production__v2_61_1__MET08RESIHGCV__InterceptIQS();
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_61_1__MET08RESIHGCV__InterceptIQS638507610398652181__First()
|
||||||
|
{
|
||||||
|
string check = "HgCV_Unload_Res_9Points*.txt";
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
_MET08RESIHGCV.Production__v2_61_1__MET08RESIHGCV__InterceptIQS();
|
||||||
|
string[] variables = _MET08RESIHGCV.AdaptationTesting.GetVariables(methodBase, check, validatePDSF: false);
|
||||||
|
IFileRead fileRead = _MET08RESIHGCV.AdaptationTesting.Get(methodBase, sourceFileLocation: variables[2], sourceFileFilter: variables[3], useCyclicalForDescription: false);
|
||||||
|
Logistics logistics = new(fileRead);
|
||||||
|
_ = AdaptationTesting.ReExtractCompareUpdatePassDirectory(variables, fileRead, logistics);
|
||||||
|
NonThrowTryCatch();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@ -193,7 +193,12 @@ public class AdaptationTesting : ISMTP
|
|||||||
segments = withActualCICN.Split(new string[] { ticks }, StringSplitOptions.None);
|
segments = withActualCICN.Split(new string[] { ticks }, StringSplitOptions.None);
|
||||||
dummyDirectory = Path.Combine(dummyRoot, cellInstanceName, ticks, string.Join(null, segments));
|
dummyDirectory = Path.Combine(dummyRoot, cellInstanceName, ticks, string.Join(null, segments));
|
||||||
if (!Directory.Exists(dummyDirectory))
|
if (!Directory.Exists(dummyDirectory))
|
||||||
|
{
|
||||||
_ = Directory.CreateDirectory(dummyDirectory);
|
_ = Directory.CreateDirectory(dummyDirectory);
|
||||||
|
try
|
||||||
|
{ Directory.SetLastWriteTime(Path.Combine(dummyRoot, cellInstanceName), DateTime.Now); }
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (string.IsNullOrEmpty(ticks))
|
if (string.IsNullOrEmpty(ticks))
|
||||||
{
|
{
|
||||||
@ -996,22 +1001,22 @@ public class AdaptationTesting : ISMTP
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(fileConnectorConfigurationTuple.Item2.ErrorTargetFileLocation))
|
if (!string.IsNullOrEmpty(fileConnectorConfigurationTuple.Item2.ErrorTargetFileLocation) && !fileConnectorConfigurationTuple.Item2.ErrorTargetFileLocation.Contains("10."))
|
||||||
{
|
{
|
||||||
if (!Directory.Exists(fileConnectorConfigurationTuple.Item2.ErrorTargetFileLocation))
|
if (!Directory.Exists(fileConnectorConfigurationTuple.Item2.ErrorTargetFileLocation))
|
||||||
_ = Directory.CreateDirectory(fileConnectorConfigurationTuple.Item2.ErrorTargetFileLocation);
|
_ = Directory.CreateDirectory(fileConnectorConfigurationTuple.Item2.ErrorTargetFileLocation);
|
||||||
}
|
}
|
||||||
if (!string.IsNullOrEmpty(fileConnectorConfigurationTuple.Item2.SourceFileLocation))
|
if (!string.IsNullOrEmpty(fileConnectorConfigurationTuple.Item2.SourceFileLocation) && !fileConnectorConfigurationTuple.Item2.SourceFileLocation.Contains("10."))
|
||||||
{
|
{
|
||||||
if (!Directory.Exists(fileConnectorConfigurationTuple.Item2.SourceFileLocation))
|
if (!Directory.Exists(fileConnectorConfigurationTuple.Item2.SourceFileLocation))
|
||||||
_ = Directory.CreateDirectory(fileConnectorConfigurationTuple.Item2.SourceFileLocation);
|
_ = Directory.CreateDirectory(fileConnectorConfigurationTuple.Item2.SourceFileLocation);
|
||||||
}
|
}
|
||||||
if (!string.IsNullOrEmpty(fileConnectorConfigurationTuple.Item2.TargetFileLocation))
|
if (!string.IsNullOrEmpty(fileConnectorConfigurationTuple.Item2.TargetFileLocation) && !fileConnectorConfigurationTuple.Item2.TargetFileLocation.Contains("10."))
|
||||||
{
|
{
|
||||||
if (!Directory.Exists(fileConnectorConfigurationTuple.Item2.TargetFileLocation))
|
if (!Directory.Exists(fileConnectorConfigurationTuple.Item2.TargetFileLocation))
|
||||||
_ = Directory.CreateDirectory(fileConnectorConfigurationTuple.Item2.TargetFileLocation);
|
_ = Directory.CreateDirectory(fileConnectorConfigurationTuple.Item2.TargetFileLocation);
|
||||||
}
|
}
|
||||||
if (!string.IsNullOrEmpty(fileConnectorConfigurationTuple.Item2.AlternateTargetFolder))
|
if (!string.IsNullOrEmpty(fileConnectorConfigurationTuple.Item2.AlternateTargetFolder) && !fileConnectorConfigurationTuple.Item2.AlternateTargetFolder.Contains("10."))
|
||||||
{
|
{
|
||||||
if (!Directory.Exists(fileConnectorConfigurationTuple.Item2.AlternateTargetFolder.Split('|')[0]))
|
if (!Directory.Exists(fileConnectorConfigurationTuple.Item2.AlternateTargetFolder.Split('|')[0]))
|
||||||
_ = Directory.CreateDirectory(fileConnectorConfigurationTuple.Item2.AlternateTargetFolder.Split('|')[0]);
|
_ = Directory.CreateDirectory(fileConnectorConfigurationTuple.Item2.AlternateTargetFolder.Split('|')[0]);
|
||||||
|
|||||||
@ -64,7 +64,7 @@ public class MET08RESIHGCV : LoggingUnitTesting, IDisposable
|
|||||||
StringBuilder results = new();
|
StringBuilder results = new();
|
||||||
(string cellInstanceName, string cellInstanceVersionName)[] collection = new (string, string)[]
|
(string cellInstanceName, string cellInstanceVersionName)[] collection = new (string, string)[]
|
||||||
{
|
{
|
||||||
new("MET08RESIHGCV", "v2.60.0"),
|
new("MET08RESIHGCV", "v2.61.1"),
|
||||||
};
|
};
|
||||||
string production = "http://messa08ec.infineon.com:9003/CellInstanceServiceV2";
|
string production = "http://messa08ec.infineon.com:9003/CellInstanceServiceV2";
|
||||||
Shared.PasteSpecialXml.EAF.XML.API.CellInstance.CellInstanceVersion cellInstanceVersion;
|
Shared.PasteSpecialXml.EAF.XML.API.CellInstance.CellInstanceVersion cellInstanceVersion;
|
||||||
|
|||||||
@ -203,9 +203,9 @@ public class PCL : LoggingUnitTesting, IDisposable
|
|||||||
StringBuilder results = new();
|
StringBuilder results = new();
|
||||||
(string cellInstanceName, string cellInstanceVersionName)[] collection = new (string, string)[]
|
(string cellInstanceName, string cellInstanceVersionName)[] collection = new (string, string)[]
|
||||||
{
|
{
|
||||||
new("HGCV1", "v2.60.0"),
|
new("HGCV1", "v2.61.1"),
|
||||||
new("HGCV2", "v2.60.0"),
|
new("HGCV2", "v2.61.1"),
|
||||||
new("HGCV3", "v2.60.0"),
|
new("HGCV3", "v2.61.1"),
|
||||||
new("HGCV1-EQPT", "v2.12.3"),
|
new("HGCV1-EQPT", "v2.12.3"),
|
||||||
new("HGCV2-EQPT", "v2.12.3"),
|
new("HGCV2-EQPT", "v2.12.3"),
|
||||||
new("HGCV3-EQPT", "v2.12.3"),
|
new("HGCV3-EQPT", "v2.12.3"),
|
||||||
|
|||||||
131
Adaptation/_Tests/Static/recipes-and-patterns.js
Normal file
131
Adaptation/_Tests/Static/recipes-and-patterns.js
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
// Recipe 1 = Matched
|
||||||
|
// recipes-and-patterns.js under IndexOf
|
||||||
|
// RecipesAndPatternsMatch
|
||||||
|
// ($('dcp.HGCV1/csv/Index', 0) + 1) == $('dcp.HGCV1/csv/Count', 0)
|
||||||
|
// getValue('HGCV', $('dcp.HGCV1/csv/Lot', ''), $('dcp.HGCV1/csv/Count', 0), $('dcp.HGCV1/csv/SetupFile', ''), $('dcp.HGCV1/csv/Pattern', ''), getContextData('2', 'cds.NULL_DATA', ''));
|
||||||
|
|
||||||
|
function getValue(tool, lot, patternSize, recipe, pattern, json) {
|
||||||
|
let result;
|
||||||
|
if (pattern === 'ONEPT.PAT' && lot.toUpperCase().indexOf('EP') > -1)
|
||||||
|
result = '1';
|
||||||
|
else if (pattern === 'ONEPT.PAT' && lot.toUpperCase().indexOf('LO') > -1)
|
||||||
|
result = '1';
|
||||||
|
else if (pattern === 'ONEPT.PAT' && lot.toUpperCase().indexOf('MI') > -1)
|
||||||
|
result = '1';
|
||||||
|
else if (pattern === 'ONEPT.PAT' && lot.toUpperCase().indexOf('HI') > -1)
|
||||||
|
result = '1';
|
||||||
|
else if (pattern === 'ONEPT.PAT' && lot.toUpperCase().indexOf('TH') > -1)
|
||||||
|
result = '1';
|
||||||
|
else {
|
||||||
|
if (tool == undefined || tool.length === 0 || patternSize == undefined || patternSize.length === 0 || recipe == undefined || recipe.length === 0 || pattern == undefined || pattern.length === 0 || json == undefined || json.length === 0)
|
||||||
|
result = 'A) Invalid input!';
|
||||||
|
else {
|
||||||
|
let parsed;
|
||||||
|
try {
|
||||||
|
parsed = JSON.parse(json);
|
||||||
|
} catch (error) {
|
||||||
|
parsed = null;
|
||||||
|
}
|
||||||
|
if (parsed == null)
|
||||||
|
result = 'B) Invalid input!';
|
||||||
|
else if (parsed.rds == undefined || parsed.rds.prodSpec == undefined || parsed.rds.prodSpec.recipesAndPatterns == undefined)
|
||||||
|
result = 'C) No Spec!';
|
||||||
|
else {
|
||||||
|
let toolMatches = [];
|
||||||
|
for (let index = 0; index < parsed.rds.prodSpec.recipesAndPatterns.length; index++) {
|
||||||
|
if (parsed.rds.prodSpec.recipesAndPatterns[index].tool === tool) {
|
||||||
|
toolMatches.push(parsed.rds.prodSpec.recipesAndPatterns[index]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (toolMatches == null || toolMatches.length === 0)
|
||||||
|
result = 'Tool [' + tool + '] not found in OI API results!';
|
||||||
|
else {
|
||||||
|
let debug = '';
|
||||||
|
let matches = 0;
|
||||||
|
for (let index = 0; index < toolMatches.length; index++) {
|
||||||
|
debug += 'patternSize: ' + toolMatches[index].patternSize +
|
||||||
|
';~recipe: ' + toolMatches[index].recipe +
|
||||||
|
';~pattern: ' + toolMatches[index].pattern + ';~';
|
||||||
|
if (toolMatches[index].patternSize == patternSize &&
|
||||||
|
toolMatches[index].recipe.toLowerCase() == recipe.toLowerCase() &&
|
||||||
|
toolMatches[index].pattern.toLowerCase() == pattern.toLowerCase()) {
|
||||||
|
matches++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (matches > 0)
|
||||||
|
result = '1';
|
||||||
|
else
|
||||||
|
result = 'Value not matched~Run~patternSize: ' + patternSize + ';~recipe: ' + recipe + ';~pattern: ' + pattern + ';~API~' + debug;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
getValue('HGCV', 'TESTLO1234', 9, '6IN4_10.SET', '6_9PLUS.PAT', '{"rds":{"prodSpec":{"recipesAndPatterns":[{"recipe":"6IN4_10.SET","pattern":"6_9PLUS.PAT","patternSize":9,"tool":"HGCV"}]}}}');
|
||||||
|
|
||||||
|
let lot;
|
||||||
|
let json;
|
||||||
|
let tool;
|
||||||
|
let recipe;
|
||||||
|
let pattern;
|
||||||
|
let patternSize;
|
||||||
|
|
||||||
|
tool = 'HGCV'
|
||||||
|
patternSize = 9;
|
||||||
|
lot = 'TESTLO1234';
|
||||||
|
recipe = '6IN4_10.SET';
|
||||||
|
pattern = '6_9PLUS.PAT';
|
||||||
|
json = '{"rds":{"prodSpec":{"recipesAndPatterns":[{"recipe":"6IN4_10.SET","pattern":"6_9PLUS.PAT","patternSize":9,"tool":"HGCV"}]}}}';
|
||||||
|
const testA = getValue(tool, lot, patternSize, recipe, pattern, json);
|
||||||
|
if (testA !== '1')
|
||||||
|
throw 'Test A failed: ' + testA;
|
||||||
|
tool = null;
|
||||||
|
const testB = getValue(tool, lot, patternSize, recipe, pattern, json);
|
||||||
|
if (testB !== 'A) Invalid input!')
|
||||||
|
throw 'Test L failed: ' + testB;
|
||||||
|
tool = '';
|
||||||
|
const testC = getValue(tool, lot, patternSize, recipe, pattern, json);
|
||||||
|
if (testC !== 'A) Invalid input!')
|
||||||
|
throw 'Test M failed: ' + testC;
|
||||||
|
patternSize = null;
|
||||||
|
const testD = getValue(tool, lot, patternSize, recipe, pattern, json);
|
||||||
|
if (testD !== 'A) Invalid input!')
|
||||||
|
throw 'Test J failed: ' + testD;
|
||||||
|
patternSize = '';
|
||||||
|
const testE = getValue(tool, lot, patternSize, recipe, pattern, json);
|
||||||
|
if (testE !== 'A) Invalid input!')
|
||||||
|
throw 'Test K failed: ' + testE;
|
||||||
|
recipe = null;
|
||||||
|
const testF = getValue(tool, lot, patternSize, recipe, pattern, json);
|
||||||
|
if (testF !== 'A) Invalid input!')
|
||||||
|
throw 'Test F failed: ' + testF;
|
||||||
|
recipe = '';
|
||||||
|
const testG = getValue(tool, lot, patternSize, recipe, pattern, json);
|
||||||
|
if (testG !== 'A) Invalid input!')
|
||||||
|
throw 'Test G failed: ' + testG;
|
||||||
|
pattern = null;
|
||||||
|
const testH = getValue(tool, lot, patternSize, recipe, pattern, json);
|
||||||
|
if (testH !== 'A) Invalid input!')
|
||||||
|
throw 'Test H failed: ' + testH;
|
||||||
|
pattern = '';
|
||||||
|
const testI = getValue(tool, lot, patternSize, recipe, pattern, json);
|
||||||
|
if (testI !== 'A) Invalid input!')
|
||||||
|
throw 'Test I failed: ' + testI;
|
||||||
|
json = '';
|
||||||
|
const testK = getValue(tool, lot, patternSize, recipe, pattern, json);
|
||||||
|
if (testK !== 'A) Invalid input!')
|
||||||
|
throw 'Test B failed: ' + testK;
|
||||||
|
json = 'invalid';
|
||||||
|
const testL = getValue(tool, lot, patternSize, recipe, pattern, json);
|
||||||
|
if (testL !== 'B) Invalid input!')
|
||||||
|
throw 'Test C failed: ' + testL;
|
||||||
|
json = '{"rds":{}}';
|
||||||
|
const testM = getValue(tool, lot, patternSize, recipe, pattern, json);
|
||||||
|
if (testM !== 'C) No Spec!')
|
||||||
|
throw 'Test D failed: ' + testM;
|
||||||
|
json = '{"rds":{"prodSpec":{"recipesAndPatterns":[]}}}';
|
||||||
|
const testN = getValue(tool, lot, patternSize, recipe, pattern, json);
|
||||||
|
if (testN !== 'Tool [HGCV] not found in OI API results!')
|
||||||
|
throw 'Test E failed: ' + testN;
|
||||||
@ -116,15 +116,6 @@
|
|||||||
<Compile Include="Adaptation\FileHandlers\OpenInsightMetrologyViewer\FileRead.cs" />
|
<Compile Include="Adaptation\FileHandlers\OpenInsightMetrologyViewer\FileRead.cs" />
|
||||||
<Compile Include="Adaptation\FileHandlers\OpenInsightMetrologyViewer\WSRequest.cs" />
|
<Compile Include="Adaptation\FileHandlers\OpenInsightMetrologyViewer\WSRequest.cs" />
|
||||||
<Compile Include="Adaptation\FileHandlers\OpenInsightMetrologyViewerAttachments\FileRead.cs" />
|
<Compile Include="Adaptation\FileHandlers\OpenInsightMetrologyViewerAttachments\FileRead.cs" />
|
||||||
<Compile Include="Adaptation\FileHandlers\pdsf\Constant.cs" />
|
|
||||||
<Compile Include="Adaptation\FileHandlers\pdsf\Convert.cs" />
|
|
||||||
<Compile Include="Adaptation\FileHandlers\pdsf\FileRead.cs" />
|
|
||||||
<Compile Include="Adaptation\FileHandlers\pdsf\Header.cs" />
|
|
||||||
<Compile Include="Adaptation\FileHandlers\pdsf\Point.cs" />
|
|
||||||
<Compile Include="Adaptation\FileHandlers\pdsf\Row.cs" />
|
|
||||||
<Compile Include="Adaptation\FileHandlers\pdsf\Run.cs" />
|
|
||||||
<Compile Include="Adaptation\FileHandlers\pdsf\Summary.cs" />
|
|
||||||
<Compile Include="Adaptation\FileHandlers\pdsf\SummarySegment.cs" />
|
|
||||||
<Compile Include="Adaptation\FileHandlers\pcl\Constant.cs" />
|
<Compile Include="Adaptation\FileHandlers\pcl\Constant.cs" />
|
||||||
<Compile Include="Adaptation\FileHandlers\pcl\Convert.cs" />
|
<Compile Include="Adaptation\FileHandlers\pcl\Convert.cs" />
|
||||||
<Compile Include="Adaptation\FileHandlers\pcl\Description.cs" />
|
<Compile Include="Adaptation\FileHandlers\pcl\Description.cs" />
|
||||||
@ -193,13 +184,13 @@
|
|||||||
<Version>7.2.4630.5</Version>
|
<Version>7.2.4630.5</Version>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Infineon.EAF.Runtime">
|
<PackageReference Include="Infineon.EAF.Runtime">
|
||||||
<Version>2.60.0</Version>
|
<Version>2.61.1</Version>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Pdfbox">
|
<PackageReference Include="Pdfbox">
|
||||||
<Version>1.1.1</Version>
|
<Version>1.1.1</Version>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="System.Text.Json">
|
<PackageReference Include="System.Text.Json">
|
||||||
<Version>8.0.5</Version>
|
<Version>8.0.3</Version>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
|||||||
@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
|||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("2.60.0.0")]
|
[assembly: AssemblyVersion("2.61.1.0")]
|
||||||
[assembly: AssemblyFileVersion("2.60.0.0")]
|
[assembly: AssemblyFileVersion("2.61.1.0")]
|
||||||
|
|||||||
Reference in New Issue
Block a user