Compare commits
35 Commits
ee7be147e0
...
10-14-a
| Author | SHA1 | Date | |
|---|---|---|---|
| 1603bb8175 | |||
| 10a0662561 | |||
| 0a477c7ea1 | |||
| 0dc57eb3d7 | |||
| f717c6cf91 | |||
| e011bf8e37 | |||
| f70690754f | |||
| 3467fb63a0 | |||
| 0ef44389c6 | |||
| 72d021cf82 | |||
| 67f4943fc2 | |||
| 2c811fae7b | |||
| 40dda0c5fc | |||
| 2b7573b33d | |||
| 954cdf7a26 | |||
| e2c40bcec4 | |||
| 3e9fd6224e | |||
| 3966b75da7 | |||
| 1ae00ffd41 | |||
| 4819d17819 | |||
| 0f55fcbb0a | |||
| d710fcc195 | |||
| ef4fdc1023 | |||
| 784471c5ce | |||
| e37d9757ec | |||
| ccedba10b5 | |||
| bd8552edea | |||
| 0f6308ace5 | |||
| 3a23304824 | |||
| 8ff877156d | |||
| aaefffd3d2 | |||
| 791fe5b010 | |||
| 4b698e966c | |||
| 7a91be105a | |||
| 457a27a357 |
3
.gitignore
vendored
3
.gitignore
vendored
@ -341,4 +341,5 @@ ASALocalRun/
|
|||||||
|
|
||||||
*.lnk
|
*.lnk
|
||||||
|
|
||||||
.kanbn/**/*
|
.kanbn
|
||||||
|
Adaptation/.kanbn
|
||||||
|
|||||||
11
.vscode/mklink.md
vendored
11
.vscode/mklink.md
vendored
@ -1,11 +0,0 @@
|
|||||||
---
|
|
||||||
type: "note"
|
|
||||||
created: "2023-10-20T03:52:57.401Z"
|
|
||||||
updated: "2023-10-20T03:53:49.161Z"
|
|
||||||
---
|
|
||||||
|
|
||||||
# mklink
|
|
||||||
|
|
||||||
```bash
|
|
||||||
mklink /J "L:\Workspaces\33_CS29_79_72\MIT_EAF_Adaptations\Trunk\MET08DDUPSFS6420\06_SourceCode\MET08DDUPSFS6420\.kanbn" "D:\Documents\Kanban\MET08DDUPSFS6420"
|
|
||||||
```
|
|
||||||
@ -92,14 +92,16 @@ csharp_using_directive_placement = outside_namespace
|
|||||||
dotnet_code_quality_unused_parameters = all
|
dotnet_code_quality_unused_parameters = all
|
||||||
dotnet_code_quality_unused_parameters = non_public # IDE0060: Remove unused parameter
|
dotnet_code_quality_unused_parameters = non_public # IDE0060: Remove unused parameter
|
||||||
dotnet_code_quality.CAXXXX.api_surface = private, internal
|
dotnet_code_quality.CAXXXX.api_surface = private, internal
|
||||||
|
dotnet_diagnostic.CA1510.severity = none # CA1510: Use 'ArgumentNullException.ThrowIfNull' instead of explicitly throwing a new exception instance
|
||||||
dotnet_diagnostic.CA1816.severity = none # CA1816: Call GC.SuppressFinalize correctly
|
dotnet_diagnostic.CA1816.severity = none # CA1816: Call GC.SuppressFinalize correctly
|
||||||
dotnet_diagnostic.CA1825.severity = warning # CA1823: Avoid zero-length array allocations
|
dotnet_diagnostic.CA1825.severity = warning # CA1825: Avoid zero-length array allocations
|
||||||
dotnet_diagnostic.CA1829.severity = warning # CA1829: Use Length/Count property instead of Count() when available
|
dotnet_diagnostic.CA1829.severity = warning # CA1829: Use Length/Count property instead of Count() when available
|
||||||
dotnet_diagnostic.CA1834.severity = warning # CA1834: Consider using 'StringBuilder.Append(char)' when applicable
|
dotnet_diagnostic.CA1834.severity = warning # CA1834: Consider using 'StringBuilder.Append(char)' when applicable
|
||||||
dotnet_diagnostic.CA1846.severity = none # CA1846: Prefer AsSpan over Substring
|
dotnet_diagnostic.CA1846.severity = none # CA1846: Prefer AsSpan over Substring
|
||||||
dotnet_diagnostic.CA1847.severity = none # CA1847: Use string.Contains(char) instead of string.Contains(string) with single characters
|
dotnet_diagnostic.CA1847.severity = none # CA1847: Use string.Contains(char) instead of string.Contains(string) with single characters
|
||||||
dotnet_diagnostic.CA1854.severity = warning # CA1854: Prefer a 'TryGetValue' call over a Dictionary indexer access guarded by a 'ContainsKey' check to avoid double lookup
|
dotnet_diagnostic.CA1854.severity = warning # CA1854: Prefer a 'TryGetValue' call over a Dictionary indexer access guarded by a 'ContainsKey' check to avoid double lookup
|
||||||
dotnet_diagnostic.CA1860.severity = error # CA1860: Prefer comparing 'Count' to 0 rather than using 'Any()', both for clarity and for performance
|
dotnet_diagnostic.CA1860.severity = error # CA1860: Prefer comparing 'Count' to 0 rather than using 'Any()', both for clarity and for performance
|
||||||
|
dotnet_diagnostic.CA1861.severity = none # CA1861: Prefer 'static readonly' fields over constant array arguments
|
||||||
dotnet_diagnostic.CA1862.severity = none # CA1862: Prefer using 'string.Equals(string, StringComparison)' to perform a case-insensitive comparison, but keep in mind that this might cause subtle changes in behavior, so make sure to conduct thorough testing after applying the suggestion, or if culturally sensitive comparison is not required, consider using 'StringComparison.OrdinalIgnoreCase'
|
dotnet_diagnostic.CA1862.severity = none # CA1862: Prefer using 'string.Equals(string, StringComparison)' to perform a case-insensitive comparison, but keep in mind that this might cause subtle changes in behavior, so make sure to conduct thorough testing after applying the suggestion, or if culturally sensitive comparison is not required, consider using 'StringComparison.OrdinalIgnoreCase'
|
||||||
dotnet_diagnostic.CA1864.severity = none # CA1864: To avoid double lookup, call 'TryAdd' instead of calling 'Add' with a 'ContainsKey' guard
|
dotnet_diagnostic.CA1864.severity = none # CA1864: To avoid double lookup, call 'TryAdd' instead of calling 'Add' with a 'ContainsKey' guard
|
||||||
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
|
||||||
@ -108,7 +110,7 @@ dotnet_diagnostic.CA2254.severity = none # CA2254: The logging message template
|
|||||||
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.
|
||||||
dotnet_diagnostic.IDE0005.severity = warning # Using directive is unnecessary
|
dotnet_diagnostic.IDE0005.severity = none # Using directive is unnecessary
|
||||||
dotnet_diagnostic.IDE0028.severity = none # IDE0028: Collection initialization can be simplified
|
dotnet_diagnostic.IDE0028.severity = none # IDE0028: Collection initialization can be simplified
|
||||||
dotnet_diagnostic.IDE0031.severity = warning # Use null propagation (IDE0031)
|
dotnet_diagnostic.IDE0031.severity = warning # Use null propagation (IDE0031)
|
||||||
dotnet_diagnostic.IDE0047.severity = warning # IDE0047: Parentheses can be removed
|
dotnet_diagnostic.IDE0047.severity = warning # IDE0047: Parentheses can be removed
|
||||||
@ -120,6 +122,8 @@ dotnet_diagnostic.IDE0290.severity = none # Use primary constructor [Distance]cs
|
|||||||
dotnet_diagnostic.IDE0300.severity = none # IDE0300: Collection initialization can be simplified
|
dotnet_diagnostic.IDE0300.severity = none # IDE0300: Collection initialization can be simplified
|
||||||
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.MSTEST0037.severity = error # 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_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
|
||||||
|
|||||||
39
Adaptation/.vscode/launch.json
vendored
39
Adaptation/.vscode/launch.json
vendored
@ -1,10 +1,43 @@
|
|||||||
{
|
{
|
||||||
"configurations": [
|
"configurations": [
|
||||||
|
{
|
||||||
|
"mode": "debug",
|
||||||
|
"name": "Go launch file",
|
||||||
|
"program": "${file}",
|
||||||
|
"request": "launch",
|
||||||
|
"type": "go"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "node Launch Current Opened File",
|
||||||
|
"program": "${file}",
|
||||||
|
"request": "launch",
|
||||||
|
"type": "node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cwd": "${workspaceFolder}",
|
||||||
|
"internalConsoleOptions": "neverOpen",
|
||||||
|
"name": "Debug File",
|
||||||
|
"program": "${file}",
|
||||||
|
"request": "launch",
|
||||||
|
"stopOnEntry": false,
|
||||||
|
"type": "bun",
|
||||||
|
"watchMode": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cwd": "${workspaceFolder}",
|
||||||
|
"internalConsoleOptions": "neverOpen",
|
||||||
|
"name": "Run File",
|
||||||
|
"noDebug": true,
|
||||||
|
"program": "${file}",
|
||||||
|
"request": "launch",
|
||||||
|
"type": "bun",
|
||||||
|
"watchMode": false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": ".NET Core Attach",
|
"name": ".NET Core Attach",
|
||||||
"type": "coreclr",
|
"processId": 32760,
|
||||||
"request": "attach",
|
"request": "attach",
|
||||||
"processId": 13036
|
"type": "coreclr"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
5
Adaptation/.vscode/mklink.md
vendored
Normal file
5
Adaptation/.vscode/mklink.md
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# mklink
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mklink /J "T:\MET08DDUPSP1TBI\06_SourceCode\MET08DDUPSP1TBI\Adaptation\.kanbn" "D:\5-Other-Small\Kanban\MET08DDUPSP1TBI"
|
||||||
|
```
|
||||||
185
Adaptation/.vscode/tasks.json
vendored
185
Adaptation/.vscode/tasks.json
vendored
@ -1,14 +1,151 @@
|
|||||||
{
|
{
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
|
"inputs": [
|
||||||
|
{
|
||||||
|
"default": "Development",
|
||||||
|
"description": "Which ASP Net Core Environment?",
|
||||||
|
"id": "ASPNETCORE_ENVIRONMENT",
|
||||||
|
"options": [
|
||||||
|
"Development",
|
||||||
|
"Production"
|
||||||
|
],
|
||||||
|
"type": "pickString"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "{AssemblyTitle}",
|
||||||
|
"description": "What Assembly Title?",
|
||||||
|
"id": "AssemblyTitle",
|
||||||
|
"type": "promptString"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "{Build.BuildId}",
|
||||||
|
"description": "Which Build BuildId?",
|
||||||
|
"id": "Build.BuildId",
|
||||||
|
"type": "promptString"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "{Build.Reason}",
|
||||||
|
"description": "Which Build Reason?",
|
||||||
|
"id": "Build.Reason",
|
||||||
|
"type": "promptString"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "{Build.Repository.Id}",
|
||||||
|
"description": "Which Build Repository Id?",
|
||||||
|
"id": "Build.Repository.Id",
|
||||||
|
"type": "promptString"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "{Build.Repository.Name}",
|
||||||
|
"description": "Which Build Repository Name?",
|
||||||
|
"id": "Build.Repository.Name",
|
||||||
|
"type": "promptString"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "{Build.SourceVersion}",
|
||||||
|
"description": "Which Build Source Version?",
|
||||||
|
"id": "Build.SourceVersion",
|
||||||
|
"type": "promptString"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "Debug",
|
||||||
|
"description": "Which Configuration?",
|
||||||
|
"id": "Configuration",
|
||||||
|
"options": [
|
||||||
|
"Debug",
|
||||||
|
"Release"
|
||||||
|
],
|
||||||
|
"type": "pickString"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "net8.0",
|
||||||
|
"description": "Which Core Version?",
|
||||||
|
"id": "CoreVersion",
|
||||||
|
"options": [
|
||||||
|
"net8.0"
|
||||||
|
],
|
||||||
|
"type": "pickString"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe",
|
||||||
|
"description": "Which MS Build?",
|
||||||
|
"id": "MSBuild",
|
||||||
|
"type": "promptString"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "https://artifactory.intra.infineon.com/artifactory/api/nuget/ngt-fi-package-main-vir/",
|
||||||
|
"description": "Which Nuget Source?",
|
||||||
|
"id": "NugetSource",
|
||||||
|
"type": "promptString"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "win-x64",
|
||||||
|
"description": "Which Runtime?",
|
||||||
|
"id": "Runtime",
|
||||||
|
"options": [
|
||||||
|
"win-x64",
|
||||||
|
"win-x32",
|
||||||
|
"linux-x64",
|
||||||
|
"linux-x32"
|
||||||
|
],
|
||||||
|
"type": "pickString"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "L:/",
|
||||||
|
"description": "Which System DefaultWorkingDirectory?",
|
||||||
|
"id": "System.DefaultWorkingDirectory",
|
||||||
|
"options": [
|
||||||
|
"L:/",
|
||||||
|
"D:/",
|
||||||
|
"C:/"
|
||||||
|
],
|
||||||
|
"type": "pickString"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "v4.8",
|
||||||
|
"description": "Which Core Target Framework Version?",
|
||||||
|
"id": "TargetFrameworkVersion",
|
||||||
|
"options": [
|
||||||
|
"v4.8"
|
||||||
|
],
|
||||||
|
"type": "pickString"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "{UserSecretsId}",
|
||||||
|
"description": "Which Core User Secrets Id?",
|
||||||
|
"id": "UserSecretsId",
|
||||||
|
"type": "promptString"
|
||||||
|
}
|
||||||
|
],
|
||||||
"tasks": [
|
"tasks": [
|
||||||
{
|
{
|
||||||
"label": "Build",
|
"label": "Build",
|
||||||
"command": "dotnet",
|
"command": "dotnet",
|
||||||
"type": "process",
|
"type": "process",
|
||||||
"args": [
|
"args": [
|
||||||
"build",
|
"build"
|
||||||
"/property:GenerateFullPaths=true",
|
],
|
||||||
"/consoleloggerparameters:NoSummary"
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Test Debug",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"test",
|
||||||
|
"-c",
|
||||||
|
"Debug"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Test Release",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"test",
|
||||||
|
"-c",
|
||||||
|
"Release"
|
||||||
],
|
],
|
||||||
"problemMatcher": "$msCompile"
|
"problemMatcher": "$msCompile"
|
||||||
},
|
},
|
||||||
@ -27,6 +164,16 @@
|
|||||||
],
|
],
|
||||||
"problemMatcher": "$msCompile"
|
"problemMatcher": "$msCompile"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"label": "Format Whitespaces",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"format",
|
||||||
|
"whitespace"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"label": "Nuget Clear",
|
"label": "Nuget Clear",
|
||||||
"command": "dotnet",
|
"command": "dotnet",
|
||||||
@ -46,7 +193,7 @@
|
|||||||
"args": [
|
"args": [
|
||||||
"/target:Build",
|
"/target:Build",
|
||||||
"/restore:True",
|
"/restore:True",
|
||||||
"/p:RestoreSources=https://api.nuget.org/v3/index.json%3Bhttps://packagemanagement.eu.infineon.com:4430/api/v2/%3Bhttps://tfs.intra.infineon.com/tfs/ManufacturingIT/_packaging/eaf/nuget/v3/index.json%3Bhttps://localhost/v3/index.json",
|
"/p:RestoreSources=https://artifactory.intra.infineon.com/artifactory/api/nuget/ngt-fi-package-main-vir/%3Bhttps://tfs.intra.infineon.com/tfs/FactoryIntegration/_packaging/EAF/nuget/v3/index.json%3Bhttps://tfs.intra.infineon.com/tfs/FactoryIntegration/_packaging/EAF%40Local/nuget/v3/index.json%3Bhttps://api.nuget.org/v3/index.json",
|
||||||
"/detailedsummary",
|
"/detailedsummary",
|
||||||
"/consoleloggerparameters:PerformanceSummary;ErrorsOnly;",
|
"/consoleloggerparameters:PerformanceSummary;ErrorsOnly;",
|
||||||
"/property:Configuration=Debug;TargetFrameworkVersion=v4.8",
|
"/property:Configuration=Debug;TargetFrameworkVersion=v4.8",
|
||||||
@ -55,9 +202,35 @@
|
|||||||
"problemMatcher": "$msCompile"
|
"problemMatcher": "$msCompile"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label": "File-Folder-Helper AOT s M .Kanbn Tasks",
|
"label": "Code Project",
|
||||||
"type": "shell",
|
"type": "shell",
|
||||||
"command": "& L:/DevOps/Mesa_FI/File-Folder-Helper/bin/Release/net7.0/win-x64/publish/File-Folder-Helper.exe s M T:/MET08DDUPSFS6420/06_SourceCode/MET08DDUPSFS6420/Adaptation -s T:/MET08DDUPSFS6420/06_SourceCode/MET08DDUPSFS6420/Adaptation/.kanbn/tasks",
|
"command": "code ../MET08DDUPSFS6420.csproj",
|
||||||
|
"problemMatcher": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Code Read Me",
|
||||||
|
"type": "shell",
|
||||||
|
"command": "code ../README.md",
|
||||||
|
"problemMatcher": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "File-Folder-Helper AOT s X Day-Helper-2025-03-20",
|
||||||
|
"type": "shell",
|
||||||
|
"command": "L:/DevOps/Mesa_FI/File-Folder-Helper/bin/Release/net8.0/win-x64/publish/File-Folder-Helper.exe",
|
||||||
|
"args": [
|
||||||
|
"s",
|
||||||
|
"X",
|
||||||
|
"L:/DevOps/EAF-Mesa-Integration/MET08DDUPSFS6420",
|
||||||
|
"Day-Helper-2025-03-20",
|
||||||
|
"false",
|
||||||
|
"4"
|
||||||
|
],
|
||||||
|
"problemMatcher": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Code Git Config",
|
||||||
|
"type": "shell",
|
||||||
|
"command": "code ../.git/config",
|
||||||
"problemMatcher": []
|
"problemMatcher": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@ -14,7 +14,7 @@ namespace Adaptation.FileHandlers.APC;
|
|||||||
public class FileRead : Shared.FileRead, IFileRead
|
public class FileRead : Shared.FileRead, IFileRead
|
||||||
{
|
{
|
||||||
|
|
||||||
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<string>> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) :
|
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)
|
base(new Description(), false, smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null)
|
||||||
{
|
{
|
||||||
_MinFileLength = 10;
|
_MinFileLength = 10;
|
||||||
@ -120,15 +120,15 @@ 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;
|
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
||||||
Tuple<string, string[], string[]> pdsf = ProcessDataStandardFormat.GetLogisticsColumnsAndBody(reportFullPath);
|
ProcessDataStandardFormat processDataStandardFormat = ProcessDataStandardFormat.GetProcessDataStandardFormat(reportFullPath);
|
||||||
_Logistics = new Logistics(reportFullPath, pdsf.Item1);
|
_Logistics = new Logistics(reportFullPath, processDataStandardFormat);
|
||||||
SetFileParameterLotIDToLogisticsMID();
|
SetFileParameterLotIDToLogisticsMID();
|
||||||
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(pdsf);
|
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(processDataStandardFormat);
|
||||||
List<Shared.Properties.IDescription> descriptions = GetDuplicatorDescriptions(jsonElements);
|
List<Shared.Properties.IDescription> descriptions = GetDuplicatorDescriptions(jsonElements);
|
||||||
Test[] tests = (from l in descriptions select (Test)l.Test).ToArray();
|
Test[] tests = (from l in descriptions select (Test)l.Test).ToArray();
|
||||||
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
||||||
FileCopy(reportFullPath, dateTime, descriptions);
|
FileCopy(reportFullPath, dateTime, descriptions);
|
||||||
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(pdsf.Item1, tests, jsonElements, new List<FileInfo>());
|
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics), tests, jsonElements, new List<FileInfo>());
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -18,7 +18,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
private readonly string _JobIdParentDirectory;
|
private readonly string _JobIdParentDirectory;
|
||||||
private readonly string _JobIdArchiveParentDirectory;
|
private readonly string _JobIdArchiveParentDirectory;
|
||||||
|
|
||||||
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<string>> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) :
|
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)
|
base(new Description(), false, smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null)
|
||||||
{
|
{
|
||||||
_MinFileLength = 10;
|
_MinFileLength = 10;
|
||||||
@ -115,14 +115,15 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma warning disable IDE0060
|
|
||||||
private void MoveArchive(string reportFullPath, DateTime dateTime)
|
private void MoveArchive(string reportFullPath, DateTime dateTime)
|
||||||
#pragma warning restore IDE0060
|
|
||||||
{
|
{
|
||||||
|
if (dateTime == DateTime.MinValue)
|
||||||
|
throw new ArgumentNullException(nameof(dateTime));
|
||||||
string logisticsSequence = _Logistics.Sequence.ToString();
|
string logisticsSequence = _Logistics.Sequence.ToString();
|
||||||
|
string day = $"{_Logistics.DateTimeFromSequence:yyyy-MM-dd}";
|
||||||
string weekOfYear = _Calendar.GetWeekOfYear(_Logistics.DateTimeFromSequence, CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString("00");
|
string weekOfYear = _Calendar.GetWeekOfYear(_Logistics.DateTimeFromSequence, CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString("00");
|
||||||
string weekDirectory = $"{_Logistics.DateTimeFromSequence:yyyy}_Week_{weekOfYear}{@"\"}{_Logistics.DateTimeFromSequence:yyyy-MM-dd}";
|
string weekDirectory = $"{_Logistics.DateTimeFromSequence:yyyy}_Week_{weekOfYear}";
|
||||||
string destinationArchiveDirectory = Path.Combine(_JobIdArchiveParentDirectory, _Logistics.JobID, weekDirectory);
|
string destinationArchiveDirectory = Path.Combine(_JobIdArchiveParentDirectory, _Logistics.JobID, weekDirectory, day);
|
||||||
if (!Directory.Exists(destinationArchiveDirectory))
|
if (!Directory.Exists(destinationArchiveDirectory))
|
||||||
_ = Directory.CreateDirectory(destinationArchiveDirectory);
|
_ = Directory.CreateDirectory(destinationArchiveDirectory);
|
||||||
string jobIdDirectory = Path.Combine(_JobIdParentDirectory, _Logistics.JobID);
|
string jobIdDirectory = Path.Combine(_JobIdParentDirectory, _Logistics.JobID);
|
||||||
@ -144,15 +145,15 @@ 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;
|
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
||||||
Tuple<string, string[], string[]> pdsf = ProcessDataStandardFormat.GetLogisticsColumnsAndBody(reportFullPath);
|
ProcessDataStandardFormat processDataStandardFormat = ProcessDataStandardFormat.GetProcessDataStandardFormat(reportFullPath);
|
||||||
_Logistics = new Logistics(reportFullPath, pdsf.Item1);
|
_Logistics = new Logistics(reportFullPath, processDataStandardFormat);
|
||||||
SetFileParameterLotIDToLogisticsMID();
|
SetFileParameterLotIDToLogisticsMID();
|
||||||
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(pdsf);
|
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(processDataStandardFormat);
|
||||||
List<Shared.Properties.IDescription> descriptions = GetDuplicatorDescriptions(jsonElements);
|
List<Shared.Properties.IDescription> descriptions = GetDuplicatorDescriptions(jsonElements);
|
||||||
Test[] tests = (from l in descriptions select (Test)l.Test).ToArray();
|
Test[] tests = (from l in descriptions select (Test)l.Test).ToArray();
|
||||||
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
||||||
MoveArchive(reportFullPath, dateTime);
|
MoveArchive(reportFullPath, dateTime);
|
||||||
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(pdsf.Item1, tests, jsonElements, new List<FileInfo>());
|
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics), tests, jsonElements, new List<FileInfo>());
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -9,7 +9,7 @@ namespace Adaptation.FileHandlers;
|
|||||||
public class CellInstanceConnectionName
|
public class CellInstanceConnectionName
|
||||||
{
|
{
|
||||||
|
|
||||||
internal static IFileRead Get(ISMTP smtp, Dictionary<string, string> fileParameter, string cellInstanceName, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList<ModelObjectParameterDefinition> modelObjectParameters, string equipmentDictionaryName, Dictionary<string, List<long>> dummyRuns, Dictionary<long, List<string>> staticRuns, bool useCyclicalForDescription, int? connectionCount)
|
internal static IFileRead Get(ISMTP smtp, Dictionary<string, string> fileParameter, string cellInstanceName, 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, int? connectionCount)
|
||||||
{
|
{
|
||||||
IFileRead result = cellInstanceConnectionName switch
|
IFileRead result = cellInstanceConnectionName switch
|
||||||
{
|
{
|
||||||
@ -21,9 +21,11 @@ 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),
|
||||||
|
nameof(TransmissionControlProtocol) => new TransmissionControlProtocol.FileRead(smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null),
|
||||||
_ => throw new Exception($"\"{cellInstanceConnectionName}\" not mapped")
|
_ => throw new Exception($"\"{cellInstanceConnectionName}\" not mapped")
|
||||||
};
|
};
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@ -23,7 +23,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
private int _LastDummyRunIndex;
|
private int _LastDummyRunIndex;
|
||||||
private readonly string[] _CellNames;
|
private readonly string[] _CellNames;
|
||||||
|
|
||||||
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<string>> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) :
|
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)
|
base(new Description(), false, smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null)
|
||||||
{
|
{
|
||||||
_MinFileLength = 10;
|
_MinFileLength = 10;
|
||||||
|
|||||||
@ -8,6 +8,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
|
|
||||||
namespace Adaptation.FileHandlers.IQSSi;
|
namespace Adaptation.FileHandlers.IQSSi;
|
||||||
@ -17,7 +18,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
|
|
||||||
private readonly string _IQSFile;
|
private readonly string _IQSFile;
|
||||||
|
|
||||||
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<string>> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) :
|
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<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)
|
base(new Description(), false, smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null)
|
||||||
{
|
{
|
||||||
_MinFileLength = 10;
|
_MinFileLength = 10;
|
||||||
@ -107,11 +108,63 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static string GetLines(Logistics logistics, List<pcl.Description> descriptions)
|
||||||
|
{
|
||||||
|
StringBuilder result = new();
|
||||||
|
pcl.Description x = descriptions[0];
|
||||||
|
char del = '\t';
|
||||||
|
_ = result.Append(x.AreaCountAvg).Append(del). // 001 - AreaCountAvg
|
||||||
|
Append(x.AreaCountMax).Append(del). // 002 - AreaCountMax
|
||||||
|
Append(x.AreaCountMin).Append(del). // 003 - AreaCountMin
|
||||||
|
Append(x.AreaCountStdDev).Append(del). // 004 - AreaCountStdDev
|
||||||
|
Append(x.AreaTotalAvg).Append(del). // 005 - AreaTotalAvg
|
||||||
|
Append(x.AreaTotalMax).Append(del). // 006 - AreaTotalMax
|
||||||
|
Append(x.AreaTotalMin).Append(del). // 007 - AreaTotalMin
|
||||||
|
Append(x.AreaTotalStdDev).Append(del). // 008 - AreaTotalStdDev
|
||||||
|
Append(x.Date).Append(del). // 009 -
|
||||||
|
Append(x.HazeAverageAvg).Append(del). // 010 - Haze Average
|
||||||
|
Append(x.HazeAverageMax).Append(del). // 011 -
|
||||||
|
Append(x.HazeAverageMin).Append(del). // 012 -
|
||||||
|
Append(x.HazeAverageStdDev).Append(del). // 013 -
|
||||||
|
Append(x.HazeRegionAvg).Append(del). // 014 -
|
||||||
|
Append(x.HazeRegionMax).Append(del). // 015 -
|
||||||
|
Append(x.HazeRegionMin).Append(del). // 016 -
|
||||||
|
Append(x.HazeRegionStdDev).Append(del). // 017 -
|
||||||
|
Append(x.Lot).Append(del). // 018 -
|
||||||
|
Append(x.LPDCM2Avg).Append(del). // 019 -
|
||||||
|
Append(x.LPDCM2Max).Append(del). // 020 -
|
||||||
|
Append(x.LPDCM2Min).Append(del). // 021 -
|
||||||
|
Append(x.LPDCM2StdDev).Append(del). // 022 -
|
||||||
|
Append(x.LPDCountAvg).Append(del). // 023 -
|
||||||
|
Append(x.LPDCountMax).Append(del). // 024 -
|
||||||
|
Append(x.LPDCM2Min).Append(del). // 025 -
|
||||||
|
Append(x.LPDCountStdDev).Append(del). // 026 -
|
||||||
|
Append(x.Employee).Append(del). // 027 -
|
||||||
|
Append(x.RDS).Append(del). // 028 - Lot
|
||||||
|
Append(x.Reactor).Append(del). // 029 - Process
|
||||||
|
Append(x.Recipe.Replace(";", string.Empty)).Append(del). // 030 - Part
|
||||||
|
Append(x.ScratchCountAvg).Append(del). // 031 - Scratch Count
|
||||||
|
Append(x.ScratchCountMax).Append(del). // 032 -
|
||||||
|
Append(x.ScratchCountMin).Append(del). // 033 -
|
||||||
|
Append(x.ScratchTotalStdDev).Append(del). // 034 -
|
||||||
|
Append(x.ScratchTotalAvg).Append(del). // 035 - Scratch Length
|
||||||
|
Append(x.ScratchTotalMax).Append(del). // 036 -
|
||||||
|
Append(x.ScratchTotalMin).Append(del). // 037 -
|
||||||
|
Append(x.ScratchTotalStdDev).Append(del). // 038 -
|
||||||
|
Append(x.SumOfDefectsAvg).Append(del). // 039 - Average Sum of Defects
|
||||||
|
Append(x.SumOfDefectsMax).Append(del). // 040 - Max Sum of Defects
|
||||||
|
Append(x.SumOfDefectsMin).Append(del). // 041 - Min Sum of Defects
|
||||||
|
Append(x.SumOfDefectsStdDev).Append(del). // 042 - SumOfDefectsStdDev
|
||||||
|
Append(logistics.MesEntity).Append(del). // 043 -
|
||||||
|
AppendLine();
|
||||||
|
return result.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
private void SaveIQSFile(string reportFullPath, DateTime dateTime, List<pcl.Description> descriptions, Test[] tests)
|
private void SaveIQSFile(string reportFullPath, DateTime dateTime, List<pcl.Description> descriptions, Test[] tests)
|
||||||
{
|
{
|
||||||
bool isDummyRun = false;
|
bool isDummyRun = false;
|
||||||
List<(Shared.Properties.IScopeInfo, string)> collection = new();
|
List<(Shared.Properties.IScopeInfo, string)> collection = new();
|
||||||
string lines = OpenInsight.FileRead.GetLines(_Logistics, descriptions);
|
string lines = GetLines(_Logistics, descriptions);
|
||||||
string successDirectory = _FileConnectorConfiguration.AlternateTargetFolder;
|
string successDirectory = _FileConnectorConfiguration.AlternateTargetFolder;
|
||||||
string duplicateDirectory = Path.Combine(_FileConnectorConfiguration.SourceFileLocation, _CellInstanceName);
|
string duplicateDirectory = Path.Combine(_FileConnectorConfiguration.SourceFileLocation, _CellInstanceName);
|
||||||
if (!Directory.Exists(duplicateDirectory))
|
if (!Directory.Exists(duplicateDirectory))
|
||||||
@ -126,7 +179,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
WaitForFileConsumption(dateTime, descriptions, isDummyRun, successDirectory, duplicateDirectory, collection, duplicateFile);
|
WaitForFileConsumption(dateTime, descriptions, isDummyRun, successDirectory, duplicateDirectory, collection, duplicateFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FileCopy<T>(string reportFullPath, DateTime dateTime, List<T> descriptions) where T : Shared.Properties.IDescription
|
private void WriteFile<T>(string reportFullPath, DateTime dateTime, List<T> descriptions) where T : Shared.Properties.IDescription
|
||||||
{
|
{
|
||||||
bool isDummyRun = false;
|
bool isDummyRun = false;
|
||||||
string successDirectory = string.Empty;
|
string successDirectory = string.Empty;
|
||||||
@ -134,37 +187,37 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
string duplicateDirectory = Path.Combine(_FileConnectorConfiguration.SourceFileLocation, _CellInstanceName);
|
string duplicateDirectory = Path.Combine(_FileConnectorConfiguration.SourceFileLocation, _CellInstanceName);
|
||||||
if (!Directory.Exists(duplicateDirectory))
|
if (!Directory.Exists(duplicateDirectory))
|
||||||
_ = Directory.CreateDirectory(duplicateDirectory);
|
_ = Directory.CreateDirectory(duplicateDirectory);
|
||||||
string duplicateFile = Path.Combine(duplicateDirectory, Path.GetFileName(reportFullPath));
|
string duplicateFile = Path.Combine(duplicateDirectory, $"{Path.GetFileName(reportFullPath)}.xml");
|
||||||
string lines = File.ReadAllText(reportFullPath);
|
string xml = ProcessDataStandardFormat.GetXml(reportFullPath)
|
||||||
lines = lines
|
.Replace("ppm</", "</")
|
||||||
.Replace("ppm\t", "\t")
|
.Replace("mm2</", "</")
|
||||||
.Replace("mm2\t", "\t")
|
.Replace("um</", "</")
|
||||||
.Replace("um\t", "\t")
|
.Replace("mm</", "</")
|
||||||
.Replace("mm\t", "\t")
|
.Replace("nm</", "</")
|
||||||
.Replace("nm\t", "\t")
|
.Replace(">[ ", ">")
|
||||||
.Replace("\t[ ", "\t")
|
.Replace(">*0", ">")
|
||||||
.Replace("\t*0", "\t")
|
.Replace(">*", ">")
|
||||||
.Replace("\t*", "\t")
|
.Replace("%</", "</")
|
||||||
.Replace("%\t", "\t")
|
.Replace("]</", "</");
|
||||||
.Replace("]\t", "\t");
|
File.WriteAllText(duplicateFile, xml);
|
||||||
File.WriteAllText(duplicateFile, lines);
|
|
||||||
WaitForFileConsumption(dateTime, descriptions, isDummyRun, successDirectory, duplicateDirectory, collection, duplicateFile);
|
WaitForFileConsumption(dateTime, descriptions, isDummyRun, successDirectory, duplicateDirectory, collection, duplicateFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
||||||
Tuple<string, string[], string[]> pdsf = ProcessDataStandardFormat.GetLogisticsColumnsAndBody(reportFullPath);
|
string[] lines = File.ReadAllLines(reportFullPath);
|
||||||
_Logistics = new Logistics(reportFullPath, pdsf.Item1);
|
ProcessDataStandardFormat processDataStandardFormat = ProcessDataStandardFormat.GetProcessDataStandardFormat(reportFullPath, lines);
|
||||||
|
_Logistics = new Logistics(reportFullPath, processDataStandardFormat);
|
||||||
SetFileParameterLotIDToLogisticsMID();
|
SetFileParameterLotIDToLogisticsMID();
|
||||||
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(pdsf);
|
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(reportFullPath, lines, processDataStandardFormat);
|
||||||
List<pcl.Description> descriptions = pcl.ProcessData.GetDescriptions(jsonElements);
|
List<pcl.Description> descriptions = pcl.ProcessData.GetDescriptions(jsonElements);
|
||||||
Test[] tests = (from l in descriptions select (Test)l.Test).ToArray();
|
Test[] tests = (from l in descriptions select (Test)l.Test).ToArray();
|
||||||
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(pdsf.Item1, tests, jsonElements, new List<FileInfo>());
|
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics), tests, jsonElements, new List<FileInfo>());
|
||||||
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
||||||
SaveIQSFile(reportFullPath, dateTime, descriptions, tests);
|
SaveIQSFile(reportFullPath, dateTime, descriptions, tests);
|
||||||
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
||||||
FileCopy(reportFullPath, dateTime, descriptions);
|
WriteFile(reportFullPath, dateTime, descriptions);
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -5,17 +5,75 @@ using Adaptation.Shared.Duplicator;
|
|||||||
using Adaptation.Shared.Methods;
|
using Adaptation.Shared.Methods;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
|
||||||
namespace Adaptation.FileHandlers.MoveMatchingFiles;
|
namespace Adaptation.FileHandlers.MoveMatchingFiles;
|
||||||
|
|
||||||
|
#nullable enable
|
||||||
|
|
||||||
public class FileRead : Shared.FileRead, IFileRead
|
public class FileRead : Shared.FileRead, IFileRead
|
||||||
{
|
{
|
||||||
|
|
||||||
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<string>> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) :
|
internal class PreWith
|
||||||
|
{
|
||||||
|
|
||||||
|
internal string ErrFile { get; private set; }
|
||||||
|
internal string CheckFile { get; private set; }
|
||||||
|
internal string MatchingFile { get; private set; }
|
||||||
|
internal string CheckDirectory { get; private set; }
|
||||||
|
internal string NoWaitDirectory { get; private set; }
|
||||||
|
|
||||||
|
internal PreWith(string checkDirectory,
|
||||||
|
string checkFile,
|
||||||
|
string errFile,
|
||||||
|
string matchingFile,
|
||||||
|
string noWaitDirectory)
|
||||||
|
{
|
||||||
|
ErrFile = errFile;
|
||||||
|
CheckFile = checkFile;
|
||||||
|
MatchingFile = matchingFile;
|
||||||
|
CheckDirectory = checkDirectory;
|
||||||
|
NoWaitDirectory = noWaitDirectory;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class Pre
|
||||||
|
{
|
||||||
|
|
||||||
|
internal string MatchingFile { get; private set; }
|
||||||
|
internal string CheckFile { get; private set; }
|
||||||
|
|
||||||
|
internal Pre(string matchingFile, string checkFile)
|
||||||
|
{
|
||||||
|
MatchingFile = matchingFile;
|
||||||
|
CheckFile = checkFile;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class Post
|
||||||
|
{
|
||||||
|
|
||||||
|
internal string ErrFile { get; private set; }
|
||||||
|
internal string CheckFile { get; private set; }
|
||||||
|
|
||||||
|
internal Post(string checkFile, string errFile)
|
||||||
|
{
|
||||||
|
ErrFile = errFile;
|
||||||
|
CheckFile = checkFile;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private readonly ProcessDataStandardFormatMapping _ProcessDataStandardFormatMapping;
|
||||||
|
|
||||||
|
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)
|
base(new Description(), false, smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null)
|
||||||
{
|
{
|
||||||
_MinFileLength = 10;
|
_MinFileLength = 10;
|
||||||
@ -27,6 +85,12 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
throw new Exception(cellInstanceConnectionName);
|
throw new Exception(cellInstanceConnectionName);
|
||||||
if (!_IsDuplicator)
|
if (!_IsDuplicator)
|
||||||
throw new Exception(cellInstanceConnectionName);
|
throw new Exception(cellInstanceConnectionName);
|
||||||
|
string processDataStandardFormatMappingOldColumnNames = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "Process.Data.Standard.Format.Mapping.Old.Column.Names");
|
||||||
|
string processDataStandardFormatMappingNewColumnNames = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "Process.Data.Standard.Format.Mapping.New.Column.Names");
|
||||||
|
string processDataStandardFormatMappingColumnIndices = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "Process.Data.Standard.Format.Mapping.Column.Indices");
|
||||||
|
_ProcessDataStandardFormatMapping = ProcessDataStandardFormatMapping.Get(processDataStandardFormatMappingOldColumnNames,
|
||||||
|
processDataStandardFormatMappingNewColumnNames,
|
||||||
|
processDataStandardFormatMappingColumnIndices);
|
||||||
}
|
}
|
||||||
|
|
||||||
void IFileRead.Move(Tuple<string, Test[], JsonElement[], List<FileInfo>> extractResults, Exception exception)
|
void IFileRead.Move(Tuple<string, Test[], JsonElement[], List<FileInfo>> extractResults, Exception exception)
|
||||||
@ -41,7 +105,8 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
Move(extractResults);
|
Move(extractResults);
|
||||||
}
|
}
|
||||||
|
|
||||||
void IFileRead.WaitForThread() => WaitForThread(thread: null, threadExceptions: null);
|
void IFileRead.WaitForThread() =>
|
||||||
|
WaitForThread(thread: null, threadExceptions: null);
|
||||||
|
|
||||||
string IFileRead.GetEventDescription()
|
string IFileRead.GetEventDescription()
|
||||||
{
|
{
|
||||||
@ -88,7 +153,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
DateTime dateTime = DateTime.Now;
|
DateTime dateTime = DateTime.Now;
|
||||||
results = GetExtractResult(reportFullPath, dateTime);
|
results = GetExtractResult(reportFullPath, dateTime);
|
||||||
if (results.Item3 is null)
|
if (results.Item3 is null)
|
||||||
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(results.Item1, Array.Empty<Test>(), JsonSerializer.Deserialize<JsonElement[]>("[]"), results.Item4);
|
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(results.Item1, Array.Empty<Test>(), JsonSerializer.Deserialize<JsonElement[]>("[]") ?? throw new Exception(), results.Item4);
|
||||||
if (results.Item3.Length > 0 && _IsEAFHosted)
|
if (results.Item3.Length > 0 && _IsEAFHosted)
|
||||||
WritePDSF(this, results.Item3);
|
WritePDSF(this, results.Item3);
|
||||||
UpdateLastTicksDuration(DateTime.Now.Ticks - dateTime.Ticks);
|
UpdateLastTicksDuration(DateTime.Now.Ticks - dateTime.Ticks);
|
||||||
@ -104,7 +169,33 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<string> GetSearchDirectories(int numberLength, string parentDirectory)
|
private static ReadOnlyCollection<PreWith> GetPreWithCollection(ReadOnlyCollection<Pre> preCollection)
|
||||||
|
{
|
||||||
|
List<PreWith> results = new();
|
||||||
|
string errFile;
|
||||||
|
PreWith preWith;
|
||||||
|
string? checkDirectory;
|
||||||
|
string noWaitDirectory;
|
||||||
|
foreach (Pre pre in preCollection)
|
||||||
|
{
|
||||||
|
errFile = string.Concat(pre.CheckFile, ".err");
|
||||||
|
checkDirectory = Path.GetDirectoryName(pre.CheckFile);
|
||||||
|
if (string.IsNullOrEmpty(checkDirectory))
|
||||||
|
continue;
|
||||||
|
if (!Directory.Exists(checkDirectory))
|
||||||
|
_ = Directory.CreateDirectory(checkDirectory);
|
||||||
|
noWaitDirectory = Path.Combine(checkDirectory, "NoWaitDirectory");
|
||||||
|
preWith = new(checkDirectory: checkDirectory,
|
||||||
|
checkFile: pre.CheckFile,
|
||||||
|
errFile: errFile,
|
||||||
|
matchingFile: pre.MatchingFile,
|
||||||
|
noWaitDirectory: noWaitDirectory);
|
||||||
|
results.Add(preWith);
|
||||||
|
}
|
||||||
|
return results.AsReadOnly();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static ReadOnlyCollection<string> GetSearchDirectories(int numberLength, string parentDirectory)
|
||||||
{
|
{
|
||||||
List<string> results = new();
|
List<string> results = new();
|
||||||
string[] directories = Directory.GetDirectories(parentDirectory, "*", SearchOption.TopDirectoryOnly);
|
string[] directories = Directory.GetDirectories(parentDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||||
@ -115,10 +206,138 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
results.Add(directory);
|
results.Add(directory);
|
||||||
}
|
}
|
||||||
results.Sort();
|
results.Sort();
|
||||||
|
return results.AsReadOnly();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void CreatePointerFile(int numberLength, string parentDirectory, ReadOnlyCollection<string> matchingFiles)
|
||||||
|
{
|
||||||
|
string checkFile;
|
||||||
|
string writeFile;
|
||||||
|
string? directoryName;
|
||||||
|
int parentDirectoryLength = parentDirectory.Length;
|
||||||
|
foreach (string matchingFile in matchingFiles)
|
||||||
|
{
|
||||||
|
directoryName = Path.GetDirectoryName(matchingFile);
|
||||||
|
if (directoryName is null)
|
||||||
|
continue;
|
||||||
|
checkFile = $"{matchingFile[0]}{directoryName.Substring(parentDirectoryLength + numberLength + 1)}";
|
||||||
|
writeFile = Path.Combine(parentDirectory, $"{directoryName.Substring(parentDirectory.Length + 1, numberLength)}.txt");
|
||||||
|
if (File.Exists(writeFile))
|
||||||
|
continue;
|
||||||
|
File.AppendAllLines(writeFile, new string[] { parentDirectory, matchingFile, directoryName, checkFile });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static ReadOnlyCollection<Pre> GetPreCollection(int numberLength, string parentDirectory, ReadOnlyCollection<string> matchingFiles)
|
||||||
|
{
|
||||||
|
List<Pre> results = new();
|
||||||
|
Pre pre;
|
||||||
|
string checkFile;
|
||||||
|
int parentDirectoryLength = parentDirectory.Length;
|
||||||
|
foreach (string matchingFile in matchingFiles)
|
||||||
|
{
|
||||||
|
checkFile = $"{matchingFile[0]}{matchingFile.Substring(parentDirectoryLength + numberLength + 1)}";
|
||||||
|
pre = new(matchingFile, checkFile);
|
||||||
|
results.Add(pre);
|
||||||
|
}
|
||||||
|
return results.AsReadOnly();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void MoveCollection(DateTime dateTime, ProcessDataStandardFormat processDataStandardFormat, ReadOnlyCollection<PreWith> preWithCollection)
|
||||||
|
{
|
||||||
|
ReadOnlyCollection<Post> postCollection = GetPostCollection(dateTime, processDataStandardFormat, preWithCollection);
|
||||||
|
if (postCollection.Count != 0)
|
||||||
|
{
|
||||||
|
Thread.Sleep(500);
|
||||||
|
StringBuilder stringBuilder = new();
|
||||||
|
foreach (Post post in postCollection)
|
||||||
|
{
|
||||||
|
if (File.Exists(post.ErrFile))
|
||||||
|
_ = stringBuilder.AppendLine(File.ReadAllText(post.ErrFile));
|
||||||
|
if (File.Exists(post.CheckFile))
|
||||||
|
_ = stringBuilder.AppendLine($"<{post.CheckFile}> was not consumed by the end!");
|
||||||
|
}
|
||||||
|
if (stringBuilder.Length > 0)
|
||||||
|
throw new Exception(stringBuilder.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private ReadOnlyCollection<Post> GetPostCollection(DateTime dateTime, ProcessDataStandardFormat processDataStandardFormat, ReadOnlyCollection<PreWith> preWithCollection)
|
||||||
|
{
|
||||||
|
List<Post> results = new();
|
||||||
|
Post post;
|
||||||
|
long preWait;
|
||||||
|
foreach (PreWith preWith in preWithCollection)
|
||||||
|
{
|
||||||
|
if (!_IsEAFHosted)
|
||||||
|
continue;
|
||||||
|
if (!_StaticRuns.TryGetValue(_Logistics.Sequence, out List<Shared.Metrology.WS.Results>? wsResults))
|
||||||
|
wsResults = null;
|
||||||
|
if (processDataStandardFormat.InputPDSF is null)
|
||||||
|
File.Move(preWith.MatchingFile, preWith.CheckFile);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ProcessDataStandardFormat.Write(preWith.CheckFile, processDataStandardFormat, wsResults);
|
||||||
|
File.Delete(preWith.MatchingFile);
|
||||||
|
}
|
||||||
|
if (Directory.Exists(preWith.NoWaitDirectory))
|
||||||
|
{
|
||||||
|
post = new(preWith.CheckFile, preWith.ErrFile);
|
||||||
|
results.Add(post);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (_FileConnectorConfiguration?.FileHandleWaitTime is null)
|
||||||
|
preWait = DateTime.Now.AddMilliseconds(1234).Ticks;
|
||||||
|
else
|
||||||
|
preWait = DateTime.Now.AddMilliseconds(_FileConnectorConfiguration.FileHandleWaitTime.Value).Ticks;
|
||||||
|
for (short i = 0; i < short.MaxValue; i++)
|
||||||
|
{
|
||||||
|
if (DateTime.Now.Ticks > preWait)
|
||||||
|
break;
|
||||||
|
Thread.Sleep(500);
|
||||||
|
}
|
||||||
|
for (int i = 0; i < int.MaxValue; i++)
|
||||||
|
{
|
||||||
|
if (File.Exists(preWith.ErrFile))
|
||||||
|
throw new Exception(File.ReadAllText(preWith.ErrFile));
|
||||||
|
if (!File.Exists(preWith.CheckFile))
|
||||||
|
break;
|
||||||
|
if (new TimeSpan(DateTime.Now.Ticks - dateTime.Ticks).TotalSeconds > _BreakAfterSeconds)
|
||||||
|
throw new Exception($"Not all files were consumed after {_BreakAfterSeconds} second(s)!");
|
||||||
|
Thread.Sleep(500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return results.AsReadOnly();
|
||||||
|
}
|
||||||
|
|
||||||
|
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>());
|
||||||
|
ProcessDataStandardFormat processDataStandardFormat = ProcessDataStandardFormat.GetProcessDataStandardFormat(reportFullPath, _ProcessDataStandardFormatMapping);
|
||||||
|
_Logistics = new Logistics(reportFullPath, processDataStandardFormat);
|
||||||
|
if (!_IsEAFHosted)
|
||||||
|
ProcessDataStandardFormat.Write("../../.pdsf", processDataStandardFormat, wsResults: null);
|
||||||
|
SetFileParameterLotIDToLogisticsMID();
|
||||||
|
int numberLength = 2;
|
||||||
|
long ticks = dateTime.Ticks;
|
||||||
|
string parentParentDirectory = GetParentParent(reportFullPath);
|
||||||
|
ReadOnlyCollection<string> searchDirectories = GetSearchDirectories(numberLength, parentParentDirectory);
|
||||||
|
ReadOnlyCollection<string> matchingFiles = GetMatchingFiles(ticks, reportFullPath, searchDirectories);
|
||||||
|
if (matchingFiles.Count != searchDirectories.Count)
|
||||||
|
throw new Exception($"Didn't find all files after {_BreakAfterSeconds} second(s)!");
|
||||||
|
if (_IsEAFHosted)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{ CreatePointerFile(numberLength, parentParentDirectory, matchingFiles); }
|
||||||
|
catch (Exception) { }
|
||||||
|
}
|
||||||
|
ReadOnlyCollection<Pre> preCollection = GetPreCollection(numberLength, parentParentDirectory, matchingFiles);
|
||||||
|
ReadOnlyCollection<PreWith> preWithCollection = GetPreWithCollection(preCollection);
|
||||||
|
MoveCollection(dateTime, processDataStandardFormat, preWithCollection);
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<string> GetMatchingFiles(long ticks, string reportFullPath, List<string> searchDirectories)
|
private ReadOnlyCollection<string> GetMatchingFiles(long ticks, string reportFullPath, ReadOnlyCollection<string> searchDirectories)
|
||||||
{
|
{
|
||||||
List<string> results = new();
|
List<string> results = new();
|
||||||
string[] found;
|
string[] found;
|
||||||
@ -137,129 +356,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return results;
|
return results.AsReadOnly();
|
||||||
}
|
|
||||||
|
|
||||||
private static List<(string matchingFile, string checkFile)> GetCollection(int numberLength, string parentDirectory, List<string> matchingFiles)
|
|
||||||
{
|
|
||||||
List<(string matchingFile, string checkFile)> results = new();
|
|
||||||
string checkFile;
|
|
||||||
int parentDirectoryLength = parentDirectory.Length;
|
|
||||||
foreach (string matchingFile in matchingFiles)
|
|
||||||
{
|
|
||||||
checkFile = $"{matchingFile[0]}{matchingFile.Substring(parentDirectoryLength + numberLength + 1)}";
|
|
||||||
results.Add(new(matchingFile, checkFile));
|
|
||||||
}
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static List<(string, string, string, string, string)> GetCollection(List<(string matchingFile, string checkFile)> collection)
|
|
||||||
{
|
|
||||||
List<(string, string, string, string, string)> results = new();
|
|
||||||
string errFile;
|
|
||||||
string checkDirectory;
|
|
||||||
string noWaitDirectory;
|
|
||||||
foreach ((string matchingFile, string checkFile) in collection)
|
|
||||||
{
|
|
||||||
errFile = string.Concat(checkFile, ".err");
|
|
||||||
checkDirectory = Path.GetDirectoryName(checkFile);
|
|
||||||
if (!Directory.Exists(checkDirectory))
|
|
||||||
_ = Directory.CreateDirectory(checkDirectory);
|
|
||||||
noWaitDirectory = Path.Combine(checkDirectory, "NoWaitDirectory");
|
|
||||||
results.Add(new(matchingFile, checkFile, errFile, checkDirectory, noWaitDirectory));
|
|
||||||
}
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void MoveCollection(DateTime dateTime, List<(string matchingFile, string checkFile)> collection)
|
|
||||||
{
|
|
||||||
long preWait;
|
|
||||||
List<(string checkFile, string errFile)> postCollection = new();
|
|
||||||
foreach ((string matchingFile, string checkFile, string errFile, string checkDirectory, string noWaitDirectory) in GetCollection(collection))
|
|
||||||
{
|
|
||||||
File.Move(matchingFile, checkFile);
|
|
||||||
if (Directory.Exists(noWaitDirectory))
|
|
||||||
{
|
|
||||||
postCollection.Add(new(checkFile, errFile));
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (_FileConnectorConfiguration?.FileHandleWaitTime is null)
|
|
||||||
preWait = DateTime.Now.AddMilliseconds(1234).Ticks;
|
|
||||||
else
|
|
||||||
preWait = DateTime.Now.AddMilliseconds(_FileConnectorConfiguration.FileHandleWaitTime.Value).Ticks;
|
|
||||||
for (short i = 0; i < short.MaxValue; i++)
|
|
||||||
{
|
|
||||||
if (DateTime.Now.Ticks > preWait)
|
|
||||||
break;
|
|
||||||
Thread.Sleep(500);
|
|
||||||
}
|
|
||||||
for (int i = 0; i < int.MaxValue; i++)
|
|
||||||
{
|
|
||||||
if (File.Exists(errFile))
|
|
||||||
throw new Exception(File.ReadAllText(errFile));
|
|
||||||
if (!File.Exists(checkFile))
|
|
||||||
break;
|
|
||||||
if (new TimeSpan(DateTime.Now.Ticks - dateTime.Ticks).TotalSeconds > _BreakAfterSeconds)
|
|
||||||
throw new Exception($"Not all files were consumed after {_BreakAfterSeconds} second(s)!");
|
|
||||||
Thread.Sleep(500);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (postCollection.Count != 0)
|
|
||||||
{
|
|
||||||
Thread.Sleep(500);
|
|
||||||
StringBuilder stringBuilder = new();
|
|
||||||
foreach ((string checkFile, string errFile) in postCollection)
|
|
||||||
{
|
|
||||||
if (File.Exists(errFile))
|
|
||||||
_ = stringBuilder.AppendLine(File.ReadAllText(errFile));
|
|
||||||
if (File.Exists(checkFile))
|
|
||||||
_ = stringBuilder.AppendLine($"<{checkFile}> was not consumed by the end!");
|
|
||||||
}
|
|
||||||
if (stringBuilder.Length > 0)
|
|
||||||
throw new Exception(stringBuilder.ToString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void CreatePointerFile(int numberLength, string parentDirectory, List<string> matchingFiles)
|
|
||||||
{
|
|
||||||
#nullable enable
|
|
||||||
string checkFile;
|
|
||||||
string writeFile;
|
|
||||||
string? directoryName;
|
|
||||||
int parentDirectoryLength = parentDirectory.Length;
|
|
||||||
foreach (string matchingFile in matchingFiles)
|
|
||||||
{
|
|
||||||
directoryName = Path.GetDirectoryName(matchingFile);
|
|
||||||
if (directoryName is null)
|
|
||||||
continue;
|
|
||||||
checkFile = $"{matchingFile[0]}{directoryName.Substring(parentDirectoryLength + numberLength + 1)}";
|
|
||||||
writeFile = Path.Combine(parentDirectory, $"{directoryName.Substring(parentDirectory.Length + 1, numberLength)}.txt");
|
|
||||||
if (File.Exists(writeFile))
|
|
||||||
continue;
|
|
||||||
File.AppendAllLines(writeFile, new string[] { parentDirectory, matchingFile, directoryName, checkFile });
|
|
||||||
}
|
|
||||||
#nullable disable
|
|
||||||
}
|
|
||||||
|
|
||||||
private Tuple<string, Test[], JsonElement[], List<FileInfo>> GetExtractResult(string reportFullPath, DateTime dateTime)
|
|
||||||
{
|
|
||||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> results = new(string.Empty, null, null, new List<FileInfo>());
|
|
||||||
Tuple<string, string[], string[]> pdsf = ProcessDataStandardFormat.GetLogisticsColumnsAndBody(reportFullPath);
|
|
||||||
_Logistics = new Logistics(reportFullPath, pdsf.Item1);
|
|
||||||
SetFileParameterLotIDToLogisticsMID();
|
|
||||||
int numberLength = 2;
|
|
||||||
long ticks = dateTime.Ticks;
|
|
||||||
string parentParentDirectory = GetParentParent(reportFullPath);
|
|
||||||
List<string> searchDirectories = GetSearchDirectories(numberLength, parentParentDirectory);
|
|
||||||
List<string> matchingFiles = GetMatchingFiles(ticks, reportFullPath, searchDirectories);
|
|
||||||
if (matchingFiles.Count != searchDirectories.Count)
|
|
||||||
throw new Exception($"Didn't find all files after {_BreakAfterSeconds} second(s)!");
|
|
||||||
try
|
|
||||||
{ CreatePointerFile(numberLength, parentParentDirectory, matchingFiles); }
|
|
||||||
catch (Exception) { }
|
|
||||||
List<(string matchingFile, string checkFile)> collection = GetCollection(numberLength, parentParentDirectory, matchingFiles);
|
|
||||||
MoveCollection(dateTime, collection);
|
|
||||||
return results;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -6,11 +6,9 @@ using Adaptation.Shared.Methods;
|
|||||||
using Adaptation.Shared.Metrology;
|
using Adaptation.Shared.Metrology;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Collections.ObjectModel;
|
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
|
|
||||||
namespace Adaptation.FileHandlers.OpenInsight;
|
namespace Adaptation.FileHandlers.OpenInsight;
|
||||||
@ -18,29 +16,23 @@ namespace Adaptation.FileHandlers.OpenInsight;
|
|||||||
public class FileRead : Shared.FileRead, IFileRead
|
public class FileRead : Shared.FileRead, IFileRead
|
||||||
{
|
{
|
||||||
|
|
||||||
private int _LastIndex;
|
|
||||||
private readonly string _IqsConnectionString;
|
private readonly string _IqsConnectionString;
|
||||||
private readonly string _OpenInsightFilePattern;
|
|
||||||
private readonly string _OpenInsightApiECDirectory;
|
private readonly string _OpenInsightApiECDirectory;
|
||||||
private readonly ReadOnlyCollection<ModelObjectParameterDefinition> _IQSCopyCollection;
|
|
||||||
|
|
||||||
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<string>> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) :
|
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<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)
|
base(new Description(), false, smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null)
|
||||||
{
|
{
|
||||||
_LastIndex = -1;
|
|
||||||
_MinFileLength = 10;
|
_MinFileLength = 10;
|
||||||
_NullData = string.Empty;
|
|
||||||
_Logistics = new(this);
|
_Logistics = new(this);
|
||||||
|
_NullData = string.Empty;
|
||||||
if (_FileParameter is null)
|
if (_FileParameter is null)
|
||||||
throw new Exception(cellInstanceConnectionName);
|
throw new Exception(cellInstanceConnectionName);
|
||||||
if (_ModelObjectParameterDefinitions is null)
|
if (_ModelObjectParameterDefinitions is null)
|
||||||
throw new Exception(cellInstanceConnectionName);
|
throw new Exception(cellInstanceConnectionName);
|
||||||
if (!_IsDuplicator)
|
if (!_IsDuplicator)
|
||||||
throw new Exception(cellInstanceConnectionName);
|
throw new Exception(cellInstanceConnectionName);
|
||||||
_IQSCopyCollection = new(GetProperties(cellInstanceConnectionName, modelObjectParameters, "IQS.Copy."));
|
|
||||||
_IqsConnectionString = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "IQS.ConnectionString");
|
_IqsConnectionString = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "IQS.ConnectionString");
|
||||||
_OpenInsightApiECDirectory = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "API.EC.Directory");
|
_OpenInsightApiECDirectory = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "API.EC.Directory");
|
||||||
_OpenInsightFilePattern = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "OpenInsight.FilePattern");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void IFileRead.Move(Tuple<string, Test[], JsonElement[], List<FileInfo>> extractResults, Exception exception)
|
void IFileRead.Move(Tuple<string, Test[], JsonElement[], List<FileInfo>> extractResults, Exception exception)
|
||||||
@ -118,194 +110,61 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static string GetLines(Logistics logistics, List<pcl.Description> descriptions)
|
private void SaveOpenInsightFile(string reportFullPath, DateTime dateTime, List<pcl.Description> descriptions, Test[] tests)
|
||||||
{
|
|
||||||
StringBuilder result = new();
|
|
||||||
pcl.Description x = descriptions[0];
|
|
||||||
bool ganPPTST = x.Recipe.Contains("GAN_PPTST");
|
|
||||||
if (ganPPTST)
|
|
||||||
{
|
|
||||||
string slot;
|
|
||||||
string reactor;
|
|
||||||
const int eight = 8;
|
|
||||||
DateTime dateTime = DateTime.Parse(x.Date);
|
|
||||||
string lot = x.Lot.ToLower().Replace("69-", string.Empty).Replace("71-", string.Empty).Replace("-", string.Empty);
|
|
||||||
if (string.IsNullOrEmpty(x.Lot) || x.Lot.Length < 2)
|
|
||||||
reactor = "R";
|
|
||||||
else
|
|
||||||
reactor = string.Concat("R", x.Lot.Substring(0, 2));
|
|
||||||
_ = result.Append(nameof(x.Date)).Append(';').
|
|
||||||
Append("Part").Append(';').
|
|
||||||
Append(nameof(x.Reactor)).Append(';').
|
|
||||||
Append("Lot").Append(';').
|
|
||||||
Append(nameof(pcl.Detail.Slot)).Append(';').
|
|
||||||
Append(nameof(pcl.Detail.Bin1)).Append(';').
|
|
||||||
Append(nameof(pcl.Detail.Bin2)).Append(';').
|
|
||||||
Append(nameof(pcl.Detail.Bin3)).Append(';').
|
|
||||||
Append(nameof(pcl.Detail.Bin4)).Append(';').
|
|
||||||
Append(nameof(pcl.Detail.Bin5)).Append(';').
|
|
||||||
Append(nameof(pcl.Detail.Bin6)).Append(';').
|
|
||||||
Append("Bin9").
|
|
||||||
AppendLine();
|
|
||||||
foreach (pcl.Description description in descriptions)
|
|
||||||
{
|
|
||||||
slot = description.Slot.Replace("*", string.Empty);
|
|
||||||
_ = result.Append('!').Append(dateTime.ToString("MM/dd/yyyy HH:mm:ss")).Append(';').
|
|
||||||
Append("Particle Adder;").
|
|
||||||
Append(reactor).Append(';').
|
|
||||||
Append(lot).Append(';').
|
|
||||||
Append(slot).Append(';').
|
|
||||||
Append(description.Bin1).Append(';').
|
|
||||||
Append(description.Bin2).Append(';').
|
|
||||||
Append(description.Bin3).Append(';').
|
|
||||||
Append(description.Bin4).Append(';').
|
|
||||||
Append(description.Bin5).Append(';').
|
|
||||||
Append(description.Bin6).Append(';').
|
|
||||||
Append(description.AreaCount).
|
|
||||||
AppendLine();
|
|
||||||
}
|
|
||||||
if (descriptions.Count != eight)
|
|
||||||
{
|
|
||||||
string negativeTenThousand = "-10000";
|
|
||||||
for (int i = descriptions.Count; i < eight; i++)
|
|
||||||
{
|
|
||||||
_ = result.Append('!').Append(dateTime.ToString("MM/dd/yyyy HH:mm:ss")).Append(';').
|
|
||||||
Append("Particle Adder;").
|
|
||||||
Append(reactor).Append(';').
|
|
||||||
Append(lot).Append(';').
|
|
||||||
Append(negativeTenThousand).Append(';').
|
|
||||||
Append(negativeTenThousand).Append(';').
|
|
||||||
Append(negativeTenThousand).Append(';').
|
|
||||||
Append(negativeTenThousand).Append(';').
|
|
||||||
Append(negativeTenThousand).Append(';').
|
|
||||||
Append(negativeTenThousand).Append(';').
|
|
||||||
Append(negativeTenThousand).Append(';').
|
|
||||||
Append(negativeTenThousand).
|
|
||||||
AppendLine();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (result.ToString().Split('\n').Length != (eight + 2))
|
|
||||||
throw new Exception(string.Concat("Must have ", eight, " samples"));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
char del = '\t';
|
|
||||||
_ = result.Append(x.AreaCountAvg).Append(del). // 001 - AreaCountAvg
|
|
||||||
Append(x.AreaCountMax).Append(del). // 002 - AreaCountMax
|
|
||||||
Append(x.AreaCountMin).Append(del). // 003 - AreaCountMin
|
|
||||||
Append(x.AreaCountStdDev).Append(del). // 004 - AreaCountStdDev
|
|
||||||
Append(x.AreaTotalAvg).Append(del). // 005 - AreaTotalAvg
|
|
||||||
Append(x.AreaTotalMax).Append(del). // 006 - AreaTotalMax
|
|
||||||
Append(x.AreaTotalMin).Append(del). // 007 - AreaTotalMin
|
|
||||||
Append(x.AreaTotalStdDev).Append(del). // 008 - AreaTotalStdDev
|
|
||||||
Append(x.Date).Append(del). // 009 -
|
|
||||||
Append(x.HazeAverageAvg).Append(del). // 010 - Haze Average
|
|
||||||
Append(x.HazeAverageMax).Append(del). // 011 -
|
|
||||||
Append(x.HazeAverageMin).Append(del). // 012 -
|
|
||||||
Append(x.HazeAverageStdDev).Append(del). // 013 -
|
|
||||||
Append(x.HazeRegionAvg).Append(del). // 014 -
|
|
||||||
Append(x.HazeRegionMax).Append(del). // 015 -
|
|
||||||
Append(x.HazeRegionMin).Append(del). // 016 -
|
|
||||||
Append(x.HazeRegionStdDev).Append(del). // 017 -
|
|
||||||
Append(x.Lot).Append(del). // 018 -
|
|
||||||
Append(x.LPDCM2Avg).Append(del). // 019 -
|
|
||||||
Append(x.LPDCM2Max).Append(del). // 020 -
|
|
||||||
Append(x.LPDCM2Min).Append(del). // 021 -
|
|
||||||
Append(x.LPDCM2StdDev).Append(del). // 022 -
|
|
||||||
Append(x.LPDCountAvg).Append(del). // 023 -
|
|
||||||
Append(x.LPDCountMax).Append(del). // 024 -
|
|
||||||
Append(x.LPDCM2Min).Append(del). // 025 -
|
|
||||||
Append(x.LPDCountStdDev).Append(del). // 026 -
|
|
||||||
Append(x.Employee).Append(del). // 027 -
|
|
||||||
Append(x.RDS).Append(del). // 028 - Lot
|
|
||||||
Append(x.Reactor).Append(del). // 029 - Process
|
|
||||||
Append(x.Recipe.Replace(";", string.Empty)).Append(del). // 030 - Part
|
|
||||||
Append(x.ScratchCountAvg).Append(del). // 031 - Scratch Count
|
|
||||||
Append(x.ScratchCountMax).Append(del). // 032 -
|
|
||||||
Append(x.ScratchCountMin).Append(del). // 033 -
|
|
||||||
Append(x.ScratchTotalStdDev).Append(del). // 034 -
|
|
||||||
Append(x.ScratchTotalAvg).Append(del). // 035 - Scratch Length
|
|
||||||
Append(x.ScratchTotalMax).Append(del). // 036 -
|
|
||||||
Append(x.ScratchTotalMin).Append(del). // 037 -
|
|
||||||
Append(x.ScratchTotalStdDev).Append(del). // 038 -
|
|
||||||
Append(x.SumOfDefectsAvg).Append(del). // 039 - Average Sum of Defects
|
|
||||||
Append(x.SumOfDefectsMax).Append(del). // 040 - Max Sum of Defects
|
|
||||||
Append(x.SumOfDefectsMin).Append(del). // 041 - Min Sum of Defects
|
|
||||||
Append(x.SumOfDefectsStdDev).Append(del). // 042 - SumOfDefectsStdDev
|
|
||||||
Append(logistics.MesEntity).Append(del). // 043 -
|
|
||||||
AppendLine();
|
|
||||||
}
|
|
||||||
return result.ToString();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SaveOpenInsightFile(string reportFullPath, DateTime dateTime, string logistics, List<pcl.Description> descriptions, Test[] tests)
|
|
||||||
{
|
{
|
||||||
|
string duplicateFile;
|
||||||
bool isDummyRun = false;
|
bool isDummyRun = false;
|
||||||
List<(Shared.Properties.IScopeInfo, string)> collection = new();
|
List<(Shared.Properties.IScopeInfo, string)> collection = new();
|
||||||
string duplicateDirectory = Path.Combine(_FileConnectorConfiguration.SourceFileLocation, _CellInstanceName);
|
string duplicateDirectory = Path.Combine(_FileConnectorConfiguration.SourceFileLocation, _CellInstanceName);
|
||||||
if (!Directory.Exists(duplicateDirectory))
|
if (!Directory.Exists(duplicateDirectory))
|
||||||
_ = Directory.CreateDirectory(duplicateDirectory);
|
_ = Directory.CreateDirectory(duplicateDirectory);
|
||||||
string successDirectory = _FileConnectorConfiguration.AlternateTargetFolder;
|
string successDirectory = _FileConnectorConfiguration.AlternateTargetFolder;
|
||||||
if (!Directory.Exists(Path.Combine(duplicateDirectory, "1")))
|
if (descriptions.Count == 0 || tests.Length == 0)
|
||||||
|
duplicateFile = Path.Combine(duplicateDirectory, Path.GetFileName(reportFullPath));
|
||||||
|
else
|
||||||
{
|
{
|
||||||
string parentParent = GetParentParent(_FileConnectorConfiguration.SourceFileLocation);
|
long? subgroupId;
|
||||||
if (parentParent.Contains(_CellInstanceName))
|
string fileName = Path.GetFileName(reportFullPath);
|
||||||
parentParent = Path.GetDirectoryName(parentParent);
|
long breakAfter = dateTime.AddSeconds(_BreakAfterSeconds).Ticks;
|
||||||
duplicateDirectory = Path.Combine(parentParent, "Data");
|
long preWait = _FileConnectorConfiguration?.FileHandleWaitTime is null ? dateTime.AddMilliseconds(1234).Ticks : dateTime.AddMilliseconds(_FileConnectorConfiguration.FileHandleWaitTime.Value).Ticks;
|
||||||
if (!Directory.Exists(duplicateDirectory))
|
if (string.IsNullOrEmpty(descriptions[0].Reactor) || string.IsNullOrEmpty(descriptions[0].PSN))
|
||||||
_ = Directory.CreateDirectory(duplicateDirectory);
|
subgroupId = null;
|
||||||
}
|
else
|
||||||
string duplicateFile = Path.Combine(duplicateDirectory, Path.GetFileName(reportFullPath));
|
(subgroupId, int? _, string _) = FromIQS.GetCommandText(_IqsConnectionString, _Logistics, descriptions[0], breakAfter, preWait);
|
||||||
if (descriptions.Count != 0 && tests.Length != 0)
|
if (_StaticRuns.TryGetValue(_Logistics.Sequence, out List<WS.Results> wsResults))
|
||||||
{
|
|
||||||
string lines = GetLines(_Logistics, descriptions);
|
|
||||||
if (!string.IsNullOrEmpty(lines))
|
|
||||||
{
|
{
|
||||||
long? subGroupId;
|
if (wsResults is null || wsResults.Count != 1)
|
||||||
_LastIndex += 1;
|
throw new NullReferenceException($"{nameof(wsResults)} {wsResults?.Count} != 1 {_Logistics.Sequence}!");
|
||||||
if (_LastIndex >= _IQSCopyCollection.Count)
|
lock (_StaticRuns)
|
||||||
_LastIndex = 0;
|
wsResults[0] = WS.Results.Get(wsResults[0], subgroupId);
|
||||||
long breakAfter = dateTime.AddSeconds(_BreakAfterSeconds).Ticks;
|
|
||||||
ModelObjectParameterDefinition modelObjectParameterDefinition = _IQSCopyCollection[_LastIndex];
|
|
||||||
long preWait = _FileConnectorConfiguration?.FileHandleWaitTime is null ? dateTime.AddMilliseconds(1234).Ticks : dateTime.AddMilliseconds(_FileConnectorConfiguration.FileHandleWaitTime.Value).Ticks;
|
|
||||||
if (string.IsNullOrEmpty(descriptions[0].Reactor) || string.IsNullOrEmpty(descriptions[0].PSN))
|
|
||||||
subGroupId = null;
|
|
||||||
else
|
|
||||||
(subGroupId, int? _, string _) = FromIQS.GetCommandText(_IqsConnectionString, _Logistics, descriptions[0], breakAfter, preWait);
|
|
||||||
if (subGroupId is null)
|
|
||||||
collection.Add(new(new ScopeInfo(tests[0], _OpenInsightFilePattern), lines));
|
|
||||||
else
|
|
||||||
collection.Add(new(new ScopeInfo(tests[0], $"{subGroupId.Value} {_OpenInsightFilePattern}"), lines));
|
|
||||||
string weekOfYear = _Calendar.GetWeekOfYear(_Logistics.DateTimeFromSequence, CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString("00");
|
|
||||||
FromIQS.Save(_OpenInsightApiECDirectory, _Logistics, reportFullPath, logistics, descriptions.First(), lines, subGroupId, weekOfYear);
|
|
||||||
try
|
|
||||||
{ FromIQS.SaveCopy(_FileConnectorConfiguration.SourceFileLocation, _IqsConnectionString, modelObjectParameterDefinition.Name, modelObjectParameterDefinition.Value.Split('|')); }
|
|
||||||
catch (Exception exception)
|
|
||||||
{
|
|
||||||
string subject = string.Concat("Exception:", _CellInstanceConnectionName);
|
|
||||||
string body = string.Concat(exception.Message, Environment.NewLine, Environment.NewLine, exception.StackTrace);
|
|
||||||
try
|
|
||||||
{ _SMTP.SendHighPriorityEmailMessage(subject, body); }
|
|
||||||
catch (Exception) { }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
if (!fileName.StartsWith("Viewer"))
|
||||||
|
duplicateFile = Path.Combine(duplicateDirectory, $"{subgroupId} {fileName}".TrimStart());
|
||||||
|
else
|
||||||
|
duplicateFile = Path.Combine(duplicateDirectory, $"{$"Viewer {subgroupId}".TrimEnd()} {fileName.Replace("Viewer", string.Empty)}");
|
||||||
|
string weekOfYear = _Calendar.GetWeekOfYear(_Logistics.DateTimeFromSequence, CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString("00");
|
||||||
|
FromIQS.Save(_OpenInsightApiECDirectory, _Logistics, reportFullPath, descriptions.First(), subgroupId, weekOfYear);
|
||||||
}
|
}
|
||||||
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
||||||
|
{
|
||||||
|
File.Copy(reportFullPath, duplicateFile, overwrite: true);
|
||||||
WaitForFileConsumption(dateTime, descriptions, isDummyRun, successDirectory, duplicateDirectory, collection, duplicateFile);
|
WaitForFileConsumption(dateTime, descriptions, isDummyRun, successDirectory, duplicateDirectory, collection, duplicateFile);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
||||||
Tuple<string, string[], string[]> pdsf = ProcessDataStandardFormat.GetLogisticsColumnsAndBody(reportFullPath);
|
string[] lines = File.ReadAllLines(reportFullPath);
|
||||||
_Logistics = new Logistics(reportFullPath, pdsf.Item1);
|
ProcessDataStandardFormat processDataStandardFormat = ProcessDataStandardFormat.GetProcessDataStandardFormat(reportFullPath, lines);
|
||||||
|
_Logistics = new Logistics(reportFullPath, processDataStandardFormat);
|
||||||
SetFileParameterLotIDToLogisticsMID();
|
SetFileParameterLotIDToLogisticsMID();
|
||||||
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(pdsf);
|
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(reportFullPath, lines, processDataStandardFormat);
|
||||||
List<pcl.Description> descriptions = pcl.ProcessData.GetDescriptions(jsonElements);
|
List<pcl.Description> descriptions = pcl.ProcessData.GetDescriptions(jsonElements);
|
||||||
Test[] tests = (from l in descriptions select (Test)l.Test).ToArray();
|
Test[] tests = (from l in descriptions select (Test)l.Test).ToArray();
|
||||||
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
||||||
SaveOpenInsightFile(reportFullPath, dateTime, pdsf.Item1, descriptions, tests);
|
SaveOpenInsightFile(reportFullPath, dateTime, descriptions, tests);
|
||||||
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(pdsf.Item1, tests, jsonElements, new List<FileInfo>());
|
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics), tests, jsonElements, new List<FileInfo>());
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
using Adaptation.Shared;
|
using Adaptation.Shared;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Data.SqlClient;
|
using System.Data.SqlClient;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
@ -16,65 +17,174 @@ public class FromIQS
|
|||||||
|
|
||||||
#nullable enable
|
#nullable enable
|
||||||
|
|
||||||
|
private static string GetCommandText(DateTime dateTime)
|
||||||
|
{ // cSpell:disable
|
||||||
|
List<string> results = new();
|
||||||
|
TimeSpan timeSpan = new(dateTime.ToUniversalTime().AddDays(-1).Ticks - new DateTime(1970, 01, 01).Ticks);
|
||||||
|
long infinityQS = (long)Math.Floor(timeSpan.TotalSeconds);
|
||||||
|
results.Add(" select count_se_sgtm CountSeSgtm, ");
|
||||||
|
results.Add(" dateadd(HH, -7, (dateadd(SS, convert(bigint, max_se_sgtm), '19700101'))) DateTime, ");
|
||||||
|
results.Add(" max_max_se_test MaxMaxSeTest, ");
|
||||||
|
results.Add(" ( ");
|
||||||
|
results.Add(" select td.f_name ");
|
||||||
|
results.Add(" from [SPCEPIWORLD].[dbo].[TEST_DAT] td ");
|
||||||
|
results.Add(" where td.f_test = max_max_se_test ");
|
||||||
|
results.Add(" ) MaxMaxSeTestName, ");
|
||||||
|
results.Add(" max_max_se_val MaxMaxSeVal, ");
|
||||||
|
results.Add(" max_se_lot MaxSeLot, ");
|
||||||
|
results.Add(" ( ");
|
||||||
|
results.Add(" select pl.f_name ");
|
||||||
|
results.Add(" from [SPCEPIWORLD].[dbo].[PART_LOT] pl ");
|
||||||
|
results.Add(" where max_se_lot = pl.f_lot ");
|
||||||
|
results.Add(" ) MaxSeLotName, ");
|
||||||
|
results.Add(" max_se_part MaxSePart, ");
|
||||||
|
results.Add(" ( ");
|
||||||
|
results.Add(" select rd.f_name ");
|
||||||
|
results.Add(" from [SPCEPIWORLD].[dbo].[PART_DAT] rd ");
|
||||||
|
results.Add(" where max_se_part = rd.f_part ");
|
||||||
|
results.Add(" ) MaxSePartName, ");
|
||||||
|
results.Add(" max_se_prcs MaxSePrcs, ");
|
||||||
|
results.Add(" ( ");
|
||||||
|
results.Add(" select rd.f_name ");
|
||||||
|
results.Add(" from [SPCEPIWORLD].[dbo].[PRCS_DAT] rd ");
|
||||||
|
results.Add(" where max_se_prcs = rd.f_prcs ");
|
||||||
|
results.Add(" ) MaxSePrcsName, ");
|
||||||
|
results.Add(" max_se_sgrp MaxSeSgrp, ");
|
||||||
|
results.Add(" min_min_se_test MinMinSeTest, ");
|
||||||
|
results.Add(" ( ");
|
||||||
|
results.Add(" select td.f_name ");
|
||||||
|
results.Add(" from [SPCEPIWORLD].[dbo].[TEST_DAT] td ");
|
||||||
|
results.Add(" where td.f_test = min_min_se_test ");
|
||||||
|
results.Add(" ) MinMinSeTestName, ");
|
||||||
|
results.Add(" min_min_se_val MinMinSeVal, ");
|
||||||
|
results.Add(" min_se_sgrp MinSeSgrp ");
|
||||||
|
results.Add(" from ( ");
|
||||||
|
results.Add(" select count_se_sgtm, ");
|
||||||
|
results.Add(" max_se_lot, ");
|
||||||
|
results.Add(" max_se_part, ");
|
||||||
|
results.Add(" max_se_prcs, ");
|
||||||
|
results.Add(" max_se_sgrp, ");
|
||||||
|
results.Add(" max_se_sgtm, ");
|
||||||
|
results.Add(" min_se_sgrp, ");
|
||||||
|
results.Add(" max(max_se_val) max_max_se_val, ");
|
||||||
|
results.Add(" min(min_se_val) min_min_se_val, ");
|
||||||
|
results.Add(" max(max_se_test) max_max_se_test, ");
|
||||||
|
results.Add(" min(min_se_test) min_min_se_test ");
|
||||||
|
results.Add(" from ( ");
|
||||||
|
results.Add(" select count_se_sgtm, ");
|
||||||
|
results.Add(" max_se_lot, ");
|
||||||
|
results.Add(" max_se_val, ");
|
||||||
|
results.Add(" min_se_val, ");
|
||||||
|
results.Add(" max_se_part, ");
|
||||||
|
results.Add(" max_se_prcs, ");
|
||||||
|
results.Add(" max_se_sgrp, ");
|
||||||
|
results.Add(" max_se_sgtm, ");
|
||||||
|
results.Add(" max_se_test, ");
|
||||||
|
results.Add(" min_se_sgrp, ");
|
||||||
|
results.Add(" min_se_test ");
|
||||||
|
results.Add(" from ( ");
|
||||||
|
results.Add(" select ");
|
||||||
|
results.Add(" max(se.f_lot) max_se_lot, ");
|
||||||
|
results.Add(" max(se.f_val) max_se_val, ");
|
||||||
|
results.Add(" min(se.f_lot) min_se_lot, ");
|
||||||
|
results.Add(" min(se.f_val) min_se_val, ");
|
||||||
|
results.Add(" max(se.f_part) max_se_part, ");
|
||||||
|
results.Add(" max(se.f_prcs) max_se_prcs, ");
|
||||||
|
results.Add(" max(se.f_sgrp) max_se_sgrp, ");
|
||||||
|
results.Add(" max(se.f_sgtm) max_se_sgtm, ");
|
||||||
|
results.Add(" max(se.f_test) max_se_test, ");
|
||||||
|
results.Add(" min(se.f_part) min_se_part, ");
|
||||||
|
results.Add(" min(se.f_prcs) min_se_prcs, ");
|
||||||
|
results.Add(" min(se.f_sgrp) min_se_sgrp, ");
|
||||||
|
results.Add(" min(se.f_sgtm) min_se_sgtm, ");
|
||||||
|
results.Add(" min(se.f_test) min_se_test, ");
|
||||||
|
results.Add(" count(se.f_sgtm) count_se_sgtm ");
|
||||||
|
results.Add(" from [spcepiworld].[dbo].[sgrp_ext] se ");
|
||||||
|
results.Add(" where se.f_tsno = 1 ");
|
||||||
|
results.Add(" and se.f_flag = 0 ");
|
||||||
|
results.Add($" and se.f_sgtm > {infinityQS} ");
|
||||||
|
results.Add(" group by se.f_sgtm, se.f_prcs, se.f_lot, se.f_test, se.f_val ");
|
||||||
|
results.Add(" ) qa ");
|
||||||
|
results.Add(" where qa.count_se_sgtm > 1 ");
|
||||||
|
results.Add(" and min_se_lot = max_se_lot ");
|
||||||
|
results.Add(" and min_se_val = max_se_val ");
|
||||||
|
results.Add(" and min_se_val = max_se_val ");
|
||||||
|
results.Add(" and min_se_part = max_se_part ");
|
||||||
|
results.Add(" and min_se_prcs = max_se_prcs ");
|
||||||
|
results.Add(" and min_se_sgtm = max_se_sgtm ");
|
||||||
|
results.Add(" and min_se_test = max_se_test ");
|
||||||
|
results.Add(" ) qb ");
|
||||||
|
results.Add(" group by count_se_sgtm, ");
|
||||||
|
results.Add(" max_se_lot, ");
|
||||||
|
results.Add(" max_se_part, ");
|
||||||
|
results.Add(" max_se_prcs, ");
|
||||||
|
results.Add(" max_se_sgrp, ");
|
||||||
|
results.Add(" max_se_sgtm, ");
|
||||||
|
results.Add(" min_se_sgrp ");
|
||||||
|
results.Add(" ");
|
||||||
|
results.Add(" ) qc ");
|
||||||
|
results.Add(" order by max_se_sgrp desc ");
|
||||||
|
results.Add(" for json path ");
|
||||||
|
return string.Join(Environment.NewLine, results);
|
||||||
|
} // cSpell:restore
|
||||||
|
|
||||||
private static string GetCommandText(Logistics logistics, pcl.Description description, string dateTime, long? subGroupId)
|
private static string GetCommandText(Logistics logistics, pcl.Description description, string dateTime, long? subGroupId)
|
||||||
{ // cSpell:disable
|
{ // cSpell:disable
|
||||||
StringBuilder result = new();
|
List<string> results = new();
|
||||||
_ = result
|
results.Add(" select iq.ev_count, iq.cl_count, iq.sl_count, iq.se_sgrp, iq.se_sgtm, iq.se_tsno, iq.td_test, iq.pr_name, iq.jd_name, iq.pl_name, iq.pd_name, iq.td_name, iq.se_val ");
|
||||||
.AppendLine(" select iq.ev_count, iq.cl_count, iq.sl_count, iq.se_sgrp, iq.se_sgtm, iq.se_tsno, iq.td_test, iq.pr_name, iq.jd_name, iq.pl_name, iq.pd_name, iq.td_name, iq.se_val ")
|
results.Add(" from ( ");
|
||||||
.AppendLine(" from ( ")
|
results.Add(" select ");
|
||||||
.AppendLine(" select ")
|
results.Add(" se.f_sgrp se_sgrp, ");
|
||||||
.AppendLine(" se.f_sgrp se_sgrp, ")
|
results.Add(" se.f_sgtm se_sgtm, ");
|
||||||
.AppendLine(" se.f_sgtm se_sgtm, ")
|
results.Add(" se.f_tsno se_tsno, ");
|
||||||
.AppendLine(" se.f_tsno se_tsno, ")
|
results.Add(" se.f_val se_val, ");
|
||||||
.AppendLine(" se.f_val se_val, ")
|
results.Add(" pr.f_name pr_name, ");
|
||||||
.AppendLine(" pr.f_name pr_name, ")
|
results.Add(" jd.f_name jd_name, ");
|
||||||
.AppendLine(" jd.f_name jd_name, ")
|
results.Add(" pl.f_name pl_name, ");
|
||||||
.AppendLine(" pl.f_name pl_name, ")
|
results.Add(" pd.f_name pd_name, ");
|
||||||
.AppendLine(" pd.f_name pd_name, ")
|
results.Add(" td.f_test td_test, ");
|
||||||
.AppendLine(" td.f_test td_test, ")
|
results.Add(" td.f_name td_name, ");
|
||||||
.AppendLine(" td.f_name td_name, ")
|
results.Add(" (select count(cl.f_part) ");
|
||||||
.AppendLine(" (select count(cl.f_part) ")
|
results.Add(" from [spcepiworld].[dbo].[ctrl_lim] cl ");
|
||||||
.AppendLine(" from [spcepiworld].[dbo].[ctrl_lim] cl ")
|
results.Add(" where cl.f_part = pd.f_part ");
|
||||||
.AppendLine(" where cl.f_part = pd.f_part ")
|
results.Add(" and cl.f_test = td.f_test ");
|
||||||
.AppendLine(" and cl.f_test = td.f_test ")
|
results.Add(" ) cl_count, ");
|
||||||
.AppendLine(" ) cl_count, ")
|
results.Add(" (select count(sl.f_part) ");
|
||||||
.AppendLine(" (select count(sl.f_part) ")
|
results.Add(" from [spcepiworld].[dbo].[spec_lim] sl ");
|
||||||
.AppendLine(" from [spcepiworld].[dbo].[spec_lim] sl ")
|
results.Add(" where sl.f_part = pd.f_part ");
|
||||||
.AppendLine(" where sl.f_part = pd.f_part ")
|
results.Add(" and sl.f_test = td.f_test ");
|
||||||
.AppendLine(" and sl.f_test = td.f_test ")
|
results.Add(" ) sl_count, ");
|
||||||
.AppendLine(" ) sl_count, ")
|
results.Add(" (select count(ev.f_evnt) ");
|
||||||
.AppendLine(" (select count(ev.f_evnt) ")
|
results.Add(" from [spcepiworld].[dbo].[evnt_inf] ev ");
|
||||||
.AppendLine(" from [spcepiworld].[dbo].[evnt_inf] ev ")
|
results.Add(" where ev.f_prcs = pr.f_prcs ");
|
||||||
.AppendLine(" where ev.f_prcs = pr.f_prcs ")
|
results.Add(" and ev.f_part = pd.f_part ");
|
||||||
.AppendLine(" and ev.f_part = pd.f_part ")
|
results.Add(" and ev.f_sgtm = se.f_sgtm ");
|
||||||
.AppendLine(" and ev.f_sgtm = se.f_sgtm ")
|
results.Add(" ) ev_count ");
|
||||||
.AppendLine(" ) ev_count ")
|
results.Add(" from [spcepiworld].[dbo].[sgrp_ext] se ");
|
||||||
.AppendLine(" from [spcepiworld].[dbo].[sgrp_ext] se ")
|
results.Add(" join [spcepiworld].[dbo].[prcs_dat] pr ");
|
||||||
.AppendLine(" join [spcepiworld].[dbo].[prcs_dat] pr ")
|
results.Add(" on se.f_prcs = pr.f_prcs ");
|
||||||
.AppendLine(" on se.f_prcs = pr.f_prcs ")
|
results.Add(" join [spcepiworld].[dbo].[job_dat] jd ");
|
||||||
.AppendLine(" join [spcepiworld].[dbo].[job_dat] jd ")
|
results.Add(" on se.f_job = jd.f_job ");
|
||||||
.AppendLine(" on se.f_job = jd.f_job ")
|
results.Add(" join [spcepiworld].[dbo].[part_lot] pl ");
|
||||||
.AppendLine(" join [spcepiworld].[dbo].[part_lot] pl ")
|
results.Add(" on se.f_lot = pl.f_lot ");
|
||||||
.AppendLine(" on se.f_lot = pl.f_lot ")
|
results.Add(" join [spcepiworld].[dbo].[part_dat] pd ");
|
||||||
.AppendLine(" join [spcepiworld].[dbo].[part_dat] pd ")
|
results.Add(" on se.f_part = pd.f_part ");
|
||||||
.AppendLine(" on se.f_part = pd.f_part ")
|
results.Add(" join [spcepiworld].[dbo].[test_dat] td ");
|
||||||
.AppendLine(" join [spcepiworld].[dbo].[test_dat] td ")
|
results.Add(" on se.f_test = td.f_test ");
|
||||||
.AppendLine(" on se.f_test = td.f_test ")
|
results.Add(" where se.f_flag = 0 ");
|
||||||
.AppendLine(" where se.f_flag = 0 ");
|
|
||||||
if (subGroupId is not null)
|
if (subGroupId is not null)
|
||||||
_ = result.Append(" and se.f_sgrp = ").Append(subGroupId).AppendLine(" ");
|
results.Add($" and se.f_sgrp = {subGroupId} ");
|
||||||
if (!string.IsNullOrEmpty(description.RDS))
|
if (!string.IsNullOrEmpty(description.RDS))
|
||||||
_ = result.Append(" and pl.f_name = '").Append(description.RDS).AppendLine("' ");
|
results.Add($" and pl.f_name = '{description.RDS}' ");
|
||||||
_ = result
|
results.Add($" and pr.f_name = '{description.Reactor}' ");
|
||||||
.Append(" and pr.f_name = '").Append(description.Reactor).AppendLine("' ")
|
results.Add($" and pd.f_name = '{description.PSN}' ");
|
||||||
.Append(" and pd.f_name = '").Append(description.PSN).AppendLine("' ")
|
results.Add(" and jd.f_name in ('TENCOR1', 'TENCOR2', 'TENCOR3') ");
|
||||||
.AppendLine(" and jd.f_name in ('TENCOR1', 'TENCOR2', 'TENCOR3') ")
|
results.Add($" and jd.f_name = '{logistics.MesEntity}' ");
|
||||||
.Append(" and jd.f_name = '").Append(logistics.MesEntity).AppendLine("' ")
|
results.Add($" and dateadd(HH, -7, (dateadd(SS, convert(bigint, se.f_sgtm), '19700101'))) = '{dateTime}' ");
|
||||||
.Append(" and dateadd(HH, -7, (dateadd(SS, convert(bigint, se.f_sgtm), '19700101'))) = '").Append(dateTime).AppendLine("' ")
|
results.Add(" ) as iq ");
|
||||||
.AppendLine(" ) as iq ")
|
results.Add(" order by iq.ev_count desc, iq.cl_count desc, iq.sl_count desc, iq.se_sgrp, iq.se_tsno, iq.td_test ");
|
||||||
.AppendLine(" order by iq.ev_count desc, iq.cl_count desc, iq.sl_count desc, iq.se_sgrp, iq.se_tsno, iq.td_test ")
|
results.Add(" for json path ");
|
||||||
.AppendLine(" for json path ");
|
return string.Join(Environment.NewLine, results);
|
||||||
return result.ToString();
|
|
||||||
} // cSpell:restore
|
} // cSpell:restore
|
||||||
|
|
||||||
private static StringBuilder GetForJsonPath(string connectionString, string commandText)
|
private static StringBuilder GetForJsonPath(string connectionString, string commandText)
|
||||||
@ -89,27 +199,89 @@ public class FromIQS
|
|||||||
return stringBuilder;
|
return stringBuilder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static string GetCommandText(List<long> subGroups)
|
||||||
|
{ // cSpell:disable
|
||||||
|
List<string> results = new();
|
||||||
|
results.Add(" update [spcepiworld].[dbo].[sgrp_ext] ");
|
||||||
|
results.Add(" set f_flag = 1 ");
|
||||||
|
results.Add(" where f_flag = 0 ");
|
||||||
|
results.Add($" and f_sgrp in ({string.Join($",{Environment.NewLine} ", subGroups)}) ");
|
||||||
|
return string.Join(Environment.NewLine, results);
|
||||||
|
} // cSpell:enable
|
||||||
|
|
||||||
|
private static int? ExecuteNonQuery(string connectionString, string commandText)
|
||||||
|
{
|
||||||
|
int? result;
|
||||||
|
if (string.IsNullOrEmpty(connectionString))
|
||||||
|
result = null;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
using SqlConnection sqlConnection = new(connectionString);
|
||||||
|
sqlConnection.Open();
|
||||||
|
using SqlCommand sqlCommand = new(commandText, sqlConnection);
|
||||||
|
result = sqlCommand.ExecuteNonQuery();
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void FlagDuplicates(string connectionString, string json)
|
||||||
|
{
|
||||||
|
JsonElement[]? jsonElements = JsonSerializer.Deserialize<JsonElement[]>(json);
|
||||||
|
JsonSerializerOptions jsonSerializerOptions = new() { PropertyNameCaseInsensitive = true };
|
||||||
|
if (jsonElements is not null && jsonElements.Length != 0 && jsonElements[0].ValueKind == JsonValueKind.Object)
|
||||||
|
{
|
||||||
|
Root? root;
|
||||||
|
List<long> collection = new();
|
||||||
|
JsonElement[] array = jsonElements.ToArray();
|
||||||
|
foreach (JsonElement jsonElement in array)
|
||||||
|
{
|
||||||
|
root = JsonSerializer.Deserialize<Root>(jsonElement.ToString(), jsonSerializerOptions);
|
||||||
|
if (root is null || root.MaxSeSgrp < 1)
|
||||||
|
continue;
|
||||||
|
if (collection.Count > 99)
|
||||||
|
break;
|
||||||
|
collection.Add(root.MaxSeSgrp);
|
||||||
|
}
|
||||||
|
if (collection.Count > 0)
|
||||||
|
{
|
||||||
|
string commandText = GetCommandText(collection);
|
||||||
|
File.WriteAllText("D:/.sql", commandText);
|
||||||
|
_ = ExecuteNonQuery(connectionString, commandText);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
internal static (long?, int?, string) GetCommandText(string connectionString, Logistics logistics, pcl.Description description, long breakAfter, long preWait)
|
internal static (long?, int?, string) GetCommandText(string connectionString, Logistics logistics, pcl.Description description, long breakAfter, long preWait)
|
||||||
{
|
{
|
||||||
string dateTime;
|
DateTime dateTime;
|
||||||
int? count = null;
|
int? count = null;
|
||||||
string commandText;
|
string commandText;
|
||||||
long? result = null;
|
long? result = null;
|
||||||
|
StringBuilder stringBuilder;
|
||||||
string dateFormat = pcl.Description.GetDateFormat();
|
string dateFormat = pcl.Description.GetDateFormat();
|
||||||
if (DateTime.TryParseExact(description.Date, dateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime dateTimeParsed))
|
if (DateTime.TryParseExact(description.Date, dateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime dateTimeParsed))
|
||||||
dateTime = dateTimeParsed.ToString("yyyy-MM-dd HH:mm:ss");
|
dateTime = dateTimeParsed;
|
||||||
else if (DateTime.TryParse(description.Date, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTimeParsed))
|
else if (DateTime.TryParse(description.Date, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTimeParsed))
|
||||||
dateTime = dateTimeParsed.ToString("yyyy-MM-dd HH:mm:ss");
|
dateTime = dateTimeParsed;
|
||||||
else
|
else
|
||||||
dateTime = logistics.DateTimeFromSequence.ToString("yyyy-MM-dd HH:mm:ss");
|
dateTime = logistics.DateTimeFromSequence;
|
||||||
commandText = GetCommandText(logistics, description, dateTime, subGroupId: null);
|
commandText = GetCommandText(dateTime);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
stringBuilder = GetForJsonPath(connectionString, commandText);
|
||||||
|
if (stringBuilder.Length > 0)
|
||||||
|
FlagDuplicates(connectionString, stringBuilder.ToString());
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{ stringBuilder = new(); }
|
||||||
|
_ = stringBuilder.Clear();
|
||||||
|
commandText = GetCommandText(logistics, description, dateTime.ToString("yyyy-MM-dd HH:mm:ss"), subGroupId: null);
|
||||||
for (short i = 0; i < short.MaxValue; i++)
|
for (short i = 0; i < short.MaxValue; i++)
|
||||||
{
|
{
|
||||||
if (DateTime.Now.Ticks > preWait)
|
if (DateTime.Now.Ticks > preWait)
|
||||||
break;
|
break;
|
||||||
Thread.Sleep(100);
|
Thread.Sleep(100);
|
||||||
}
|
}
|
||||||
StringBuilder stringBuilder = new();
|
|
||||||
for (short z = 0; z < short.MaxValue; z++)
|
for (short z = 0; z < short.MaxValue; z++)
|
||||||
{
|
{
|
||||||
stringBuilder = GetForJsonPath(connectionString, commandText);
|
stringBuilder = GetForJsonPath(connectionString, commandText);
|
||||||
@ -153,172 +325,18 @@ public class FromIQS
|
|||||||
return new(result, count, commandText);
|
return new(result, count, commandText);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string GetJson(Logistics logistics, string logisticLines, pcl.Description description)
|
internal static void Save(string openInsightApiECDirectory, Logistics logistics, string reportFullPath, pcl.Description description, long? subGroupId, string weekOfYear)
|
||||||
{
|
{
|
||||||
string result;
|
|
||||||
StringBuilder stringBuilder = new();
|
|
||||||
var @object = new
|
|
||||||
{
|
|
||||||
description.MesEntity,
|
|
||||||
description.Employee,
|
|
||||||
// description.Layer,
|
|
||||||
description.PSN,
|
|
||||||
description.RDS,
|
|
||||||
description.Reactor,
|
|
||||||
description.Recipe,
|
|
||||||
// description.Zone,
|
|
||||||
logistics.DateTimeFromSequence.Ticks
|
|
||||||
};
|
|
||||||
string[] pair;
|
|
||||||
string safeValue;
|
|
||||||
string[] segments;
|
|
||||||
string serializerValue;
|
|
||||||
foreach (string line in logisticLines.Split(new string[] { Environment.NewLine }, StringSplitOptions.None))
|
|
||||||
{
|
|
||||||
segments = line.Split('\t');
|
|
||||||
if (segments.Length < 2)
|
|
||||||
continue;
|
|
||||||
segments = segments[1].Split(';');
|
|
||||||
_ = stringBuilder.Append('{');
|
|
||||||
foreach (string segment in segments)
|
|
||||||
{
|
|
||||||
pair = segment.Split('=');
|
|
||||||
if (pair.Length != 2 || pair[0].Length < 3)
|
|
||||||
continue;
|
|
||||||
serializerValue = JsonSerializer.Serialize(pair[1]);
|
|
||||||
safeValue = serializerValue.Substring(1, serializerValue.Length - 2);
|
|
||||||
_ = stringBuilder.Append('"').Append(pair[0].Substring(2)).Append('"').Append(':').Append('"').Append(safeValue).Append('"').Append(',');
|
|
||||||
}
|
|
||||||
if (stringBuilder.Length > 0)
|
|
||||||
_ = stringBuilder.Remove(stringBuilder.Length - 1, 1);
|
|
||||||
_ = stringBuilder.Append('}').Append(',');
|
|
||||||
}
|
|
||||||
if (stringBuilder.Length > 0)
|
|
||||||
_ = stringBuilder.Remove(stringBuilder.Length - 1, 1);
|
|
||||||
_ = stringBuilder.Append(']').Append('}');
|
|
||||||
_ = stringBuilder.Insert(0, ",\"Logistics\":[");
|
|
||||||
string json = JsonSerializer.Serialize(@object);
|
|
||||||
_ = stringBuilder.Insert(0, json.Substring(0, json.Length - 1));
|
|
||||||
JsonElement? jsonElement = JsonSerializer.Deserialize<JsonElement>(stringBuilder.ToString());
|
|
||||||
result = jsonElement is null ? "{}" : JsonSerializer.Serialize(jsonElement, new JsonSerializerOptions { WriteIndented = true });
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal static void Save(string openInsightApiECDirectory, Logistics logistics, string reportFullPath, string logisticLines, pcl.Description description, string lines, long? subGroupId, string weekOfYear)
|
|
||||||
{
|
|
||||||
string checkFile;
|
|
||||||
string fileName = Path.GetFileName(reportFullPath);
|
string fileName = Path.GetFileName(reportFullPath);
|
||||||
string json = GetJson(logistics, logisticLines, description);
|
|
||||||
string? ecPathRoot = Path.GetPathRoot(openInsightApiECDirectory);
|
string? ecPathRoot = Path.GetPathRoot(openInsightApiECDirectory);
|
||||||
bool ecExists = ecPathRoot is not null && Directory.Exists(ecPathRoot);
|
bool ecExists = ecPathRoot is not null && Directory.Exists(ecPathRoot);
|
||||||
string weekYear = $"{logistics.DateTimeFromSequence:yyyy}_Week_{weekOfYear}";
|
string weekYear = $"{logistics.DateTimeFromSequence:yyyy}_Week_{weekOfYear}";
|
||||||
string ecDirectory = Path.Combine(openInsightApiECDirectory, weekYear, $"-{description.PSN}", $"-{description.Reactor}", $"-{description.RDS}", $"-{subGroupId}");
|
string ecDirectory = Path.Combine(openInsightApiECDirectory, weekYear, $"-{description.PSN}", $"-{description.Reactor}", $"-{description.RDS}", $"-{subGroupId}");
|
||||||
if (ecExists && !Directory.Exists(ecDirectory))
|
if (ecExists && !Directory.Exists(ecDirectory))
|
||||||
_ = Directory.CreateDirectory(ecDirectory);
|
_ = Directory.CreateDirectory(ecDirectory);
|
||||||
checkFile = Path.Combine(ecDirectory, fileName);
|
string checkFile = Path.Combine(ecDirectory, fileName);
|
||||||
if (ecExists && !File.Exists(checkFile))
|
if (ecExists && !File.Exists(checkFile))
|
||||||
File.Copy(reportFullPath, checkFile);
|
File.Copy(reportFullPath, checkFile);
|
||||||
checkFile = Path.Combine(ecDirectory, $"{logistics.DateTimeFromSequence.Ticks}.txt");
|
|
||||||
if (ecExists && !File.Exists(checkFile))
|
|
||||||
File.WriteAllText(checkFile, lines);
|
|
||||||
checkFile = Path.Combine(ecDirectory, $"{logistics.DateTimeFromSequence.Ticks}.json");
|
|
||||||
if (ecExists && !File.Exists(checkFile))
|
|
||||||
File.WriteAllText(checkFile, json);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string GetCommandText(string[] iqsCopyValues)
|
|
||||||
{ // cSpell:disable
|
|
||||||
StringBuilder result = new();
|
|
||||||
if (iqsCopyValues.Length != 4)
|
|
||||||
throw new NotSupportedException();
|
|
||||||
string find = iqsCopyValues[1];
|
|
||||||
string replace = iqsCopyValues[3];
|
|
||||||
_ = result
|
|
||||||
.AppendLine(" select pd.f_name [Part Name], ")
|
|
||||||
.AppendLine(" null [Part Revision], ")
|
|
||||||
.Append(" '").Append(replace).AppendLine("' [Test Name], ")
|
|
||||||
.AppendLine(" null [Description], ")
|
|
||||||
.AppendLine(" null [Lot Number], ")
|
|
||||||
.AppendLine(" null [Job Name], ")
|
|
||||||
.AppendLine(" null [Process Name], ")
|
|
||||||
.AppendLine(" case when sl.f_url = 0 then null else sl.f_url end [Reasonable Limit (Upper)], ")
|
|
||||||
.AppendLine(" case when sl.f_url = 0 then 0 else 1 end [Alarm Reasonable Limit (Upper)], ")
|
|
||||||
.AppendLine(" case when sl.f_usl = 0 then null else sl.f_usl end [Specification Limit (Upper)], ")
|
|
||||||
.AppendLine(" case when sl.f_usl = 0 then 0 else 1 end [Alarm Specification Limit (Upper)], ")
|
|
||||||
.AppendLine(" case when sl.f_ugb = 0 then null else sl.f_ugb end [Warning Limit (Upper)], ")
|
|
||||||
.AppendLine(" case when sl.f_ugb = 0 then 0 else 1 end [Alarm Warning Limit (Upper)], ")
|
|
||||||
.AppendLine(" case when sl.f_tar = 0 then null else sl.f_tar end [Specification Limit (Target)], ")
|
|
||||||
.AppendLine(" case when sl.f_lgb = 0 then null else sl.f_lgb end [Warning Limit (Lower)], ")
|
|
||||||
.AppendLine(" case when sl.f_lgb = 0 then 0 else 1 end [Alarm Warning Limit (Lower)], ")
|
|
||||||
.AppendLine(" case when sl.f_lsl = 0 then null else sl.f_lsl end [Specification Limit (Lower)], ")
|
|
||||||
.AppendLine(" case when sl.f_lsl = 0 then 0 else 1 end [Alarm Specification Limit (Lower)], ")
|
|
||||||
.AppendLine(" case when sl.f_lrl = 0 then null else sl.f_lrl end [Reasonable Limit (Lower)], ")
|
|
||||||
.AppendLine(" case when sl.f_lrl = 0 then 0 else 1 end [Alarm Reasonable Limit (Lower)], ")
|
|
||||||
.AppendLine(" td.f_name [Original Test Name], ")
|
|
||||||
.AppendLine(" td.f_test [Test Id], ")
|
|
||||||
.AppendLine(" ( ")
|
|
||||||
.AppendLine(" select count(sl_b.f_spec) ")
|
|
||||||
.AppendLine(" from [spcepiworld].[dbo].[spec_lim] sl_b ")
|
|
||||||
.AppendLine(" join [spcepiworld].[dbo].[part_dat] pd_b ")
|
|
||||||
.AppendLine(" on sl_b.f_part = pd_b.f_part ")
|
|
||||||
.AppendLine(" join [spcepiworld].[dbo].[test_dat] td_b ")
|
|
||||||
.AppendLine(" on sl_b.f_test = td_b.f_test ")
|
|
||||||
.AppendLine(" where sl_b.f_prcs = 0 ")
|
|
||||||
.Append(" and td_b.f_name = '").Append(replace).AppendLine("' ")
|
|
||||||
.AppendLine(" and pd_b.f_name = pd.f_name ")
|
|
||||||
.AppendLine(" and sl_b.f_url = sl.f_url ")
|
|
||||||
.AppendLine(" and sl_b.f_usl = sl.f_usl ")
|
|
||||||
.AppendLine(" and sl_b.f_ugb = sl.f_ugb ")
|
|
||||||
.AppendLine(" and sl_b.f_tar = sl.f_tar ")
|
|
||||||
.AppendLine(" and sl_b.f_lgb = sl.f_lgb ")
|
|
||||||
.AppendLine(" and sl_b.f_lsl = sl.f_lsl ")
|
|
||||||
.AppendLine(" and sl_b.f_lrl = sl.f_lrl ")
|
|
||||||
.AppendLine(" group by sl_b.f_spec ")
|
|
||||||
.AppendLine(" ) count ")
|
|
||||||
.AppendLine(" from [spcepiworld].[dbo].[spec_lim] sl ")
|
|
||||||
.AppendLine(" join [spcepiworld].[dbo].[part_dat] pd ")
|
|
||||||
.AppendLine(" on sl.f_part = pd.f_part ")
|
|
||||||
.AppendLine(" join [spcepiworld].[dbo].[test_dat] td ")
|
|
||||||
.AppendLine(" on sl.f_test = td.f_test ")
|
|
||||||
.AppendLine(" where sl.f_prcs = 0 ")
|
|
||||||
.Append(" and td.f_name = '").Append(find).AppendLine("' ")
|
|
||||||
.AppendLine(" and isnull(( ")
|
|
||||||
.AppendLine(" select count(sl_b.f_spec) ")
|
|
||||||
.AppendLine(" from [spcepiworld].[dbo].[spec_lim] sl_b ")
|
|
||||||
.AppendLine(" join [spcepiworld].[dbo].[part_dat] pd_b ")
|
|
||||||
.AppendLine(" on sl_b.f_part = pd_b.f_part ")
|
|
||||||
.AppendLine(" join [spcepiworld].[dbo].[test_dat] td_b ")
|
|
||||||
.AppendLine(" on sl_b.f_test = td_b.f_test ")
|
|
||||||
.AppendLine(" where sl_b.f_prcs = 0 ")
|
|
||||||
.Append(" and td_b.f_name = '").Append(replace).AppendLine("' ")
|
|
||||||
.AppendLine(" and pd_b.f_name = pd.f_name ")
|
|
||||||
.AppendLine(" and sl_b.f_url = sl.f_url ")
|
|
||||||
.AppendLine(" and sl_b.f_usl = sl.f_usl ")
|
|
||||||
.AppendLine(" and sl_b.f_ugb = sl.f_ugb ")
|
|
||||||
.AppendLine(" and sl_b.f_tar = sl.f_tar ")
|
|
||||||
.AppendLine(" and sl_b.f_lgb = sl.f_lgb ")
|
|
||||||
.AppendLine(" and sl_b.f_lsl = sl.f_lsl ")
|
|
||||||
.AppendLine(" and sl_b.f_lrl = sl.f_lrl ")
|
|
||||||
.AppendLine(" group by sl_b.f_spec ")
|
|
||||||
.AppendLine(" ), 0) = 0 ")
|
|
||||||
.AppendLine(" for json path ");
|
|
||||||
return result.ToString();
|
|
||||||
} // cSpell:restore
|
|
||||||
|
|
||||||
internal static void SaveCopy(string fileConnectorConfigurationSourceFileLocation, string connectionString, string name, string[] iqsCopyValues)
|
|
||||||
{
|
|
||||||
string checkFile = Path.Combine(fileConnectorConfigurationSourceFileLocation, $"{name}.json");
|
|
||||||
if (!File.Exists(checkFile))
|
|
||||||
{
|
|
||||||
string commandText = GetCommandText(iqsCopyValues);
|
|
||||||
StringBuilder stringBuilder = GetForJsonPath(connectionString, commandText);
|
|
||||||
if (stringBuilder.Length != 0)
|
|
||||||
File.WriteAllText(checkFile, stringBuilder.ToString());
|
|
||||||
else
|
|
||||||
File.WriteAllText(Path.Combine(fileConnectorConfigurationSourceFileLocation, $"{name}.sql"), commandText);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
}
|
}
|
||||||
47
Adaptation/FileHandlers/OpenInsight/Root.cs
Normal file
47
Adaptation/FileHandlers/OpenInsight/Root.cs
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
using System;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace Adaptation.FileHandlers.OpenInsight;
|
||||||
|
|
||||||
|
public class Root
|
||||||
|
{
|
||||||
|
|
||||||
|
public long CountSeSgtm { get; } // [JsonPropertyName("count_se_sgtm")]
|
||||||
|
public DateTime DateTime { get; } // [JsonPropertyName("date_time")]
|
||||||
|
public long MaxMaxSeTest { get; } // [JsonPropertyName("max_max_se_test")]
|
||||||
|
public string MaxMaxSeTestName { get; } // [JsonPropertyName("max_max_se_test_name")]
|
||||||
|
public double MaxMaxSeVal { get; } // [JsonPropertyName("max_max_se_val")]
|
||||||
|
public long MaxSeLot { get; } // [JsonPropertyName("max_se_lot")]
|
||||||
|
public string MaxSeLotName { get; } // [JsonPropertyName("max_se_lot_name")]
|
||||||
|
public long MaxSePart { get; } // [JsonPropertyName("max_se_part")]
|
||||||
|
public string MaxSePartName { get; } // [JsonPropertyName("max_se_part_name")]
|
||||||
|
public long MaxSePrcs { get; } // [JsonPropertyName("max_se_prcs")]
|
||||||
|
public string MaxSePrcsName { get; } // [JsonPropertyName("max_se_prcs_name")]
|
||||||
|
public long MaxSeSgrp { get; } // [JsonPropertyName("max_se_sgrp")]
|
||||||
|
public long MinMinSeTest { get; } // [JsonPropertyName("min_min_se_test")]
|
||||||
|
public string MinMinSeTestName { get; } // [JsonPropertyName("min_min_se_test_name")]
|
||||||
|
public double MinMinSeVal { get; } // [JsonPropertyName("min_min_se_val")]
|
||||||
|
public long MinSeSgrp { get; } // [JsonPropertyName("min_se_sgrp")]
|
||||||
|
|
||||||
|
[JsonConstructor]
|
||||||
|
public Root(long countSeSgtm, DateTime dateTime, long maxMaxSeTest, string maxMaxSeTestName, double maxMaxSeVal, long maxSeLot, string maxSeLotName, long maxSePart, string maxSePartName, long maxSePrcs, string maxSePrcsName, long maxSeSgrp, long minMinSeTest, string minMinSeTestName, double minMinSeVal, long minSeSgrp)
|
||||||
|
{
|
||||||
|
CountSeSgtm = countSeSgtm;
|
||||||
|
DateTime = dateTime;
|
||||||
|
MaxMaxSeTest = maxMaxSeTest;
|
||||||
|
MaxMaxSeTestName = maxMaxSeTestName;
|
||||||
|
MaxMaxSeVal = maxMaxSeVal;
|
||||||
|
MaxSeLot = maxSeLot;
|
||||||
|
MaxSeLotName = maxSeLotName;
|
||||||
|
MaxSePart = maxSePart;
|
||||||
|
MaxSePartName = maxSePartName;
|
||||||
|
MaxSePrcs = maxSePrcs;
|
||||||
|
MaxSePrcsName = maxSePrcsName;
|
||||||
|
MaxSeSgrp = maxSeSgrp;
|
||||||
|
MinMinSeTest = minMinSeTest;
|
||||||
|
MinMinSeTestName = minMinSeTestName;
|
||||||
|
MinMinSeVal = minMinSeVal;
|
||||||
|
MinSeSgrp = minSeSgrp;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -19,7 +19,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
private readonly string _OpenInsightMetrologyViewerAPI;
|
private readonly string _OpenInsightMetrologyViewerAPI;
|
||||||
private readonly string _OpenInsightMetrologyViewerFileShare;
|
private readonly string _OpenInsightMetrologyViewerFileShare;
|
||||||
|
|
||||||
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<string>> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) :
|
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<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)
|
base(new Description(), false, smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null)
|
||||||
{
|
{
|
||||||
_MinFileLength = 10;
|
_MinFileLength = 10;
|
||||||
@ -31,8 +31,8 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
throw new Exception(cellInstanceConnectionName);
|
throw new Exception(cellInstanceConnectionName);
|
||||||
if (!_IsDuplicator)
|
if (!_IsDuplicator)
|
||||||
throw new Exception(cellInstanceConnectionName);
|
throw new Exception(cellInstanceConnectionName);
|
||||||
_OpenInsightMetrologyViewerFileShare = @"\\mesfs.infineon.com\EC_Metrology_Si\MetrologyAttachments\TencorRunHeader_";
|
|
||||||
_OpenInsightMetrologyViewerAPI = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "OpenInsight.MetrologyViewerAPI");
|
_OpenInsightMetrologyViewerAPI = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "OpenInsight.MetrologyViewerAPI");
|
||||||
|
_OpenInsightMetrologyViewerFileShare = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "OpenInsight.MetrologyViewerFileShare");
|
||||||
}
|
}
|
||||||
|
|
||||||
void IFileRead.Move(Tuple<string, Test[], JsonElement[], List<FileInfo>> extractResults, Exception exception)
|
void IFileRead.Move(Tuple<string, Test[], JsonElement[], List<FileInfo>> extractResults, Exception exception)
|
||||||
@ -110,41 +110,45 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SendData(string reportFullPath, DateTime dateTime, List<pcl.Description> descriptions)
|
private void SendData(string reportFullPath, DateTime dateTime, JsonElement[] jsonElements, List<pcl.Description> descriptions)
|
||||||
{
|
{
|
||||||
|
string checkDirectory;
|
||||||
|
WSRequest wsRequest = new(this, _Logistics, jsonElements, descriptions);
|
||||||
int weekOfYear = _Calendar.GetWeekOfYear(dateTime, CalendarWeekRule.FirstDay, DayOfWeek.Sunday);
|
int weekOfYear = _Calendar.GetWeekOfYear(dateTime, CalendarWeekRule.FirstDay, DayOfWeek.Sunday);
|
||||||
string directory = Path.Combine(_OpenInsightMetrologyViewerFileShare, dateTime.Year.ToString(), $"WW{weekOfYear:00}", _Logistics.Sequence.ToString());
|
string directory = Path.Combine(_OpenInsightMetrologyViewerFileShare, dateTime.Year.ToString(), $"WW{weekOfYear:00}");
|
||||||
if (!Directory.Exists(directory))
|
checkDirectory = Path.Combine(directory, _Logistics.Sequence.ToString());
|
||||||
_ = Directory.CreateDirectory(directory);
|
if (!Directory.Exists(checkDirectory))
|
||||||
string fullPath = Path.Combine(directory, Path.GetFileName(reportFullPath));
|
_ = Directory.CreateDirectory(checkDirectory);
|
||||||
if (File.Exists(fullPath))
|
File.Copy(reportFullPath, Path.Combine(checkDirectory, Path.GetFileName(reportFullPath)), overwrite: true);
|
||||||
File.Delete(fullPath);
|
(string jsonResults, WS.Results wsResults) = WS.SendData(_OpenInsightMetrologyViewerAPI, _Logistics.Sequence, directory, wsRequest);
|
||||||
File.Copy(reportFullPath, fullPath);
|
if (wsResults.Success is null || !wsResults.Success.Value)
|
||||||
WSRequest wsRequest = new(this, _Logistics, descriptions, fullPath);
|
throw new Exception(jsonResults);
|
||||||
(string json, WS.Results wsResults) = WS.SendData(_OpenInsightMetrologyViewerAPI, wsRequest);
|
_Log.Debug(wsResults.HeaderId);
|
||||||
if (!wsResults.Success)
|
|
||||||
throw new Exception(wsResults.ToString());
|
|
||||||
_Log.Debug(wsResults.HeaderID);
|
|
||||||
lock (_StaticRuns)
|
lock (_StaticRuns)
|
||||||
{
|
{
|
||||||
if (!_StaticRuns.ContainsKey(_Logistics.Sequence))
|
if (!_StaticRuns.ContainsKey(_Logistics.Sequence))
|
||||||
_StaticRuns.Add(_Logistics.Sequence, new());
|
_StaticRuns.Add(_Logistics.Sequence, new());
|
||||||
_StaticRuns[_Logistics.Sequence].Add(json);
|
_StaticRuns[_Logistics.Sequence].Add(wsResults);
|
||||||
}
|
}
|
||||||
|
checkDirectory = Path.Combine(directory, $"-{wsResults.HeaderId}");
|
||||||
|
if (!Directory.Exists(checkDirectory))
|
||||||
|
_ = Directory.CreateDirectory(checkDirectory);
|
||||||
|
File.Copy(reportFullPath, Path.Combine(checkDirectory, Path.GetFileName(reportFullPath)), overwrite: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
||||||
Tuple<string, string[], string[]> pdsf = ProcessDataStandardFormat.GetLogisticsColumnsAndBody(reportFullPath);
|
string[] lines = File.ReadAllLines(reportFullPath);
|
||||||
_Logistics = new Logistics(reportFullPath, pdsf.Item1);
|
ProcessDataStandardFormat processDataStandardFormat = ProcessDataStandardFormat.GetProcessDataStandardFormat(reportFullPath, lines);
|
||||||
|
_Logistics = new Logistics(reportFullPath, processDataStandardFormat);
|
||||||
SetFileParameterLotIDToLogisticsMID();
|
SetFileParameterLotIDToLogisticsMID();
|
||||||
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(pdsf);
|
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(reportFullPath, lines, processDataStandardFormat);
|
||||||
List<pcl.Description> descriptions = pcl.ProcessData.GetDescriptions(jsonElements);
|
List<pcl.Description> descriptions = pcl.ProcessData.GetDescriptions(jsonElements);
|
||||||
Test[] tests = (from l in descriptions select (Test)l.Test).ToArray();
|
Test[] tests = (from l in descriptions select (Test)l.Test).ToArray();
|
||||||
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
||||||
SendData(reportFullPath, dateTime, descriptions);
|
SendData(reportFullPath, dateTime, jsonElements, descriptions);
|
||||||
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(pdsf.Item1, tests, jsonElements, new List<FileInfo>());
|
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics), tests, jsonElements, new List<FileInfo>());
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -21,6 +21,7 @@ public class WSRequest
|
|||||||
public string AreaTotalMax { get; set; }
|
public string AreaTotalMax { get; set; }
|
||||||
public string AreaTotalMin { get; set; }
|
public string AreaTotalMin { get; set; }
|
||||||
public string AreaTotalStdDev { get; set; }
|
public string AreaTotalStdDev { get; set; }
|
||||||
|
public string AttemptCounter { get; set; }
|
||||||
public string Date { get; set; }
|
public string Date { get; set; }
|
||||||
public string HazeAverageAvg { get; set; }
|
public string HazeAverageAvg { get; set; }
|
||||||
public string HazeAverageMax { get; set; }
|
public string HazeAverageMax { get; set; }
|
||||||
@ -30,6 +31,7 @@ public class WSRequest
|
|||||||
public string HazeRegionMax { get; set; }
|
public string HazeRegionMax { get; set; }
|
||||||
public string HazeRegionMin { get; set; }
|
public string HazeRegionMin { get; set; }
|
||||||
public string HazeRegionStdDev { get; set; }
|
public string HazeRegionStdDev { get; set; }
|
||||||
|
public string IndexOf { get; set; }
|
||||||
public string Layer { get; set; }
|
public string Layer { get; set; }
|
||||||
public string LotID { get; set; }
|
public string LotID { get; set; }
|
||||||
public string LPDCM2Avg { get; set; }
|
public string LPDCM2Avg { get; set; }
|
||||||
@ -67,15 +69,13 @@ public class WSRequest
|
|||||||
#pragma warning disable IDE1006
|
#pragma warning disable IDE1006
|
||||||
public int i { get; set; }
|
public int i { get; set; }
|
||||||
public List<pcl.Detail> Details { get; protected set; }
|
public List<pcl.Detail> Details { get; protected set; }
|
||||||
public string ProcessDataStandardFormat { get; set; }
|
|
||||||
|
|
||||||
[Obsolete("For json")] public WSRequest() { }
|
[Obsolete("For json")] public WSRequest() { }
|
||||||
|
|
||||||
#pragma warning disable IDE0060
|
#pragma warning disable IDE0060
|
||||||
internal WSRequest(IFileRead fileRead, Logistics logistics, List<pcl.Description> descriptions, string processDataStandardFormat = null)
|
internal WSRequest(IFileRead fileRead, Logistics logistics, JsonElement[] jsonElements, List<pcl.Description> descriptions, string processDataStandardFormat = null)
|
||||||
#pragma warning restore IDE0060
|
#pragma warning restore IDE0060
|
||||||
{
|
{
|
||||||
ProcessDataStandardFormat = processDataStandardFormat;
|
|
||||||
i = -1;
|
i = -1;
|
||||||
Id = -1;
|
Id = -1;
|
||||||
Zone = null;
|
Zone = null;
|
||||||
@ -95,6 +95,7 @@ public class WSRequest
|
|||||||
AreaTotalMax = x.AreaTotalMax;
|
AreaTotalMax = x.AreaTotalMax;
|
||||||
AreaTotalMin = x.AreaTotalMin;
|
AreaTotalMin = x.AreaTotalMin;
|
||||||
AreaTotalStdDev = x.AreaTotalStdDev;
|
AreaTotalStdDev = x.AreaTotalStdDev;
|
||||||
|
AttemptCounter = x.AttemptCounter;
|
||||||
Date = x.Date;
|
Date = x.Date;
|
||||||
HazeAverageAvg = x.HazeAverageAvg;
|
HazeAverageAvg = x.HazeAverageAvg;
|
||||||
HazeAverageMax = x.HazeAverageMax;
|
HazeAverageMax = x.HazeAverageMax;
|
||||||
@ -104,6 +105,7 @@ public class WSRequest
|
|||||||
HazeRegionMax = x.HazeRegionMax;
|
HazeRegionMax = x.HazeRegionMax;
|
||||||
HazeRegionMin = x.HazeRegionMin;
|
HazeRegionMin = x.HazeRegionMin;
|
||||||
HazeRegionStdDev = x.HazeRegionStdDev;
|
HazeRegionStdDev = x.HazeRegionStdDev;
|
||||||
|
IndexOf = x.IndexOf;
|
||||||
LotID = x.Lot;
|
LotID = x.Lot;
|
||||||
LPDCM2Avg = x.LPDCM2Avg;
|
LPDCM2Avg = x.LPDCM2Avg;
|
||||||
LPDCM2Max = x.LPDCM2Max;
|
LPDCM2Max = x.LPDCM2Max;
|
||||||
@ -201,6 +203,12 @@ public class WSRequest
|
|||||||
if (string.IsNullOrEmpty(Details[i].Bin8))
|
if (string.IsNullOrEmpty(Details[i].Bin8))
|
||||||
Details[i].Bin8 = null;
|
Details[i].Bin8 = null;
|
||||||
}
|
}
|
||||||
|
UniqueId = $"{logistics.JobID}_{logistics.MID}_{logistics.DateTimeFromSequence:yyyyMMddHHmmssffff}";
|
||||||
|
for (int i = 0; i < Details.Count; i++)
|
||||||
|
{
|
||||||
|
Details[i].HeaderUniqueId = UniqueId;
|
||||||
|
Details[i].UniqueId = $"{logistics.JobID}_{logistics.MID}_{logistics.DateTimeFromSequence:yyyyMMddHHmmssffff}_Item-{i + 1}";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void UpdateDataPDF(List<pcl.Description> descriptions, string checkFileName)
|
private static void UpdateDataPDF(List<pcl.Description> descriptions, string checkFileName)
|
||||||
@ -287,23 +295,32 @@ public class WSRequest
|
|||||||
pdDocument.close();
|
pdDocument.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal static long GetHeaderId(IFileRead fileRead, Logistics logistics, string openInsightMetrologyViewerAPI, string openInsightMetrologyViewerFileShare, int weekOfYear, WS.Results results, JsonElement[] jsonElements, List<pcl.Description> descriptions)
|
||||||
|
{
|
||||||
|
long result;
|
||||||
|
if (results is not null && results.HeaderId is not null)
|
||||||
|
result = results.HeaderId.Value;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
WSRequest wsRequest = new(fileRead, logistics, jsonElements, descriptions);
|
||||||
|
string directory = Path.Combine(openInsightMetrologyViewerFileShare, logistics.DateTimeFromSequence.Year.ToString(), $"WW{weekOfYear:00}");
|
||||||
|
(_, WS.Results wsResults) = WS.SendData(openInsightMetrologyViewerAPI, logistics.Sequence, directory, wsRequest);
|
||||||
|
if (wsResults.Success is null || !wsResults.Success.Value)
|
||||||
|
throw new Exception(wsResults.ToString());
|
||||||
|
result = wsResults.HeaderId.Value;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
#pragma warning disable IDE0060
|
#pragma warning disable IDE0060
|
||||||
internal static void PostOpenInsightMetrologyViewerAttachments(IFileRead fileRead, Logistics logistics, string openInsightMetrologyViewerAPI, DateTime dateTime, string json, List<pcl.Description> descriptions, string matchDirectory)
|
internal static void PostOpenInsightMetrologyViewerAttachments(IFileRead fileRead, Logistics logistics, string openInsightMetrologyViewerAPI, List<pcl.Description> descriptions, string matchDirectory, WS.Results results, string headerIdDirectory)
|
||||||
#pragma warning restore IDE0060
|
#pragma warning restore IDE0060
|
||||||
{
|
{
|
||||||
string checkFileName;
|
string checkFileName;
|
||||||
if (string.IsNullOrEmpty(json))
|
pcl.Description description;
|
||||||
{
|
|
||||||
WSRequest wsRequest = new(fileRead, logistics, descriptions, string.Empty);
|
|
||||||
(json, WS.Results wsResults) = WS.SendData(openInsightMetrologyViewerAPI, wsRequest);
|
|
||||||
if (!wsResults.Success)
|
|
||||||
throw new Exception(wsResults.ToString());
|
|
||||||
}
|
|
||||||
WS.Results metrologyWSRequest = JsonSerializer.Deserialize<WS.Results>(json, new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
|
|
||||||
long wsResultsHeaderID = metrologyWSRequest.HeaderID;
|
|
||||||
string[] pclFiles = Directory.GetFiles(matchDirectory, "*.pcl", SearchOption.TopDirectoryOnly);
|
string[] pclFiles = Directory.GetFiles(matchDirectory, "*.pcl", SearchOption.TopDirectoryOnly);
|
||||||
if (pclFiles.Length != 1)
|
if (pclFiles.Length != 1)
|
||||||
throw new Exception($"Invalid source file count for <{wsResultsHeaderID}>!{Environment.NewLine}{json}");
|
throw new Exception($"Invalid source file count for <{results.HeaderId}>!");
|
||||||
string sourceFileNameNoExt = Path.GetFileNameWithoutExtension(pclFiles[0]);
|
string sourceFileNameNoExt = Path.GetFileNameWithoutExtension(pclFiles[0]);
|
||||||
List<WS.Attachment> dataAttachments = new();
|
List<WS.Attachment> dataAttachments = new();
|
||||||
List<WS.Attachment> headerAttachments = new();
|
List<WS.Attachment> headerAttachments = new();
|
||||||
@ -313,23 +330,24 @@ public class WSRequest
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
UpdateDataPDF(descriptions, checkFileName);
|
UpdateDataPDF(descriptions, checkFileName);
|
||||||
headerAttachments.Add(new WS.Attachment(descriptions[0].HeaderUniqueId, "Data.pdf", checkFileName));
|
headerAttachments.Add(new WS.Attachment(results, headerIdDirectory, $"{logistics.JobID}_{logistics.MID}_{logistics.DateTimeFromSequence:yyyyMMddHHmmssffff}", "Data.pdf", checkFileName));
|
||||||
}
|
}
|
||||||
foreach (pcl.Description description in descriptions)
|
for (int i = 0; i < descriptions.Count; i++)
|
||||||
{
|
{
|
||||||
checkFileName = Path.Combine(matchDirectory, $"{sourceFileNameNoExt}_{description.Slot.Replace('*', 's')}_image.pdf");
|
description = descriptions[i];
|
||||||
|
checkFileName = Path.Combine(matchDirectory, $"{sourceFileNameNoExt}_s{description.Slot}_image.pdf");
|
||||||
if (File.Exists(checkFileName))
|
if (File.Exists(checkFileName))
|
||||||
dataAttachments.Add(new WS.Attachment(description.UniqueId, "Image.pdf", checkFileName));
|
dataAttachments.Add(new WS.Attachment(results, headerIdDirectory, $"{logistics.JobID}_{logistics.MID}_{logistics.DateTimeFromSequence:yyyyMMddHHmmssffff}_Item-{i + 1}", "Image.pdf", checkFileName));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
checkFileName = Path.Combine(matchDirectory, $"{sourceFileNameNoExt}_{description.Slot.Replace('*', 's')}_data.pdf");
|
checkFileName = Path.Combine(matchDirectory, $"{sourceFileNameNoExt}_s{description.Slot}_data.pdf");
|
||||||
if (File.Exists(checkFileName))
|
if (File.Exists(checkFileName))
|
||||||
dataAttachments.Add(new WS.Attachment(description.UniqueId, "Image.pdf", checkFileName));
|
dataAttachments.Add(new WS.Attachment(results, headerIdDirectory, $"{logistics.JobID}_{logistics.MID}_{logistics.DateTimeFromSequence:yyyyMMddHHmmssffff}_Item-{i + 1}", "Image.pdf", checkFileName));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (dataAttachments.Count == 0 || dataAttachments.Count != descriptions.Count)
|
if (dataAttachments.Count == 0 || dataAttachments.Count != descriptions.Count)
|
||||||
throw new Exception($"Invalid attachment count! {dataAttachments.Count} != {descriptions.Count}");
|
throw new Exception($"Invalid attachment count! {dataAttachments.Count} != {descriptions.Count}");
|
||||||
WS.AttachFiles(openInsightMetrologyViewerAPI, wsResultsHeaderID, headerAttachments, dataAttachments);
|
WS.AttachFiles(openInsightMetrologyViewerAPI, headerAttachments, dataAttachments);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -5,6 +5,7 @@ using Adaptation.Shared.Duplicator;
|
|||||||
using Adaptation.Shared.Methods;
|
using Adaptation.Shared.Methods;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
@ -14,10 +15,10 @@ namespace Adaptation.FileHandlers.OpenInsightMetrologyViewerAttachments;
|
|||||||
public class FileRead : Shared.FileRead, IFileRead
|
public class FileRead : Shared.FileRead, IFileRead
|
||||||
{
|
{
|
||||||
|
|
||||||
private readonly string _JobIdParentDirectory;
|
|
||||||
private readonly string _OpenInsightMetrologyViewerAPI;
|
private readonly string _OpenInsightMetrologyViewerAPI;
|
||||||
|
private readonly string _OpenInsightMetrologyViewerFileShare;
|
||||||
|
|
||||||
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<string>> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) :
|
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)
|
base(new Description(), false, smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null)
|
||||||
{
|
{
|
||||||
_MinFileLength = 10;
|
_MinFileLength = 10;
|
||||||
@ -29,8 +30,8 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
throw new Exception(cellInstanceConnectionName);
|
throw new Exception(cellInstanceConnectionName);
|
||||||
if (!_IsDuplicator)
|
if (!_IsDuplicator)
|
||||||
throw new Exception(cellInstanceConnectionName);
|
throw new Exception(cellInstanceConnectionName);
|
||||||
_JobIdParentDirectory = GetJobIdParentDirectory(_FileConnectorConfiguration.SourceFileLocation);
|
|
||||||
_OpenInsightMetrologyViewerAPI = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "OpenInsight.MetrologyViewerAPI");
|
_OpenInsightMetrologyViewerAPI = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "OpenInsight.MetrologyViewerAPI");
|
||||||
|
_OpenInsightMetrologyViewerFileShare = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "OpenInsight.MetrologyViewerFileShare");
|
||||||
}
|
}
|
||||||
|
|
||||||
void IFileRead.Move(Tuple<string, Test[], JsonElement[], List<FileInfo>> extractResults, Exception exception)
|
void IFileRead.Move(Tuple<string, Test[], JsonElement[], List<FileInfo>> extractResults, Exception exception)
|
||||||
@ -108,40 +109,70 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma warning disable IDE0060
|
#nullable enable
|
||||||
private void PostOpenInsightMetrologyViewerAttachments(string reportFullPath, DateTime dateTime, List<pcl.Description> descriptions)
|
|
||||||
#pragma warning restore IDE0060
|
private string? GetHeaderIdDirectory(long headerId)
|
||||||
{
|
{
|
||||||
string jobIdDirectory = Path.Combine(_JobIdParentDirectory, _Logistics.JobID);
|
string? result = null;
|
||||||
|
int weekNum;
|
||||||
|
string year;
|
||||||
|
string weekDirectory;
|
||||||
|
string checkDirectory;
|
||||||
|
DateTime[] dateTimes = new DateTime[] { _Logistics.DateTimeFromSequence, _Logistics.DateTimeFromSequence.AddDays(-6.66) };
|
||||||
|
foreach (DateTime dateTime in dateTimes)
|
||||||
|
{
|
||||||
|
year = dateTime.Year.ToString();
|
||||||
|
weekNum = _Calendar.GetWeekOfYear(dateTime, CalendarWeekRule.FirstDay, DayOfWeek.Sunday);
|
||||||
|
weekDirectory = Path.Combine(_OpenInsightMetrologyViewerFileShare, dateTime.Year.ToString(), $"WW{weekNum:00}");
|
||||||
|
if (!Directory.Exists(weekDirectory))
|
||||||
|
_ = Directory.CreateDirectory(weekDirectory);
|
||||||
|
checkDirectory = Path.Combine(weekDirectory, $"-{headerId}");
|
||||||
|
if (!Directory.Exists(checkDirectory))
|
||||||
|
continue;
|
||||||
|
result = checkDirectory;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PostOpenInsightMetrologyViewerAttachments(JsonElement[] jsonElements, List<pcl.Description> descriptions)
|
||||||
|
{
|
||||||
|
Shared.Metrology.WS.Results? results;
|
||||||
|
string jobIdDirectory = Path.Combine(Path.GetDirectoryName(_FileConnectorConfiguration.AlternateTargetFolder) ?? throw new Exception(), _Logistics.JobID);
|
||||||
if (!Directory.Exists(jobIdDirectory))
|
if (!Directory.Exists(jobIdDirectory))
|
||||||
_ = Directory.CreateDirectory(jobIdDirectory);
|
_ = Directory.CreateDirectory(jobIdDirectory);
|
||||||
string json;
|
|
||||||
string[] matchDirectories = GetInProcessDirectory(jobIdDirectory);
|
string[] matchDirectories = GetInProcessDirectory(jobIdDirectory);
|
||||||
if (!_StaticRuns.TryGetValue(_Logistics.Sequence, out List<string> collection))
|
if (!_StaticRuns.TryGetValue(_Logistics.Sequence, out List<Shared.Metrology.WS.Results>? wsResults))
|
||||||
json = string.Empty;
|
results = null;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (collection.Count != 1)
|
if (wsResults is null || wsResults.Count != 1)
|
||||||
throw new Exception($"{nameof(_StaticRuns)} has too many values for {_Logistics.Sequence}!");
|
throw new NullReferenceException($"{nameof(wsResults)} {wsResults?.Count} != 1 {_Logistics.Sequence}!");
|
||||||
json = collection[0];
|
results = wsResults[0];
|
||||||
lock (_StaticRuns)
|
|
||||||
_ = _StaticRuns.Remove(_Logistics.Sequence);
|
|
||||||
}
|
}
|
||||||
OpenInsightMetrologyViewer.WSRequest.PostOpenInsightMetrologyViewerAttachments(this, _Logistics, _OpenInsightMetrologyViewerAPI, dateTime, json, descriptions, matchDirectories[0]);
|
int weekOfYear = _Calendar.GetWeekOfYear(_Logistics.DateTimeFromSequence, CalendarWeekRule.FirstDay, DayOfWeek.Sunday);
|
||||||
|
long headerId = !_IsEAFHosted ? -1 : OpenInsightMetrologyViewer.WSRequest.GetHeaderId(this, _Logistics, _OpenInsightMetrologyViewerAPI, _OpenInsightMetrologyViewerFileShare, weekOfYear, results, jsonElements, descriptions);
|
||||||
|
string? headerIdDirectory = GetHeaderIdDirectory(headerId);
|
||||||
|
if (string.IsNullOrEmpty(headerIdDirectory))
|
||||||
|
throw new Exception($"Didn't find header id directory <{headerId}>");
|
||||||
|
OpenInsightMetrologyViewer.WSRequest.PostOpenInsightMetrologyViewerAttachments(this, _Logistics, _OpenInsightMetrologyViewerAPI, descriptions, matchDirectories[0], results, headerIdDirectory);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Tuple<string, Test[], JsonElement[], List<FileInfo>> GetExtractResult(string reportFullPath, DateTime dateTime)
|
private Tuple<string, Test[], JsonElement[], List<FileInfo>> GetExtractResult(string reportFullPath, DateTime dateTime)
|
||||||
{
|
{
|
||||||
|
if (dateTime == DateTime.MinValue)
|
||||||
|
throw new ArgumentNullException(nameof(dateTime));
|
||||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
||||||
Tuple<string, string[], string[]> pdsf = ProcessDataStandardFormat.GetLogisticsColumnsAndBody(reportFullPath);
|
string[] lines = File.ReadAllLines(reportFullPath);
|
||||||
_Logistics = new Logistics(reportFullPath, pdsf.Item1);
|
ProcessDataStandardFormat processDataStandardFormat = ProcessDataStandardFormat.GetProcessDataStandardFormat(reportFullPath, lines);
|
||||||
|
_Logistics = new Logistics(reportFullPath, processDataStandardFormat);
|
||||||
SetFileParameterLotIDToLogisticsMID();
|
SetFileParameterLotIDToLogisticsMID();
|
||||||
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(pdsf);
|
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(reportFullPath, lines, processDataStandardFormat);
|
||||||
List<pcl.Description> descriptions = pcl.ProcessData.GetDescriptions(jsonElements);
|
List<pcl.Description> descriptions = pcl.ProcessData.GetDescriptions(jsonElements);
|
||||||
Test[] tests = (from l in descriptions select (Test)l.Test).ToArray();
|
Test[] tests = (from l in descriptions select (Test)l.Test).ToArray();
|
||||||
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
||||||
PostOpenInsightMetrologyViewerAttachments(reportFullPath, dateTime, descriptions);
|
PostOpenInsightMetrologyViewerAttachments(jsonElements, descriptions);
|
||||||
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(pdsf.Item1, tests, jsonElements, new List<FileInfo>());
|
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics), tests, jsonElements, new List<FileInfo>());
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -17,7 +17,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
private readonly string _JobIdParentDirectory;
|
private readonly string _JobIdParentDirectory;
|
||||||
private readonly string _JobIdProcessParentDirectory;
|
private readonly string _JobIdProcessParentDirectory;
|
||||||
|
|
||||||
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<string>> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) :
|
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)
|
base(new Description(), false, smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null)
|
||||||
{
|
{
|
||||||
_MinFileLength = 10;
|
_MinFileLength = 10;
|
||||||
@ -109,7 +109,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
}
|
}
|
||||||
|
|
||||||
#pragma warning disable IDE0060
|
#pragma warning disable IDE0060
|
||||||
private void DirectoryMove(string reportFullPath, DateTime dateTime, List<pcl.Description> descriptions)
|
private void DirectoryMove(string reportFullPath, DateTime dateTime, JsonElement[] jsonElements, List<pcl.Description> descriptions)
|
||||||
#pragma warning restore IDE0060
|
#pragma warning restore IDE0060
|
||||||
{
|
{
|
||||||
FileInfo fileInfo = new(reportFullPath);
|
FileInfo fileInfo = new(reportFullPath);
|
||||||
@ -122,40 +122,68 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
throw new Exception("Didn't find directory by logistics sequence");
|
throw new Exception("Didn't find directory by logistics sequence");
|
||||||
if (fileInfo.Exists && fileInfo.LastWriteTime < fileInfo.CreationTime)
|
if (fileInfo.Exists && fileInfo.LastWriteTime < fileInfo.CreationTime)
|
||||||
File.SetLastWriteTime(reportFullPath, fileInfo.CreationTime);
|
File.SetLastWriteTime(reportFullPath, fileInfo.CreationTime);
|
||||||
OpenInsightMetrologyViewer.WSRequest wsRequest = new(this, _Logistics, descriptions);
|
OpenInsightMetrologyViewer.WSRequest wsRequest = new(this, _Logistics, jsonElements, descriptions);
|
||||||
JsonSerializerOptions jsonSerializerOptions = new() { WriteIndented = true };
|
JsonSerializerOptions jsonSerializerOptions = new() { WriteIndented = true };
|
||||||
string json = JsonSerializer.Serialize(wsRequest, wsRequest.GetType(), jsonSerializerOptions);
|
string json = JsonSerializer.Serialize(wsRequest, wsRequest.GetType(), jsonSerializerOptions);
|
||||||
string directoryName = $"{Path.GetFileName(matchDirectories[0]).Split(new string[] { logisticsSequence }, StringSplitOptions.None)[0]}{_Logistics.DateTimeFromSequence:yyyy-MM-dd_hh;mm_tt_}{DateTime.Now.Ticks - _Logistics.Sequence}";
|
string directoryName = $"{Path.GetFileName(matchDirectories[0]).Split(new string[] { logisticsSequence }, StringSplitOptions.None)[0]}{_Logistics.DateTimeFromSequence:yyyy-MM-dd_hh;mm_tt_}{DateTime.Now.Ticks - _Logistics.Sequence}";
|
||||||
string destinationJobIdDirectory = Path.Combine(_JobIdProcessParentDirectory, _Logistics.JobID, directoryName);
|
string destinationJobIdDirectory = Path.Combine(_JobIdProcessParentDirectory, _Logistics.JobID, directoryName);
|
||||||
string sequenceDirectory = Path.Combine(destinationJobIdDirectory, logisticsSequence);
|
string sequenceDirectory = Path.Combine(destinationJobIdDirectory, logisticsSequence);
|
||||||
string jsonFileName = Path.Combine(sequenceDirectory, $"{Path.GetFileNameWithoutExtension(reportFullPath)}.json");
|
string jsonFileName = Path.Combine(sequenceDirectory, $"{Path.GetFileNameWithoutExtension(reportFullPath)}.json");
|
||||||
|
MoveMatchingFile(jobIdDirectory, matchDirectories[0]);
|
||||||
Directory.Move(matchDirectories[0], destinationJobIdDirectory);
|
Directory.Move(matchDirectories[0], destinationJobIdDirectory);
|
||||||
if (!Directory.Exists(sequenceDirectory))
|
if (!Directory.Exists(sequenceDirectory))
|
||||||
_ = Directory.CreateDirectory(sequenceDirectory);
|
_ = Directory.CreateDirectory(sequenceDirectory);
|
||||||
File.Copy(reportFullPath, Path.Combine(sequenceDirectory, Path.GetFileName(reportFullPath)), overwrite: true);
|
File.Copy(reportFullPath, Path.Combine(sequenceDirectory, Path.GetFileName(reportFullPath)), overwrite: true);
|
||||||
File.WriteAllText(jsonFileName, json);
|
File.WriteAllText(jsonFileName, json);
|
||||||
|
lock (_StaticRuns)
|
||||||
|
_ = _StaticRuns.Remove(_Logistics.Sequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void MoveMatchingFile(string jobIdDirectory, string matchDirectory)
|
||||||
|
{
|
||||||
|
string checkFile;
|
||||||
|
string jobIdDirectoryFileName;
|
||||||
|
string matchDirectoryFileName;
|
||||||
|
string[] jobIdDirectoryFiles = Directory.GetFiles(jobIdDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||||
|
string[] matchDirectoryFiles = Directory.GetFiles(matchDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||||
|
foreach (string jobIdDirectoryFile in jobIdDirectoryFiles)
|
||||||
|
{
|
||||||
|
jobIdDirectoryFileName = Path.GetFileName(jobIdDirectoryFile);
|
||||||
|
foreach (string matchDirectoryFile in matchDirectoryFiles)
|
||||||
|
{
|
||||||
|
matchDirectoryFileName = Path.GetFileName(matchDirectoryFile);
|
||||||
|
if (jobIdDirectoryFileName.StartsWith(matchDirectoryFileName))
|
||||||
|
{
|
||||||
|
checkFile = Path.Combine(matchDirectory, jobIdDirectoryFileName);
|
||||||
|
if (File.Exists(checkFile))
|
||||||
|
continue;
|
||||||
|
File.Move(jobIdDirectoryFile, checkFile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
||||||
Tuple<string, string[], string[]> pdsf = ProcessDataStandardFormat.GetLogisticsColumnsAndBody(reportFullPath);
|
string[] lines = File.ReadAllLines(reportFullPath);
|
||||||
_Logistics = new Logistics(reportFullPath, pdsf.Item1);
|
ProcessDataStandardFormat processDataStandardFormat = ProcessDataStandardFormat.GetProcessDataStandardFormat(reportFullPath, lines);
|
||||||
|
_Logistics = new Logistics(reportFullPath, processDataStandardFormat);
|
||||||
SetFileParameterLotIDToLogisticsMID();
|
SetFileParameterLotIDToLogisticsMID();
|
||||||
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(pdsf);
|
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(reportFullPath, lines, processDataStandardFormat);
|
||||||
List<pcl.Description> descriptions = pcl.ProcessData.GetDescriptions(jsonElements);
|
List<pcl.Description> descriptions = pcl.ProcessData.GetDescriptions(jsonElements);
|
||||||
Test[] tests = (from l in descriptions select (Test)l.Test).ToArray();
|
Test[] tests = (from l in descriptions select (Test)l.Test).ToArray();
|
||||||
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(pdsf.Item1, tests, jsonElements, new List<FileInfo>());
|
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics), tests, jsonElements, new List<FileInfo>());
|
||||||
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
||||||
DirectoryMove(reportFullPath, dateTime, descriptions);
|
DirectoryMove(reportFullPath, dateTime, jsonElements, descriptions);
|
||||||
else if (!_IsEAFHosted)
|
else if (!_IsEAFHosted)
|
||||||
{
|
{
|
||||||
OpenInsightMetrologyViewer.WSRequest wsRequest = new(this, _Logistics, descriptions);
|
OpenInsightMetrologyViewer.WSRequest wsRequest = new(this, _Logistics, jsonElements, descriptions);
|
||||||
JsonSerializerOptions jsonSerializerOptions = new() { WriteIndented = true };
|
JsonSerializerOptions jsonSerializerOptions = new() { WriteIndented = true };
|
||||||
string json = JsonSerializer.Serialize(wsRequest, wsRequest.GetType(), jsonSerializerOptions);
|
string check = JsonSerializer.Serialize(wsRequest, wsRequest.GetType(), jsonSerializerOptions);
|
||||||
string jsonFileName = Path.ChangeExtension(reportFullPath, ".json");
|
string jsonFileName = Path.ChangeExtension(reportFullPath, ".json");
|
||||||
string historicalText = File.ReadAllText(jsonFileName);
|
string historicalText = File.ReadAllText(jsonFileName);
|
||||||
if (json != historicalText)
|
if (check != historicalText)
|
||||||
throw new Exception("File doesn't match historical!");
|
throw new Exception("File doesn't match historical!");
|
||||||
}
|
}
|
||||||
return results;
|
return results;
|
||||||
|
|||||||
@ -14,7 +14,7 @@ namespace Adaptation.FileHandlers.SPaCe;
|
|||||||
public class FileRead : Shared.FileRead, IFileRead
|
public class FileRead : Shared.FileRead, IFileRead
|
||||||
{
|
{
|
||||||
|
|
||||||
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<string>> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) :
|
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)
|
base(new Description(), false, smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null)
|
||||||
{
|
{
|
||||||
_MinFileLength = 10;
|
_MinFileLength = 10;
|
||||||
@ -117,15 +117,15 @@ 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;
|
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
||||||
Tuple<string, string[], string[]> pdsf = ProcessDataStandardFormat.GetLogisticsColumnsAndBody(reportFullPath);
|
ProcessDataStandardFormat processDataStandardFormat = ProcessDataStandardFormat.GetProcessDataStandardFormat(reportFullPath);
|
||||||
_Logistics = new Logistics(reportFullPath, pdsf.Item1);
|
_Logistics = new Logistics(reportFullPath, processDataStandardFormat);
|
||||||
SetFileParameterLotIDToLogisticsMID();
|
SetFileParameterLotIDToLogisticsMID();
|
||||||
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(pdsf);
|
JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(processDataStandardFormat);
|
||||||
List<Shared.Properties.IDescription> descriptions = GetDuplicatorDescriptions(jsonElements);
|
List<Shared.Properties.IDescription> descriptions = GetDuplicatorDescriptions(jsonElements);
|
||||||
Test[] tests = (from l in descriptions select (Test)l.Test).ToArray();
|
Test[] tests = (from l in descriptions select (Test)l.Test).ToArray();
|
||||||
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
|
||||||
FileCopy(reportFullPath, dateTime, descriptions);
|
FileCopy(reportFullPath, dateTime, descriptions);
|
||||||
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(pdsf.Item1, tests, jsonElements, new List<FileInfo>());
|
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(string.Join(Environment.NewLine, processDataStandardFormat.Logistics), tests, jsonElements, new List<FileInfo>());
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
250
Adaptation/FileHandlers/TransmissionControlProtocol/FileRead.cs
Normal file
250
Adaptation/FileHandlers/TransmissionControlProtocol/FileRead.cs
Normal file
@ -0,0 +1,250 @@
|
|||||||
|
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.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net.Sockets;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Text;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
|
namespace Adaptation.FileHandlers.TransmissionControlProtocol;
|
||||||
|
|
||||||
|
#nullable enable
|
||||||
|
|
||||||
|
public class FileRead : Shared.FileRead, IFileRead
|
||||||
|
{
|
||||||
|
|
||||||
|
private readonly int _Port;
|
||||||
|
private readonly Timer _Timer;
|
||||||
|
private static Record? _Record;
|
||||||
|
private static long _LastWrite;
|
||||||
|
private readonly string _IPAddress;
|
||||||
|
private readonly string _RawDirectory;
|
||||||
|
private readonly int _DelimiterSeconds;
|
||||||
|
private readonly string[] _DelimiterPatterns;
|
||||||
|
private static readonly object _Lock = new();
|
||||||
|
|
||||||
|
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 = 10;
|
||||||
|
_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);
|
||||||
|
string sourceFileLocation = fileConnectorConfiguration.SourceFileLocation.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
|
||||||
|
string? ipAddress = Path.GetDirectoryName(sourceFileLocation);
|
||||||
|
string port = Path.GetFileName(sourceFileLocation);
|
||||||
|
_Timer = new Timer(Callback, null, Timeout.Infinite, Timeout.Infinite);
|
||||||
|
_Port = int.Parse(port, System.Globalization.CultureInfo.InvariantCulture);
|
||||||
|
_DelimiterPatterns = fileConnectorConfiguration.SourceFileFilter.Split('*');
|
||||||
|
_IPAddress = Path.GetFileName(ipAddress) ?? throw new Exception(sourceFileLocation);
|
||||||
|
_RawDirectory = Path.GetDirectoryName(ipAddress) ?? throw new Exception(sourceFileLocation);
|
||||||
|
DateTime fileAgeThresholdTimeOnly = GetFileAgeThresholdTimeOnly(_FileConnectorConfiguration.FileAgeThreshold);
|
||||||
|
_DelimiterSeconds = fileAgeThresholdTimeOnly.Second;
|
||||||
|
if (Debugger.IsAttached || fileConnectorConfiguration.PreProcessingMode == FileConnectorConfiguration.PreProcessingModeEnum.Process || _FileConnectorConfiguration.FileScanningIntervalInSeconds is null)
|
||||||
|
Callback(null);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TimeSpan timeSpan = new(DateTime.Now.AddSeconds(_FileConnectorConfiguration.FileScanningIntervalInSeconds.Value).Ticks - DateTime.Now.Ticks);
|
||||||
|
_ = _Timer.Change((long)timeSpan.TotalMilliseconds, Timeout.Infinite);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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) => throw new Exception(string.Concat("See ", nameof(Callback)));
|
||||||
|
|
||||||
|
Tuple<string, Test[], JsonElement[], List<FileInfo>> IFileRead.ReExtract() => throw new Exception(string.Concat("See ", nameof(Callback)));
|
||||||
|
|
||||||
|
private static DateTime GetFileAgeThresholdTimeOnly(string fileAgeThreshold)
|
||||||
|
{
|
||||||
|
DateTime result = DateTime.MinValue;
|
||||||
|
string[] segments = fileAgeThreshold.Split(':');
|
||||||
|
for (int i = 0; i < segments.Length; i++)
|
||||||
|
{
|
||||||
|
result = i switch
|
||||||
|
{
|
||||||
|
0 => result.AddDays(double.Parse(segments[i])),
|
||||||
|
1 => result.AddHours(double.Parse(segments[i])),
|
||||||
|
2 => result.AddMinutes(double.Parse(segments[i])),
|
||||||
|
3 => result.AddSeconds(double.Parse(segments[i])),
|
||||||
|
_ => throw new Exception(),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void ReadFiles(log4net.ILog log, FileConnectorConfiguration fileConnectorConfiguration, string ipAddress, string rawDirectory)
|
||||||
|
{
|
||||||
|
List<byte> bytes = new();
|
||||||
|
string[] files = Directory.GetFiles(rawDirectory, $"{ipAddress}-*.raw", SearchOption.TopDirectoryOnly);
|
||||||
|
log.Info($"Read {files.Length} files");
|
||||||
|
foreach (string file in files)
|
||||||
|
{
|
||||||
|
foreach (byte @byte in File.ReadAllBytes(file))
|
||||||
|
bytes.Add(@byte);
|
||||||
|
}
|
||||||
|
if (bytes.Count > 0)
|
||||||
|
{
|
||||||
|
string bytesFile = Path.Combine(fileConnectorConfiguration.TargetFileLocation, $"{ipAddress}-{DateTime.Now.Ticks}{fileConnectorConfiguration.TargetFileName}");
|
||||||
|
File.WriteAllBytes(bytesFile, bytes.ToArray());
|
||||||
|
foreach (string file in files)
|
||||||
|
File.Delete(file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void CreateClient(log4net.ILog log, string ipAddress, int port)
|
||||||
|
{
|
||||||
|
log.Debug(ipAddress);
|
||||||
|
TcpClient tcpClient = new(ipAddress, port);
|
||||||
|
NetworkStream networkStream = tcpClient.GetStream();
|
||||||
|
Type baseType = typeof(NetworkStream);
|
||||||
|
PropertyInfo? propertyInfo = baseType.GetProperty("Socket", BindingFlags.Instance | BindingFlags.NonPublic);
|
||||||
|
_Record = new(binaryReader: new(networkStream), binaryWriter: new(networkStream), networkStream: networkStream, propertyInfo: propertyInfo, readTimes: new());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static byte[] GetBytes(NetworkStream networkStream)
|
||||||
|
{
|
||||||
|
List<byte> results = new();
|
||||||
|
byte[] bytes = new byte[1024];
|
||||||
|
do
|
||||||
|
{
|
||||||
|
int count = networkStream.Read(bytes, 0, bytes.Length);
|
||||||
|
if (count > 0)
|
||||||
|
results.AddRange(bytes.Take(count));
|
||||||
|
}
|
||||||
|
while (networkStream.DataAvailable);
|
||||||
|
return results.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Callback()
|
||||||
|
{
|
||||||
|
if (_Record?.NetworkStream is null || _Record.PropertyInfo is null || _Record.PropertyInfo.GetValue(_Record.NetworkStream) is not Socket socket || !socket.Connected)
|
||||||
|
CreateClient(_Log, _IPAddress, _Port);
|
||||||
|
if (_Record is not null)
|
||||||
|
{
|
||||||
|
TimeSpan timeSpan = new(DateTime.Now.Ticks - _LastWrite);
|
||||||
|
if (_LastWrite == 0 || timeSpan.TotalMinutes > 1)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_Record.NetworkStream.WriteByte(Convert.ToByte('\0'));
|
||||||
|
_LastWrite = DateTime.Now.Ticks;
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (_Record?.NetworkStream is not null && _Record.NetworkStream.CanRead && _Record.NetworkStream.DataAvailable)
|
||||||
|
{
|
||||||
|
byte[] bytes = GetBytes(_Record.NetworkStream);
|
||||||
|
_Log.Info($"Read {bytes.Length} bytes");
|
||||||
|
if (bytes.Length > 0)
|
||||||
|
{
|
||||||
|
string path = Path.Combine(_RawDirectory, $"{_IPAddress}-{DateTime.Now.Ticks}.raw");
|
||||||
|
File.WriteAllBytes(path, bytes);
|
||||||
|
string content = Encoding.ASCII.GetString(bytes);
|
||||||
|
_Log.Debug($"Content {content}");
|
||||||
|
foreach (string delimiterPattern in _DelimiterPatterns)
|
||||||
|
{
|
||||||
|
if (content.Contains(delimiterPattern))
|
||||||
|
_Record.ReadTimes.Add(DateTime.Now.Ticks);
|
||||||
|
}
|
||||||
|
if (_Record.ReadTimes.Count > 0)
|
||||||
|
_Record.ReadTimes.Add(DateTime.Now.Ticks);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (_Record is not null && _Record.ReadTimes.Count > 0 && _DelimiterSeconds > 0)
|
||||||
|
{
|
||||||
|
TimeSpan? timeSpan = new(DateTime.Now.Ticks - _Record.ReadTimes.Last());
|
||||||
|
if (timeSpan.Value.TotalSeconds > _DelimiterSeconds)
|
||||||
|
{
|
||||||
|
ReadFiles(_Log, _FileConnectorConfiguration, _IPAddress, _RawDirectory);
|
||||||
|
_Record.ReadTimes.Clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Callback(object? state)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
lock (_Lock)
|
||||||
|
Callback();
|
||||||
|
}
|
||||||
|
catch (Exception exception)
|
||||||
|
{
|
||||||
|
string subject = string.Concat("Exception:", _CellInstanceConnectionName);
|
||||||
|
string body = string.Concat(exception.Message, Environment.NewLine, Environment.NewLine, exception.StackTrace);
|
||||||
|
try
|
||||||
|
{ _SMTP.SendHighPriorityEmailMessage(subject, body); }
|
||||||
|
catch (Exception) { }
|
||||||
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (_FileConnectorConfiguration.FileScanningIntervalInSeconds is null)
|
||||||
|
throw new Exception(_CellInstanceConnectionName);
|
||||||
|
TimeSpan timeSpan = new(DateTime.Now.AddSeconds(_FileConnectorConfiguration.FileScanningIntervalInSeconds.Value).Ticks - DateTime.Now.Ticks);
|
||||||
|
_ = _Timer.Change((long)timeSpan.TotalMilliseconds, Timeout.Infinite);
|
||||||
|
}
|
||||||
|
catch (Exception exception)
|
||||||
|
{
|
||||||
|
string subject = string.Concat("Exception:", _CellInstanceConnectionName);
|
||||||
|
string body = string.Concat(exception.Message, Environment.NewLine, Environment.NewLine, exception.StackTrace);
|
||||||
|
try
|
||||||
|
{ _SMTP.SendHighPriorityEmailMessage(subject, body); }
|
||||||
|
catch (Exception) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,28 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Net.Sockets;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
namespace Adaptation.FileHandlers.TransmissionControlProtocol;
|
||||||
|
|
||||||
|
#nullable enable
|
||||||
|
|
||||||
|
internal class Record
|
||||||
|
{
|
||||||
|
|
||||||
|
public BinaryReader BinaryReader { get; }
|
||||||
|
public BinaryWriter BinaryWriter { get; }
|
||||||
|
public NetworkStream NetworkStream { get; }
|
||||||
|
public PropertyInfo? PropertyInfo { get; }
|
||||||
|
public List<long> ReadTimes { get; }
|
||||||
|
|
||||||
|
public Record(BinaryReader binaryReader, BinaryWriter binaryWriter, NetworkStream networkStream, PropertyInfo? propertyInfo, List<long> readTimes)
|
||||||
|
{
|
||||||
|
BinaryReader = binaryReader;
|
||||||
|
BinaryWriter = binaryWriter;
|
||||||
|
NetworkStream = networkStream;
|
||||||
|
PropertyInfo = propertyInfo;
|
||||||
|
ReadTimes = readTimes;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
15
Adaptation/FileHandlers/pcl/Constant.cs
Normal file
15
Adaptation/FileHandlers/pcl/Constant.cs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
namespace Adaptation.FileHandlers.pcl;
|
||||||
|
|
||||||
|
internal class Constant
|
||||||
|
{
|
||||||
|
|
||||||
|
public string Id { get; } = "ID#";
|
||||||
|
public string Max { get; } = "Max:";
|
||||||
|
public string Min { get; } = "Min:";
|
||||||
|
public string Date { get; } = "Date:";
|
||||||
|
public string StdDev { get; } = "Std Dev:";
|
||||||
|
public string Average { get; } = "Average:";
|
||||||
|
public string Statistics { get; } = "Statistics:";
|
||||||
|
public string DatabaseId { get; } = "Database ID:";
|
||||||
|
|
||||||
|
}
|
||||||
150
Adaptation/FileHandlers/pcl/Convert.cs
Normal file
150
Adaptation/FileHandlers/pcl/Convert.cs
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
using Adaptation.Shared;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace Adaptation.FileHandlers.pcl;
|
||||||
|
|
||||||
|
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(string ghostPCLFileName, Logistics logistics)
|
||||||
|
{
|
||||||
|
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 -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 Dictionary<string, string> PortableDocumentFormatSplit(string pdfTextStripperFileName, string sourcePath, string sourceFileNamePdf)
|
||||||
|
{
|
||||||
|
Dictionary<string, string> results = new();
|
||||||
|
ProcessStartInfo processStartInfo = new(pdfTextStripperFileName, $"s \"{sourceFileNamePdf}\"")
|
||||||
|
{
|
||||||
|
UseShellExecute = false,
|
||||||
|
RedirectStandardError = true,
|
||||||
|
RedirectStandardOutput = true,
|
||||||
|
};
|
||||||
|
Process process = Process.Start(processStartInfo);
|
||||||
|
_ = process.WaitForExit(300000);
|
||||||
|
string text;
|
||||||
|
string checkFile;
|
||||||
|
string[] pdfFiles = Directory.GetFiles(sourcePath, "*.pdf", SearchOption.TopDirectoryOnly);
|
||||||
|
string[] textFiles = Directory.GetFiles(sourcePath, "*.txt", SearchOption.TopDirectoryOnly);
|
||||||
|
foreach (string pdfFile in pdfFiles)
|
||||||
|
{
|
||||||
|
if (pdfFile == sourceFileNamePdf)
|
||||||
|
continue;
|
||||||
|
checkFile = Path.ChangeExtension(pdfFile, ".txt");
|
||||||
|
if (!textFiles.Contains(checkFile))
|
||||||
|
continue;
|
||||||
|
text = File.ReadAllText(checkFile);
|
||||||
|
results.Add(pdfFile, text);
|
||||||
|
}
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static ReadOnlyDictionary<string, string> PDF(Logistics logistics, string ghostPCLFileName, string pdfTextStripperFileName, List<FileInfo> fileInfoCollection)
|
||||||
|
{
|
||||||
|
Dictionary<string, string> results = new();
|
||||||
|
object item;
|
||||||
|
string pageText;
|
||||||
|
string pagePDFFile;
|
||||||
|
string pageTextFile;
|
||||||
|
List<string> sourceFiles = new();
|
||||||
|
string sourceFileNamePdf = ConvertSourceFileToPdf(ghostPCLFileName, logistics);
|
||||||
|
sourceFiles.Add(sourceFileNamePdf);
|
||||||
|
string sourcePath = Path.GetDirectoryName(logistics.ReportFullPath) ?? throw new Exception();
|
||||||
|
string sourceFileNameWithoutExtension = Path.GetFileNameWithoutExtension(logistics.ReportFullPath);
|
||||||
|
string[] txtFiles = Directory.GetFiles(sourcePath, $"{sourceFileNameWithoutExtension}_*.txt", SearchOption.TopDirectoryOnly);
|
||||||
|
if (txtFiles.Length != 0)
|
||||||
|
{
|
||||||
|
txtFiles = (from l in txtFiles orderby l.Length, l select l).ToArray();
|
||||||
|
foreach (string txtFile in txtFiles)
|
||||||
|
{
|
||||||
|
sourceFiles.Add(txtFile);
|
||||||
|
pageText = File.ReadAllText(txtFile);
|
||||||
|
pagePDFFile = Path.ChangeExtension(txtFile, ".pdf");
|
||||||
|
if (!File.Exists(pagePDFFile))
|
||||||
|
continue;
|
||||||
|
results.Add(pagePDFFile, pageText);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (results.Count == 0)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
java.io.File file = new(sourceFileNamePdf);
|
||||||
|
org.apache.pdfbox.util.Splitter splitter = new();
|
||||||
|
org.apache.pdfbox.pdmodel.PDDocument pdDocument = org.apache.pdfbox.pdmodel.PDDocument.load(file);
|
||||||
|
java.util.List list = splitter.split(pdDocument);
|
||||||
|
java.util.ListIterator iterator = list.listIterator();
|
||||||
|
org.apache.pdfbox.util.PDFTextStripper dataStripper = new();
|
||||||
|
for (short i = 1; i < short.MaxValue; i++)
|
||||||
|
{
|
||||||
|
if (!iterator.hasNext())
|
||||||
|
break;
|
||||||
|
item = iterator.next();
|
||||||
|
pagePDFFile = string.Concat(sourcePath, @"\", sourceFileNameWithoutExtension, "_", i, ".pdf");
|
||||||
|
pageTextFile = Path.ChangeExtension(pagePDFFile, ".txt");
|
||||||
|
if (File.Exists(pageTextFile))
|
||||||
|
{
|
||||||
|
pageText = File.ReadAllText(pageTextFile);
|
||||||
|
sourceFiles.Add(pageTextFile);
|
||||||
|
if (item is not org.apache.pdfbox.pdmodel.PDDocument pd)
|
||||||
|
continue;
|
||||||
|
pd.close();
|
||||||
|
}
|
||||||
|
else if (File.Exists(pagePDFFile))
|
||||||
|
{
|
||||||
|
org.apache.pdfbox.pdmodel.PDDocument document = org.apache.pdfbox.pdmodel.PDDocument.load(pagePDFFile);
|
||||||
|
pageText = dataStripper.getText(document);
|
||||||
|
document.close();
|
||||||
|
sourceFiles.Add(pagePDFFile);
|
||||||
|
if (item is not org.apache.pdfbox.pdmodel.PDDocument pd)
|
||||||
|
continue;
|
||||||
|
pd.close();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (item is not org.apache.pdfbox.pdmodel.PDDocument pd)
|
||||||
|
continue;
|
||||||
|
pageText = dataStripper.getText(pd);
|
||||||
|
pd.save(pagePDFFile);
|
||||||
|
sourceFiles.Add(pagePDFFile);
|
||||||
|
pd.close();
|
||||||
|
File.WriteAllText(pageTextFile, pageText);
|
||||||
|
sourceFiles.Add(pageTextFile);
|
||||||
|
}
|
||||||
|
results.Add(pagePDFFile, pageText);
|
||||||
|
}
|
||||||
|
pdDocument.close();
|
||||||
|
}
|
||||||
|
catch (MissingMethodException)
|
||||||
|
{
|
||||||
|
if (results.Count == 0)
|
||||||
|
results = PortableDocumentFormatSplit(pdfTextStripperFileName, sourcePath, sourceFileNamePdf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach (string sourceFile in sourceFiles)
|
||||||
|
fileInfoCollection.Add(new FileInfo(sourceFile));
|
||||||
|
return new(results);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -4,103 +4,106 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
namespace Adaptation.FileHandlers.pcl;
|
namespace Adaptation.FileHandlers.pcl;
|
||||||
|
|
||||||
public class Description : IDescription, Shared.Properties.IDescription
|
public class Description : IDescription, Shared.Properties.IDescription
|
||||||
{
|
{
|
||||||
|
|
||||||
public int Test { get; set; }
|
[JsonPropertyName("EventId")] public int Test { get; set; }
|
||||||
public int Count { get; set; }
|
[JsonPropertyName("Count")] public int Count { get; set; }
|
||||||
public int Index { get; set; }
|
[JsonPropertyName("Index")] public int Index { get; set; }
|
||||||
//
|
//
|
||||||
public string EventName { get; set; }
|
public string EventName { get; set; }
|
||||||
public string NullData { get; set; }
|
public string NullData { get; set; }
|
||||||
public string JobID { get; set; }
|
public string JobID { get; set; }
|
||||||
public string Sequence { get; set; }
|
public string Sequence { get; set; }
|
||||||
public string MesEntity { get; set; }
|
[JsonPropertyName("MesEntity")] public string MesEntity { get; set; }
|
||||||
public string ReportFullPath { get; set; }
|
public string ReportFullPath { get; set; }
|
||||||
public string ProcessJobID { get; set; }
|
public string ProcessJobID { get; set; }
|
||||||
public string MID { get; set; }
|
public string MID { get; set; }
|
||||||
//
|
//
|
||||||
public string Date { get; set; }
|
[JsonPropertyName("Date")] public string Date { get; set; }
|
||||||
public string Employee { get; set; }
|
[JsonPropertyName("Employee")] public string Employee { get; set; }
|
||||||
public string Lot { get; set; }
|
public string Lot { get; set; }
|
||||||
public string PSN { get; set; }
|
[JsonPropertyName("PSN")] public string PSN { get; set; }
|
||||||
public string Reactor { get; set; }
|
[JsonPropertyName("Reactor")] public string Reactor { get; set; }
|
||||||
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; }
|
||||||
//
|
//
|
||||||
public string Comments { get; set; }
|
[JsonPropertyName("Comments")] public string Comments { get; set; }
|
||||||
public string Diameter { get; set; }
|
[JsonPropertyName("Diameter")] public string Diameter { get; set; }
|
||||||
public string Exclusion { get; set; }
|
[JsonPropertyName("Exclusion")] public string Exclusion { get; set; }
|
||||||
public string Gain { get; set; }
|
[JsonPropertyName("Gain")] public string Gain { get; set; }
|
||||||
public string HeaderUniqueId { get; set; }
|
public string HeaderUniqueId { get; set; }
|
||||||
public string Laser { get; set; }
|
[JsonPropertyName("Laser")] public string Laser { get; set; }
|
||||||
public string ParseErrorText { get; set; }
|
[JsonPropertyName("ParseErrorText")] public string ParseErrorText { get; set; }
|
||||||
public string RDS { get; set; }
|
[JsonPropertyName("RDS")] public string RDS { get; set; }
|
||||||
public string Slot { get; set; }
|
[JsonPropertyName("WaferId")] public string Slot { get; set; }
|
||||||
public string UniqueId { get; set; }
|
public string UniqueId { get; set; }
|
||||||
//
|
//
|
||||||
public string AreaCount { get; set; }
|
[JsonPropertyName("AreaCount")] public string AreaCount { get; set; }
|
||||||
public string AreaCountAvg { get; set; }
|
[JsonPropertyName("AreaCountAvg")] public string AreaCountAvg { get; set; }
|
||||||
public string AreaCountMax { get; set; }
|
[JsonPropertyName("AreaCountMax")] public string AreaCountMax { get; set; }
|
||||||
public string AreaCountMin { get; set; }
|
[JsonPropertyName("AreaCountMin")] public string AreaCountMin { get; set; }
|
||||||
public string AreaCountStdDev { get; set; }
|
[JsonPropertyName("AreaCountStdDev")] public string AreaCountStdDev { get; set; }
|
||||||
public string AreaTotal { get; set; }
|
[JsonPropertyName("WaferAreaTotal")] public string AreaTotal { get; set; }
|
||||||
public string AreaTotalAvg { get; set; }
|
[JsonPropertyName("AreaTotalAvg")] public string AreaTotalAvg { get; set; }
|
||||||
public string AreaTotalMax { get; set; }
|
[JsonPropertyName("AreaTotalMax")] public string AreaTotalMax { get; set; }
|
||||||
public string AreaTotalMin { get; set; }
|
[JsonPropertyName("AreaTotalMin")] public string AreaTotalMin { get; set; }
|
||||||
public string AreaTotalStdDev { get; set; }
|
[JsonPropertyName("AreaTotalStdDev")] public string AreaTotalStdDev { get; set; }
|
||||||
public string Bin1 { get; set; }
|
[JsonPropertyName("Bin1")] public string Bin1 { get; set; }
|
||||||
public string Bin2 { get; set; }
|
[JsonPropertyName("Bin2")] public string Bin2 { get; set; }
|
||||||
public string Bin3 { get; set; }
|
[JsonPropertyName("Bin3")] public string Bin3 { get; set; }
|
||||||
public string Bin4 { get; set; }
|
[JsonPropertyName("Bin4")] public string Bin4 { get; set; }
|
||||||
public string Bin5 { get; set; }
|
[JsonPropertyName("Bin5")] public string Bin5 { get; set; }
|
||||||
public string Bin6 { get; set; }
|
[JsonPropertyName("Bin6")] public string Bin6 { get; set; }
|
||||||
public string Bin7 { get; set; }
|
[JsonPropertyName("Bin7")] public string Bin7 { get; set; }
|
||||||
public string Bin8 { get; set; }
|
[JsonPropertyName("Bin8")] public string Bin8 { get; set; }
|
||||||
public string HazeAverage { get; set; }
|
[JsonPropertyName("WaferHazeAverage")] public string HazeAverage { get; set; }
|
||||||
public string HazeAverageAvg { get; set; }
|
[JsonPropertyName("HazeAverageAvg")] public string HazeAverageAvg { get; set; }
|
||||||
public string HazeAverageMax { get; set; }
|
[JsonPropertyName("HazeAverageMax")] public string HazeAverageMax { get; set; }
|
||||||
public string HazeAverageMin { get; set; }
|
[JsonPropertyName("HazeAverageMin")] public string HazeAverageMin { get; set; }
|
||||||
public string HazeAverageStdDev { get; set; }
|
[JsonPropertyName("HazeAverageStdDev")] public string HazeAverageStdDev { get; set; }
|
||||||
public string HazePeak { get; set; }
|
[JsonPropertyName("HazePeak")] public string HazePeak { get; set; }
|
||||||
public string HazeRegion { get; set; }
|
[JsonPropertyName("WaferHazeRegion")] public string HazeRegion { get; set; }
|
||||||
public string HazeRegionAvg { get; set; }
|
[JsonPropertyName("HazeRegionAvg")] public string HazeRegionAvg { get; set; }
|
||||||
public string HazeRegionMax { get; set; }
|
[JsonPropertyName("HazeRegionMax")] public string HazeRegionMax { get; set; }
|
||||||
public string HazeRegionMin { get; set; }
|
[JsonPropertyName("HazeRegionMin")] public string HazeRegionMin { get; set; }
|
||||||
public string HazeRegionStdDev { get; set; }
|
[JsonPropertyName("HazeRegionStdDev")] public string HazeRegionStdDev { get; set; }
|
||||||
public string HazeRng { get; set; }
|
[JsonPropertyName("HazeRng")] public string HazeRng { get; set; }
|
||||||
public string LPDCM2 { get; set; }
|
[JsonPropertyName("LPDCM2")] public string LPDCM2 { get; set; }
|
||||||
public string LPDCM2Avg { get; set; }
|
[JsonPropertyName("LPDCM2Avg")] public string LPDCM2Avg { get; set; }
|
||||||
public string LPDCM2Max { get; set; }
|
[JsonPropertyName("LPDCM2Max")] public string LPDCM2Max { get; set; }
|
||||||
public string LPDCM2Min { get; set; }
|
[JsonPropertyName("LPDCM2Min")] public string LPDCM2Min { get; set; }
|
||||||
public string LPDCM2StdDev { get; set; }
|
[JsonPropertyName("LPDCM2StdDev")] public string LPDCM2StdDev { get; set; }
|
||||||
public string LPDCount { get; set; }
|
[JsonPropertyName("LPDCount")] public string LPDCount { get; set; }
|
||||||
public string LPDCountAvg { get; set; }
|
[JsonPropertyName("LPDCountAvg")] public string LPDCountAvg { get; set; }
|
||||||
public string LPDCountMax { get; set; }
|
[JsonPropertyName("LPDCountMax")] public string LPDCountMax { get; set; }
|
||||||
public string LPDCountMin { get; set; }
|
[JsonPropertyName("LPDCountMin")] public string LPDCountMin { get; set; }
|
||||||
public string LPDCountStdDev { get; set; }
|
[JsonPropertyName("LPDCountStdDev")] public string LPDCountStdDev { get; set; }
|
||||||
public string Mean { get; set; }
|
[JsonPropertyName("Mean")] public string Mean { get; set; }
|
||||||
public string ScratchCount { get; set; }
|
[JsonPropertyName("ScratchCount")] public string ScratchCount { get; set; }
|
||||||
public string ScratchCountAvg { get; set; }
|
[JsonPropertyName("ScratchCountAvg")] public string ScratchCountAvg { get; set; }
|
||||||
public string ScratchCountMax { get; set; }
|
[JsonPropertyName("ScratchCountMax")] public string ScratchCountMax { get; set; }
|
||||||
public string ScratchCountMin { get; set; }
|
[JsonPropertyName("ScratchCountMin")] public string ScratchCountMin { get; set; }
|
||||||
public string ScratchCountStdDev { get; set; }
|
[JsonPropertyName("ScratchCountStdDev")] public string ScratchCountStdDev { get; set; }
|
||||||
public string ScratchTotal { get; set; }
|
[JsonPropertyName("WaferScratchTotal")] public string ScratchTotal { get; set; }
|
||||||
public string ScratchTotalAvg { get; set; }
|
[JsonPropertyName("ScratchTotalAvg")] public string ScratchTotalAvg { get; set; }
|
||||||
public string ScratchTotalMax { get; set; }
|
[JsonPropertyName("ScratchTotalMax")] public string ScratchTotalMax { get; set; }
|
||||||
public string ScratchTotalMin { get; set; }
|
[JsonPropertyName("ScratchTotalMin")] public string ScratchTotalMin { get; set; }
|
||||||
public string ScratchTotalStdDev { get; set; }
|
[JsonPropertyName("ScratchTotalStdDev")] public string ScratchTotalStdDev { get; set; }
|
||||||
public string Sort { get; set; }
|
[JsonPropertyName("Sort")] public string Sort { get; set; }
|
||||||
public string StdDev { get; set; }
|
[JsonPropertyName("StdDev")] public string StdDev { get; set; }
|
||||||
public string SumOfDefects { get; set; }
|
[JsonPropertyName("SumOfDefects")] public string SumOfDefects { get; set; }
|
||||||
public string SumOfDefectsAvg { get; set; }
|
[JsonPropertyName("SumOfDefectsAvg")] public string SumOfDefectsAvg { get; set; }
|
||||||
public string SumOfDefectsMax { get; set; }
|
[JsonPropertyName("SumOfDefectsMax")] public string SumOfDefectsMax { get; set; }
|
||||||
public string SumOfDefectsMin { get; set; }
|
[JsonPropertyName("SumOfDefectsMin")] public string SumOfDefectsMin { get; set; }
|
||||||
public string SumOfDefectsStdDev { get; set; }
|
[JsonPropertyName("SumOfDefectsStdDev")] public string SumOfDefectsStdDev { get; set; }
|
||||||
public string Thresh { get; set; }
|
[JsonPropertyName("Thresh")] public string Thresh { get; set; }
|
||||||
public string Thruput { get; set; }
|
[JsonPropertyName("Thruput")] public string Thruput { get; set; }
|
||||||
|
|
||||||
string IDescription.GetEventDescription() => "File Has been read and parsed";
|
string IDescription.GetEventDescription() => "File Has been read and parsed";
|
||||||
|
|
||||||
@ -306,6 +309,8 @@ public class Description : IDescription, Shared.Properties.IDescription
|
|||||||
PSN = processData.PSN,
|
PSN = processData.PSN,
|
||||||
Reactor = processData.Reactor,
|
Reactor = processData.Reactor,
|
||||||
Recipe = processData.Recipe,
|
Recipe = processData.Recipe,
|
||||||
|
IndexOf = nameof(IndexOf),
|
||||||
|
AttemptCounter = nameof(AttemptCounter),
|
||||||
//
|
//
|
||||||
Comments = detail.Comments,
|
Comments = detail.Comments,
|
||||||
Diameter = detail.Diameter,
|
Diameter = detail.Diameter,
|
||||||
@ -414,6 +419,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),
|
||||||
//
|
//
|
||||||
Comments = nameof(Comments),
|
Comments = nameof(Comments),
|
||||||
Diameter = nameof(Diameter),
|
Diameter = nameof(Diameter),
|
||||||
@ -492,4 +499,16 @@ public class Description : IDescription, Shared.Properties.IDescription
|
|||||||
|
|
||||||
internal static string GetDateFormat() => "MM/dd/yyyy hh:mm:ss tt";
|
internal static string GetDateFormat() => "MM/dd/yyyy hh:mm:ss tt";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[JsonSourceGenerationOptions(WriteIndented = true, NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)]
|
||||||
|
[JsonSerializable(typeof(Description))]
|
||||||
|
internal partial class DescriptionSourceGenerationContext : JsonSerializerContext
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[JsonSourceGenerationOptions(WriteIndented = true, NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)]
|
||||||
|
[JsonSerializable(typeof(Description[]))]
|
||||||
|
internal partial class DescriptionArraySourceGenerationContext : JsonSerializerContext
|
||||||
|
{
|
||||||
}
|
}
|
||||||
@ -1,46 +1,60 @@
|
|||||||
namespace Adaptation.FileHandlers.pcl;
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace Adaptation.FileHandlers.pcl;
|
||||||
|
|
||||||
public class Detail
|
public class Detail
|
||||||
{
|
{
|
||||||
|
|
||||||
public long Id { get; set; }
|
public long Id { get; set; }
|
||||||
public string AreaCount { get; set; }
|
[JsonPropertyName("AreaCount")] public string AreaCount { get; set; }
|
||||||
public string AreaTotal { get; set; }
|
[JsonPropertyName("WaferAreaTotal")] public string AreaTotal { get; set; } // different name
|
||||||
public string Bin1 { get; set; }
|
[JsonPropertyName("Bin1")] public string Bin1 { get; set; }
|
||||||
public string Bin2 { get; set; }
|
[JsonPropertyName("Bin2")] public string Bin2 { get; set; }
|
||||||
public string Bin3 { get; set; }
|
[JsonPropertyName("Bin3")] public string Bin3 { get; set; }
|
||||||
public string Bin4 { get; set; }
|
[JsonPropertyName("Bin4")] public string Bin4 { get; set; }
|
||||||
public string Bin5 { get; set; }
|
[JsonPropertyName("Bin5")] public string Bin5 { get; set; }
|
||||||
public string Bin6 { get; set; }
|
[JsonPropertyName("Bin6")] public string Bin6 { get; set; }
|
||||||
public string Bin7 { get; set; }
|
[JsonPropertyName("Bin7")] public string Bin7 { get; set; }
|
||||||
public string Bin8 { get; set; }
|
[JsonPropertyName("Bin8")] public string Bin8 { get; set; }
|
||||||
public string Comments { get; set; }
|
[JsonPropertyName("Comments")] public string Comments { get; set; }
|
||||||
public string Date { get; set; }
|
[JsonPropertyName("Date")] public string Date { get; set; }
|
||||||
public string Diameter { get; set; }
|
[JsonPropertyName("Diameter")] public string Diameter { get; set; }
|
||||||
public string Exclusion { get; set; }
|
[JsonPropertyName("Exclusion")] public string Exclusion { get; set; }
|
||||||
public string Gain { get; set; }
|
[JsonPropertyName("Gain")] public string Gain { get; set; }
|
||||||
public string HazeAverage { get; set; }
|
[JsonPropertyName("WaferHazeAverage")] public string HazeAverage { get; set; } // different name
|
||||||
public string HazePeak { get; set; }
|
[JsonPropertyName("HazePeak")] public string HazePeak { get; set; }
|
||||||
public string HazeRegion { get; set; }
|
[JsonPropertyName("WaferHazeRegion")] public string HazeRegion { get; set; } // different name
|
||||||
public string HazeRng { get; set; }
|
[JsonPropertyName("HazeRng")] public string HazeRng { get; set; }
|
||||||
public string HeaderUniqueId { get; set; }
|
public string HeaderUniqueId { get; set; }
|
||||||
public string LPDCM2 { get; set; }
|
[JsonPropertyName("LPDCM2")] public string LPDCM2 { get; set; }
|
||||||
public string LPDCount { get; set; }
|
[JsonPropertyName("LPDCount")] public string LPDCount { get; set; }
|
||||||
public string Laser { get; set; }
|
[JsonPropertyName("Laser")] public string Laser { get; set; }
|
||||||
public string Mean { get; set; }
|
[JsonPropertyName("Mean")] public string Mean { get; set; }
|
||||||
public string Recipe { get; set; }
|
[JsonPropertyName("Recipe")] public string Recipe { get; set; }
|
||||||
public string ScratchCount { get; set; }
|
[JsonPropertyName("ScratchCount")] public string ScratchCount { get; set; }
|
||||||
public string ScratchTotal { get; set; }
|
[JsonPropertyName("WaferScratchTotal")] public string ScratchTotal { get; set; } // different name
|
||||||
public string Slot { get; set; }
|
[JsonPropertyName("WaferId")] public string Slot { get; set; } // different name
|
||||||
public string Sort { get; set; }
|
[JsonPropertyName("Sort")] public string Sort { get; set; }
|
||||||
public string StdDev { get; set; }
|
[JsonPropertyName("StdDev")] public string StdDev { get; set; }
|
||||||
public string SumOfDefects { get; set; }
|
[JsonPropertyName("SumOfDefects")] public string SumOfDefects { get; set; }
|
||||||
public string Thresh { get; set; }
|
[JsonPropertyName("Thresh")] public string Thresh { get; set; }
|
||||||
public string Thruput { get; set; }
|
[JsonPropertyName("Thruput")] public string Thruput { get; set; }
|
||||||
public string Title { get; set; }
|
public string Title { get; set; }
|
||||||
public string UniqueId { get; set; }
|
public string UniqueId { get; set; }
|
||||||
public string Data { get; set; }
|
public string Data { get; set; }
|
||||||
#pragma warning disable IDE1006
|
#pragma warning disable IDE1006
|
||||||
public int i { get; set; }
|
public int i { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[JsonSourceGenerationOptions(WriteIndented = true, NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)]
|
||||||
|
[JsonSerializable(typeof(Detail))]
|
||||||
|
internal partial class DetailSourceGenerationContext : JsonSerializerContext
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[JsonSourceGenerationOptions(WriteIndented = true, NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)]
|
||||||
|
[JsonSerializable(typeof(Detail[]))]
|
||||||
|
internal partial class DetailArraySourceGenerationContext : JsonSerializerContext
|
||||||
|
{
|
||||||
}
|
}
|
||||||
@ -4,6 +4,7 @@ using Adaptation.Shared;
|
|||||||
using Adaptation.Shared.Methods;
|
using Adaptation.Shared.Methods;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
@ -15,8 +16,9 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
|
|
||||||
private long? _TickOffset;
|
private long? _TickOffset;
|
||||||
private readonly string _GhostPCLFileName;
|
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<string>> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) :
|
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(), true, smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null)
|
base(new Description(), true, smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null)
|
||||||
{
|
{
|
||||||
_MinFileLength = 15;
|
_MinFileLength = 15;
|
||||||
@ -31,6 +33,11 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
_GhostPCLFileName = Path.Combine(AppContext.BaseDirectory, "gpcl6win64.exe");
|
_GhostPCLFileName = Path.Combine(AppContext.BaseDirectory, "gpcl6win64.exe");
|
||||||
if (!File.Exists(_GhostPCLFileName))
|
if (!File.Exists(_GhostPCLFileName))
|
||||||
throw new Exception("Ghost PCL FileName doesn't Exist!");
|
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.Move(Tuple<string, Test[], JsonElement[], List<FileInfo>> extractResults, Exception exception) => Move(extractResults);
|
||||||
@ -98,9 +105,11 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#nullable enable
|
||||||
|
|
||||||
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, null, null, new List<FileInfo>());
|
Tuple<string, Test[], JsonElement[], List<FileInfo>> results = new(string.Empty, Array.Empty<Test>(), Array.Empty<JsonElement>(), new List<FileInfo>());
|
||||||
_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();
|
||||||
@ -108,24 +117,32 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
results.Item4.Add(_Logistics.FileInfo);
|
results.Item4.Add(_Logistics.FileInfo);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
IProcessData iProcessData = new ProcessData(this, _Logistics, results.Item4, _GhostPCLFileName);
|
ReadOnlyDictionary<string, string> pages = Convert.PDF(_Logistics, _GhostPCLFileName, _PDFTextStripperFileName, results.Item4);
|
||||||
if (iProcessData is not ProcessData processData)
|
Run? run = Run.Get(_Logistics, results.Item4, pages);
|
||||||
|
if (run is null)
|
||||||
throw new Exception(string.Concat("A) No Data - ", dateTime.Ticks));
|
throw new Exception(string.Concat("A) No Data - ", dateTime.Ticks));
|
||||||
string mid;
|
IProcessData iProcessData = new ProcessData(this, _Logistics, results.Item4, pages, run);
|
||||||
if (!string.IsNullOrEmpty(processData.Lot) && string.IsNullOrEmpty(processData.Reactor) && string.IsNullOrEmpty(processData.RDS) && string.IsNullOrEmpty(processData.PSN))
|
if (iProcessData is not ProcessData processData)
|
||||||
mid = processData.Lot;
|
results = new(string.Concat("B) No Data - ", dateTime.Ticks), Array.Empty<Test>(), Array.Empty<JsonElement>(), results.Item4);
|
||||||
else if (!string.IsNullOrEmpty(processData.Employee) && string.IsNullOrEmpty(processData.Reactor) && string.IsNullOrEmpty(processData.RDS) && string.IsNullOrEmpty(processData.PSN))
|
|
||||||
mid = processData.Employee;
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mid = string.Concat(processData.Reactor, "-", processData.RDS, "-", processData.PSN);
|
string mid;
|
||||||
mid = Regex.Replace(mid, @"[\\,\/,\:,\*,\?,\"",\<,\>,\|]", "_").Split('\r')[0].Split('\n')[0];
|
if (!string.IsNullOrEmpty(processData.Lot) && string.IsNullOrEmpty(processData.Reactor) && string.IsNullOrEmpty(processData.RDS) && string.IsNullOrEmpty(processData.PSN))
|
||||||
|
mid = processData.Lot;
|
||||||
|
else if (!string.IsNullOrEmpty(processData.Employee) && string.IsNullOrEmpty(processData.Reactor) && string.IsNullOrEmpty(processData.RDS) && string.IsNullOrEmpty(processData.PSN))
|
||||||
|
mid = processData.Employee;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mid = string.Concat(processData.Reactor, "-", processData.RDS, "-", processData.PSN);
|
||||||
|
mid = Regex.Replace(mid, @"[\\,\/,\:,\*,\?,\"",\<,\>,\|]", "_").Split('\r')[0].Split('\n')[0];
|
||||||
|
}
|
||||||
|
SetFileParameterLotID(mid);
|
||||||
|
_Logistics.Update(mid, processData.Reactor);
|
||||||
|
if (iProcessData.Details.Count > 0)
|
||||||
|
results = iProcessData.GetResults(this, _Logistics, results.Item4);
|
||||||
|
else
|
||||||
|
results = new(string.Concat("LOGISTICS_1 - C) No Data - ", dateTime.Ticks), Array.Empty<Test>(), Array.Empty<JsonElement>(), results.Item4);
|
||||||
}
|
}
|
||||||
SetFileParameterLotID(mid);
|
|
||||||
_Logistics.Update(mid, processData.Reactor);
|
|
||||||
if (iProcessData.Details.Count == 0)
|
|
||||||
throw new Exception(string.Concat("B) No Data - ", dateTime.Ticks));
|
|
||||||
results = iProcessData.GetResults(this, _Logistics, results.Item4);
|
|
||||||
}
|
}
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|||||||
341
Adaptation/FileHandlers/pcl/Header.cs
Normal file
341
Adaptation/FileHandlers/pcl/Header.cs
Normal file
@ -0,0 +1,341 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace Adaptation.FileHandlers.pcl;
|
||||||
|
|
||||||
|
#nullable enable
|
||||||
|
|
||||||
|
public class Header
|
||||||
|
{
|
||||||
|
|
||||||
|
public Header(string date,
|
||||||
|
string recipe,
|
||||||
|
string id,
|
||||||
|
ReadOnlyCollection<WaferSummary> waferSummary,
|
||||||
|
string lPDCountMin,
|
||||||
|
string lPDCM2Min,
|
||||||
|
string areaCountMin,
|
||||||
|
string areaTotalMin,
|
||||||
|
string scratchCountMin,
|
||||||
|
string scratchTotalMin,
|
||||||
|
string sumOfDefectsMin,
|
||||||
|
string hazeRegionMin,
|
||||||
|
string hazeAverageMin,
|
||||||
|
string lPDCountMax,
|
||||||
|
string lPDCM2Max,
|
||||||
|
string areaCountMax,
|
||||||
|
string areaTotalMax,
|
||||||
|
string scratchCountMax,
|
||||||
|
string scratchTotalMax,
|
||||||
|
string sumOfDefectsMax,
|
||||||
|
string hazeRegionMax,
|
||||||
|
string hazeAverageMax,
|
||||||
|
string lPDCountAvg,
|
||||||
|
string lPDCM2Avg,
|
||||||
|
string areaCountAvg,
|
||||||
|
string areaTotalAvg,
|
||||||
|
string scratchCountAvg,
|
||||||
|
string scratchTotalAvg,
|
||||||
|
string sumOfDefectsAvg,
|
||||||
|
string hazeRegionAvg,
|
||||||
|
string hazeAverageAvg,
|
||||||
|
string lPDCountStdDev,
|
||||||
|
string lPDCM2StdDev,
|
||||||
|
string areaCountStdDev,
|
||||||
|
string areaTotalStdDev,
|
||||||
|
string scratchCountStdDev,
|
||||||
|
string scratchTotalStdDev,
|
||||||
|
string sumOfDefectsStdDev,
|
||||||
|
string hazeRegionStdDev,
|
||||||
|
string hazeAverageStdDev)
|
||||||
|
{
|
||||||
|
Date = date;
|
||||||
|
Recipe = recipe;
|
||||||
|
Id = id;
|
||||||
|
WaferSummary = waferSummary;
|
||||||
|
LPDCountMin = lPDCountMin;
|
||||||
|
LPDCM2Min = lPDCM2Min;
|
||||||
|
AreaCountMin = areaCountMin;
|
||||||
|
AreaTotalMin = areaTotalMin;
|
||||||
|
ScratchCountMin = scratchCountMin;
|
||||||
|
ScratchTotalMin = scratchTotalMin;
|
||||||
|
SumOfDefectsMin = sumOfDefectsMin;
|
||||||
|
HazeRegionMin = hazeRegionMin;
|
||||||
|
HazeAverageMin = hazeAverageMin;
|
||||||
|
LPDCountMax = lPDCountMax;
|
||||||
|
LPDCM2Max = lPDCM2Max;
|
||||||
|
AreaCountMax = areaCountMax;
|
||||||
|
AreaTotalMax = areaTotalMax;
|
||||||
|
ScratchCountMax = scratchCountMax;
|
||||||
|
ScratchTotalMax = scratchTotalMax;
|
||||||
|
SumOfDefectsMax = sumOfDefectsMax;
|
||||||
|
HazeRegionMax = hazeRegionMax;
|
||||||
|
HazeAverageMax = hazeAverageMax;
|
||||||
|
LPDCountAvg = lPDCountAvg;
|
||||||
|
LPDCM2Avg = lPDCM2Avg;
|
||||||
|
AreaCountAvg = areaCountAvg;
|
||||||
|
AreaTotalAvg = areaTotalAvg;
|
||||||
|
ScratchCountAvg = scratchCountAvg;
|
||||||
|
ScratchTotalAvg = scratchTotalAvg;
|
||||||
|
SumOfDefectsAvg = sumOfDefectsAvg;
|
||||||
|
HazeRegionAvg = hazeRegionAvg;
|
||||||
|
HazeAverageAvg = hazeAverageAvg;
|
||||||
|
LPDCountStdDev = lPDCountStdDev;
|
||||||
|
LPDCM2StdDev = lPDCM2StdDev;
|
||||||
|
AreaCountStdDev = areaCountStdDev;
|
||||||
|
AreaTotalStdDev = areaTotalStdDev;
|
||||||
|
ScratchCountStdDev = scratchCountStdDev;
|
||||||
|
ScratchTotalStdDev = scratchTotalStdDev;
|
||||||
|
SumOfDefectsStdDev = sumOfDefectsStdDev;
|
||||||
|
HazeRegionStdDev = hazeRegionStdDev;
|
||||||
|
HazeAverageStdDev = hazeAverageStdDev;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Date { get; }
|
||||||
|
public string Recipe { get; }
|
||||||
|
public string Id { get; }
|
||||||
|
public ReadOnlyCollection<WaferSummary> WaferSummary { get; }
|
||||||
|
public string LPDCountMin { get; }
|
||||||
|
public string LPDCM2Min { get; }
|
||||||
|
public string AreaCountMin { get; }
|
||||||
|
public string AreaTotalMin { get; }
|
||||||
|
public string ScratchCountMin { get; }
|
||||||
|
public string ScratchTotalMin { get; }
|
||||||
|
public string SumOfDefectsMin { get; }
|
||||||
|
public string HazeRegionMin { get; }
|
||||||
|
public string HazeAverageMin { get; }
|
||||||
|
public string LPDCountMax { get; }
|
||||||
|
public string LPDCM2Max { get; }
|
||||||
|
public string AreaCountMax { get; }
|
||||||
|
public string AreaTotalMax { get; }
|
||||||
|
public string ScratchCountMax { get; }
|
||||||
|
public string ScratchTotalMax { get; }
|
||||||
|
public string SumOfDefectsMax { get; }
|
||||||
|
public string HazeRegionMax { get; }
|
||||||
|
public string HazeAverageMax { get; }
|
||||||
|
public string LPDCountAvg { get; }
|
||||||
|
public string LPDCM2Avg { get; }
|
||||||
|
public string AreaCountAvg { get; }
|
||||||
|
public string AreaTotalAvg { get; }
|
||||||
|
public string ScratchCountAvg { get; }
|
||||||
|
public string ScratchTotalAvg { get; }
|
||||||
|
public string SumOfDefectsAvg { get; }
|
||||||
|
public string HazeRegionAvg { get; }
|
||||||
|
public string HazeAverageAvg { get; }
|
||||||
|
public string LPDCountStdDev { get; }
|
||||||
|
public string LPDCM2StdDev { get; }
|
||||||
|
public string AreaCountStdDev { get; }
|
||||||
|
public string AreaTotalStdDev { get; }
|
||||||
|
public string ScratchCountStdDev { get; }
|
||||||
|
public string ScratchTotalStdDev { get; }
|
||||||
|
public string SumOfDefectsStdDev { get; }
|
||||||
|
public string HazeRegionStdDev { get; }
|
||||||
|
public string HazeAverageStdDev { get; }
|
||||||
|
|
||||||
|
private static ReadOnlyCollection<string> FixToEolArray(string[] toEol)
|
||||||
|
{
|
||||||
|
List<string> results = new();
|
||||||
|
const int MAX_COLUMNS = 9;
|
||||||
|
if (toEol.Length >= MAX_COLUMNS)
|
||||||
|
results.AddRange(toEol);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
string leftVal, rightVal;
|
||||||
|
List<string> toEolList = new(toEol);
|
||||||
|
int[] mColumnWidths = new int[MAX_COLUMNS] { 8, 6, 6, 6, 6, 7, 7, 5, 7 };
|
||||||
|
if (string.IsNullOrEmpty(toEolList[toEolList.Count - 1]))
|
||||||
|
toEolList.RemoveAt(toEolList.Count - 1);
|
||||||
|
for (int i = toEolList.Count; i < MAX_COLUMNS; i++)
|
||||||
|
toEolList.Insert(0, "");
|
||||||
|
for (int i = MAX_COLUMNS - 1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
if (toEolList[i].Length > mColumnWidths[i])
|
||||||
|
{
|
||||||
|
leftVal = toEolList[i].Substring(0, toEolList[i].Length - mColumnWidths[i]);
|
||||||
|
rightVal = toEolList[i].Substring(leftVal.Length);
|
||||||
|
toEolList[i] = rightVal;
|
||||||
|
toEolList.Insert(i, leftVal);
|
||||||
|
if (string.IsNullOrEmpty(toEolList[0]))
|
||||||
|
toEolList.RemoveAt(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
results.AddRange(toEolList);
|
||||||
|
}
|
||||||
|
return results.AsReadOnly();
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static void ScanPast(string text, int[] i, string search)
|
||||||
|
{
|
||||||
|
int num = text.IndexOf(search, i[0]);
|
||||||
|
if (num > -1)
|
||||||
|
i[0] = num + search.Length;
|
||||||
|
else
|
||||||
|
i[0] = text.Length;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static string GetBefore(string text, int[] i, string search)
|
||||||
|
{
|
||||||
|
int num = text.IndexOf(search, i[0]);
|
||||||
|
if (num > -1)
|
||||||
|
{
|
||||||
|
string str = text.Substring(i[0], num - i[0]);
|
||||||
|
i[0] = num + search.Length;
|
||||||
|
return str.Trim();
|
||||||
|
}
|
||||||
|
string str1 = text.Substring(i[0]);
|
||||||
|
i[0] = text.Length;
|
||||||
|
return str1.Trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string GetBefore(string text, int[] i, string search, bool trim)
|
||||||
|
{
|
||||||
|
if (trim)
|
||||||
|
return GetBefore(text, i, search);
|
||||||
|
int num = text.IndexOf(search, i[0]);
|
||||||
|
if (num > -1)
|
||||||
|
{
|
||||||
|
string str = text.Substring(i[0], num - i[0]);
|
||||||
|
i[0] = num + search.Length;
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
string str1 = text.Substring(i[0]);
|
||||||
|
i[0] = text.Length;
|
||||||
|
return str1;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static string GetToEOL(string text, int[] i) =>
|
||||||
|
GetBefore(text, i, "\n");
|
||||||
|
|
||||||
|
private static string GetToEOL(string text, int[] i, bool trim)
|
||||||
|
{
|
||||||
|
if (trim)
|
||||||
|
return GetToEOL(text, i);
|
||||||
|
return GetBefore(text, i, "\n", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string? GetText(ReadOnlyDictionary<string, string> pages, Constant constant)
|
||||||
|
{
|
||||||
|
string? text;
|
||||||
|
string? headerFileName = null;
|
||||||
|
foreach (KeyValuePair<string, string> keyValuePair in pages)
|
||||||
|
{
|
||||||
|
if (!pages.TryGetValue(keyValuePair.Key, out text))
|
||||||
|
throw new Exception();
|
||||||
|
if (!text.Contains(constant.Statistics))
|
||||||
|
continue;
|
||||||
|
headerFileName = keyValuePair.Key;
|
||||||
|
}
|
||||||
|
headerFileName ??= pages.Count == 0 ? string.Empty : pages.ElementAt(pages.Count - 1).Key;
|
||||||
|
if (pages.Count == 0 || !pages.TryGetValue(headerFileName, out text))
|
||||||
|
text = null;
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static Header Get(ReadOnlyDictionary<string, string> pages, Constant constant)
|
||||||
|
{
|
||||||
|
Header? result;
|
||||||
|
string id;
|
||||||
|
string[] segmentsB;
|
||||||
|
string[] segmentsC;
|
||||||
|
int[] i = new int[] { 0 };
|
||||||
|
WaferSummary waferSummary;
|
||||||
|
List<WaferSummary> collection = new();
|
||||||
|
string? text = GetText(pages, constant);
|
||||||
|
if (string.IsNullOrEmpty(text))
|
||||||
|
throw new Exception();
|
||||||
|
ScanPast(text, i, constant.Date);
|
||||||
|
string date = GetToEOL(text, i);
|
||||||
|
ScanPast(text, i, "Recipe ID:");
|
||||||
|
string recipe = GetBefore(text, i, "LotID:");
|
||||||
|
recipe = recipe.Replace(";", "");
|
||||||
|
if (text.Contains("[]"))
|
||||||
|
id = GetBefore(text, i, "[]");
|
||||||
|
else if (text.Contains("[7]"))
|
||||||
|
id = GetBefore(text, i, "[7]");
|
||||||
|
else
|
||||||
|
id = GetBefore(text, i, "[");
|
||||||
|
ScanPast(text, i, "*");
|
||||||
|
string[] segments = text.Substring(i[0]).Split('*');
|
||||||
|
string[] split = new string[] { Environment.NewLine };
|
||||||
|
foreach (string segment in segments)
|
||||||
|
{
|
||||||
|
segmentsB = segment.Split(split, StringSplitOptions.None);
|
||||||
|
segmentsC = segmentsB[0].Split(' ');
|
||||||
|
waferSummary = new(id: segmentsC.Length < 1 ? string.Empty : segmentsC[0].Trim(),
|
||||||
|
lPDCount: segmentsC.Length < 2 ? string.Empty : segmentsC[1].Trim(),
|
||||||
|
lPDCM2: segmentsC.Length < 3 ? string.Empty : segmentsC[2].Trim(),
|
||||||
|
areaCount: segmentsC.Length < 4 ? string.Empty : segmentsC[3].Trim(),
|
||||||
|
areaTotal: segmentsC.Length < 5 ? string.Empty : segmentsC[4].Trim(),
|
||||||
|
scratchCount: segmentsC.Length < 6 ? string.Empty : segmentsC[5].Trim(),
|
||||||
|
scratchTotal: segmentsC.Length < 7 ? string.Empty : segmentsC[6].Trim(),
|
||||||
|
sumOfDefects: segmentsC.Length < 8 ? string.Empty : segmentsC[7].Trim(),
|
||||||
|
hazeRegion: segmentsC.Length < 9 ? string.Empty : segmentsC[8].Trim(),
|
||||||
|
hazeAverage: segmentsC.Length < 10 ? string.Empty : segmentsC[9].Trim(),
|
||||||
|
grade: segmentsC.Length < 11 ? string.Empty : segmentsC[10].Trim());
|
||||||
|
collection.Add(waferSummary);
|
||||||
|
}
|
||||||
|
ScanPast(text, i, constant.Min);
|
||||||
|
string[] preToEol1 = GetToEOL(text, i, false).Trim().Split(' ');
|
||||||
|
ReadOnlyCollection<string> toEol1 = FixToEolArray(preToEol1);
|
||||||
|
ScanPast(text, i, constant.Max);
|
||||||
|
string[] preToEol2 = GetToEOL(text, i, false).Trim().Split(' ');
|
||||||
|
ReadOnlyCollection<string> toEol2 = FixToEolArray(preToEol2);
|
||||||
|
ScanPast(text, i, constant.Average);
|
||||||
|
string[] preToEol3 = GetToEOL(text, i, false).Trim().Split(' ');
|
||||||
|
ReadOnlyCollection<string> toEol3 = FixToEolArray(preToEol3);
|
||||||
|
ScanPast(text, i, constant.StdDev);
|
||||||
|
string[] preToEol4 = GetToEOL(text, i, false).Trim().Split(' ');
|
||||||
|
ReadOnlyCollection<string> toEol4 = FixToEolArray(preToEol4);
|
||||||
|
result = new(date: date,
|
||||||
|
recipe: recipe,
|
||||||
|
id: id,
|
||||||
|
waferSummary: collection.AsReadOnly(),
|
||||||
|
lPDCountMin: toEol1[0].Trim(),
|
||||||
|
lPDCM2Min: toEol1[1].Trim(),
|
||||||
|
areaCountMin: toEol1[2].Trim(),
|
||||||
|
areaTotalMin: toEol1[3].Trim(),
|
||||||
|
scratchCountMin: toEol1[4].Trim(),
|
||||||
|
scratchTotalMin: toEol1[5].Trim(),
|
||||||
|
sumOfDefectsMin: toEol1[6].Trim(),
|
||||||
|
hazeRegionMin: toEol1[7].Trim(),
|
||||||
|
hazeAverageMin: toEol1[8].Trim(),
|
||||||
|
lPDCountMax: toEol2[0].Trim(),
|
||||||
|
lPDCM2Max: toEol2[1].Trim(),
|
||||||
|
areaCountMax: toEol2[2].Trim(),
|
||||||
|
areaTotalMax: toEol2[3].Trim(),
|
||||||
|
scratchCountMax: toEol2[4].Trim(),
|
||||||
|
scratchTotalMax: toEol2[5].Trim(),
|
||||||
|
sumOfDefectsMax: toEol2[6].Trim(),
|
||||||
|
hazeRegionMax: toEol2[7].Trim(),
|
||||||
|
hazeAverageMax: toEol2[8].Trim(),
|
||||||
|
lPDCountAvg: toEol3[0].Trim(),
|
||||||
|
lPDCM2Avg: toEol3[1].Trim(),
|
||||||
|
areaCountAvg: toEol3[2].Trim(),
|
||||||
|
areaTotalAvg: toEol3[3].Trim(),
|
||||||
|
scratchCountAvg: toEol3[4].Trim(),
|
||||||
|
scratchTotalAvg: toEol3[5].Trim(),
|
||||||
|
sumOfDefectsAvg: toEol3[6].Trim(),
|
||||||
|
hazeRegionAvg: toEol3[7].Trim(),
|
||||||
|
hazeAverageAvg: toEol3[8].Trim(),
|
||||||
|
lPDCountStdDev: toEol4[0].Trim(),
|
||||||
|
lPDCM2StdDev: toEol4[1].Trim(),
|
||||||
|
areaCountStdDev: toEol4[2].Trim(),
|
||||||
|
areaTotalStdDev: toEol4[3].Trim(),
|
||||||
|
scratchCountStdDev: toEol4[4].Trim(),
|
||||||
|
scratchTotalStdDev: toEol4[5].Trim(),
|
||||||
|
sumOfDefectsStdDev: toEol4[6].Trim(),
|
||||||
|
hazeRegionStdDev: toEol4[7].Trim(),
|
||||||
|
hazeAverageStdDev: toEol4[8].Trim());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[JsonSourceGenerationOptions(WriteIndented = true)]
|
||||||
|
[JsonSerializable(typeof(Header))]
|
||||||
|
internal partial class PCLHeaderSourceGenerationContext : JsonSerializerContext
|
||||||
|
{
|
||||||
|
}
|
||||||
@ -3,6 +3,7 @@ using Adaptation.Shared.Methods;
|
|||||||
using log4net;
|
using log4net;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
@ -72,9 +73,8 @@ public class ProcessData : IProcessData
|
|||||||
|
|
||||||
List<object> Shared.Properties.IProcessData.Details => _Details;
|
List<object> Shared.Properties.IProcessData.Details => _Details;
|
||||||
|
|
||||||
public ProcessData(IFileRead fileRead, Logistics logistics, List<FileInfo> fileInfoCollection, string ghostPCLFileName)
|
internal ProcessData(IFileRead fileRead, Logistics logistics, List<FileInfo> fileInfoCollection, ReadOnlyDictionary<string, string> pages, Run run)
|
||||||
{
|
{
|
||||||
fileInfoCollection.Clear();
|
|
||||||
_Details = new List<object>();
|
_Details = new List<object>();
|
||||||
_I = 0;
|
_I = 0;
|
||||||
_Data = string.Empty;
|
_Data = string.Empty;
|
||||||
@ -82,7 +82,7 @@ public class ProcessData : IProcessData
|
|||||||
Date = GetDateTime(logistics);
|
Date = GetDateTime(logistics);
|
||||||
MesEntity = logistics.MesEntity;
|
MesEntity = logistics.MesEntity;
|
||||||
_Log = LogManager.GetLogger(typeof(ProcessData));
|
_Log = LogManager.GetLogger(typeof(ProcessData));
|
||||||
Parse(fileRead, logistics, fileInfoCollection, ghostPCLFileName);
|
Parse(fileRead, logistics, fileInfoCollection, pages, run);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static DateTime GetDateTime(Logistics logistics) =>
|
private static DateTime GetDateTime(Logistics logistics) =>
|
||||||
@ -106,9 +106,13 @@ public class ProcessData : IProcessData
|
|||||||
if (description.Test != (int)tests[i])
|
if (description.Test != (int)tests[i])
|
||||||
throw new Exception();
|
throw new Exception();
|
||||||
}
|
}
|
||||||
|
FileInfo fileInfo = new($"{logistics.ReportFullPath}.descriptions.json");
|
||||||
List<Description> fileReadDescriptions = (from l in descriptions select (Description)l).ToList();
|
List<Description> fileReadDescriptions = (from l in descriptions select (Description)l).ToList();
|
||||||
string json = JsonSerializer.Serialize(fileReadDescriptions, fileReadDescriptions.GetType());
|
string json = JsonSerializer.Serialize(fileReadDescriptions, fileReadDescriptions.GetType());
|
||||||
JsonElement[] jsonElements = JsonSerializer.Deserialize<JsonElement[]>(json);
|
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);
|
results = new Tuple<string, Test[], JsonElement[], List<FileInfo>>(logistics.Logistics1[0], tests.ToArray(), jsonElements, fileInfoCollection);
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
@ -232,7 +236,8 @@ public class ProcessData : IProcessData
|
|||||||
return GetBefore("\n", false);
|
return GetBefore("\n", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private string GetToText(string text) => _Data.Substring(_I, _Data.IndexOf(text, _I) - _I).Trim();
|
private string GetToText(string text) =>
|
||||||
|
_Data.Substring(_I, _Data.IndexOf(text, _I) - _I).Trim();
|
||||||
|
|
||||||
private string GetToken()
|
private string GetToken()
|
||||||
{
|
{
|
||||||
@ -380,7 +385,7 @@ public class ProcessData : IProcessData
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Set(ILogistics logistics)
|
private void Set(ILogistics logistics, Run run)
|
||||||
{
|
{
|
||||||
string lot;
|
string lot;
|
||||||
string rds;
|
string rds;
|
||||||
@ -389,14 +394,9 @@ public class ProcessData : IProcessData
|
|||||||
string reactor;
|
string reactor;
|
||||||
string employee;
|
string employee;
|
||||||
ScanPast("Recipe ID:");
|
ScanPast("Recipe ID:");
|
||||||
recipe = GetBefore("LotID:");
|
_ = GetBefore("LotID:");
|
||||||
recipe = recipe.Replace(";", "");
|
lot = run.Header.Id;
|
||||||
if (_Data.Contains("[]"))
|
recipe = run.Header.Recipe;
|
||||||
lot = GetBefore("[]");
|
|
||||||
else if (_Data.Contains("[7]"))
|
|
||||||
lot = GetBefore("[7]");
|
|
||||||
else
|
|
||||||
lot = GetBefore("[");
|
|
||||||
Descriptor descriptor = GetDescriptor(lot);
|
Descriptor descriptor = GetDescriptor(lot);
|
||||||
lot = descriptor.Lot;
|
lot = descriptor.Lot;
|
||||||
psn = descriptor.PSN;
|
psn = descriptor.PSN;
|
||||||
@ -412,19 +412,17 @@ public class ProcessData : IProcessData
|
|||||||
UniqueId = string.Format("{0}_{1}_{2}", logistics.JobID, lot, Path.GetFileNameWithoutExtension(logistics.ReportFullPath));
|
UniqueId = string.Format("{0}_{1}_{2}", logistics.JobID, lot, Path.GetFileNameWithoutExtension(logistics.ReportFullPath));
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma warning disable IDE0060
|
private void ParseLotSummary(ILogistics logistics, ReadOnlyDictionary<string, string> pages, Run run, string headerFileName, Dictionary<string, List<Detail>> slots)
|
||||||
private void ParseLotSummary(IFileRead fileRead, ILogistics logistics, string headerFileName, Dictionary<string, string> pages, Dictionary<string, List<Detail>> slots)
|
|
||||||
#pragma warning restore IDE0060
|
|
||||||
{
|
{
|
||||||
_I = 0;
|
_I = 0;
|
||||||
ParseErrorText = string.Empty;
|
ParseErrorText = string.Empty;
|
||||||
if (!pages.ContainsKey(headerFileName))
|
if (!pages.TryGetValue(headerFileName, out string value))
|
||||||
throw new Exception();
|
throw new Exception();
|
||||||
_I = 0;
|
_I = 0;
|
||||||
_Data = pages[headerFileName];
|
_Data = value;
|
||||||
ScanPast("Date:");
|
ScanPast("Date:");
|
||||||
_ = GetToEOL();
|
_ = GetToEOL();
|
||||||
Set(logistics);
|
Set(logistics, run);
|
||||||
// determine number of wafers and their slot numbers
|
// determine number of wafers and their slot numbers
|
||||||
_Log.Debug(_Data.Substring(_I));
|
_Log.Debug(_Data.Substring(_I));
|
||||||
string slot;
|
string slot;
|
||||||
@ -500,7 +498,7 @@ public class ProcessData : IProcessData
|
|||||||
HazeAverageStdDev = toEol4[8].Trim();
|
HazeAverageStdDev = toEol4[8].Trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Detail ParseWaferSummary(string waferFileName, Dictionary<string, string> pages)
|
private Detail ParseWaferSummary(string waferFileName, ReadOnlyDictionary<string, string> pages)
|
||||||
{
|
{
|
||||||
Detail result = new() { Data = "*Data*", i = -1, };
|
Detail result = new() { Data = "*Data*", i = -1, };
|
||||||
_I = 0;
|
_I = 0;
|
||||||
@ -508,10 +506,10 @@ public class ProcessData : IProcessData
|
|||||||
result.HeaderUniqueId = UniqueId;
|
result.HeaderUniqueId = UniqueId;
|
||||||
result.Id = 0;
|
result.Id = 0;
|
||||||
result.Title = null;
|
result.Title = null;
|
||||||
if (!pages.ContainsKey(waferFileName))
|
if (!pages.TryGetValue(waferFileName, out string value))
|
||||||
throw new Exception();
|
throw new Exception();
|
||||||
_I = 0;
|
_I = 0;
|
||||||
_Data = pages[waferFileName];
|
_Data = value;
|
||||||
ScanPast("Date:");
|
ScanPast("Date:");
|
||||||
result.Date = GetToEOL();
|
result.Date = GetToEOL();
|
||||||
ScanPast("ID#");
|
ScanPast("ID#");
|
||||||
@ -601,86 +599,24 @@ public class ProcessData : IProcessData
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Parse(IFileRead fileRead, Logistics logistics, List<FileInfo> fileInfoCollection, string ghostPCLFileName)
|
#nullable enable
|
||||||
|
|
||||||
|
private void Parse(IFileRead fileRead, Logistics logistics, List<FileInfo> fileInfoCollection, ReadOnlyDictionary<string, string> pages, Run run)
|
||||||
{
|
{
|
||||||
object item;
|
if (fileRead is null)
|
||||||
string pageText;
|
throw new ArgumentNullException(nameof(fileRead));
|
||||||
string pagePDFFile;
|
|
||||||
string pageTextFile;
|
|
||||||
List<string> sourceFiles = new();
|
List<string> sourceFiles = new();
|
||||||
List<string> missingSlots = new();
|
List<string> missingSlots = new();
|
||||||
Dictionary<string, string> pages = new();
|
|
||||||
Dictionary<string, List<Detail>> slots = new();
|
Dictionary<string, List<Detail>> slots = new();
|
||||||
string sourcePath = Path.GetDirectoryName(logistics.ReportFullPath);
|
|
||||||
string sourceFileNamePdf = ConvertSourceFileToPdf(ghostPCLFileName, logistics);
|
|
||||||
sourceFiles.Add(sourceFileNamePdf);
|
|
||||||
string sourceFileNameWithoutExtension = Path.GetFileNameWithoutExtension(logistics.ReportFullPath);
|
|
||||||
string[] txtFiles = Directory.GetFiles(sourcePath, $"{sourceFileNameWithoutExtension}_*.txt", SearchOption.TopDirectoryOnly);
|
|
||||||
if (txtFiles.Length != 0)
|
|
||||||
{
|
|
||||||
foreach (string txtFile in txtFiles)
|
|
||||||
{
|
|
||||||
sourceFiles.Add(txtFile);
|
|
||||||
pageText = File.ReadAllText(txtFile);
|
|
||||||
pagePDFFile = Path.ChangeExtension(txtFile, ".pdf");
|
|
||||||
if (!File.Exists(pagePDFFile))
|
|
||||||
continue;
|
|
||||||
pages.Add(pagePDFFile, pageText);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (pages.Count == 0)
|
|
||||||
{
|
|
||||||
java.io.File file = new(sourceFileNamePdf);
|
|
||||||
org.apache.pdfbox.util.Splitter splitter = new();
|
|
||||||
org.apache.pdfbox.pdmodel.PDDocument pdDocument = org.apache.pdfbox.pdmodel.PDDocument.load(file);
|
|
||||||
java.util.List list = splitter.split(pdDocument);
|
|
||||||
java.util.ListIterator iterator = list.listIterator();
|
|
||||||
org.apache.pdfbox.util.PDFTextStripper dataStripper = new();
|
|
||||||
for (short i = 1; i < short.MaxValue; i++)
|
|
||||||
{
|
|
||||||
if (!iterator.hasNext())
|
|
||||||
break;
|
|
||||||
item = iterator.next();
|
|
||||||
pagePDFFile = string.Concat(sourcePath, @"\", sourceFileNameWithoutExtension, "_", i, ".pdf");
|
|
||||||
pageTextFile = Path.ChangeExtension(pagePDFFile, ".txt");
|
|
||||||
if (File.Exists(pageTextFile))
|
|
||||||
{
|
|
||||||
pageText = File.ReadAllText(pageTextFile);
|
|
||||||
sourceFiles.Add(pageTextFile);
|
|
||||||
if (item is not org.apache.pdfbox.pdmodel.PDDocument pd)
|
|
||||||
continue;
|
|
||||||
pd.close();
|
|
||||||
}
|
|
||||||
else if (File.Exists(pagePDFFile))
|
|
||||||
{
|
|
||||||
org.apache.pdfbox.pdmodel.PDDocument document = org.apache.pdfbox.pdmodel.PDDocument.load(pagePDFFile);
|
|
||||||
pageText = dataStripper.getText(document);
|
|
||||||
document.close();
|
|
||||||
sourceFiles.Add(pagePDFFile);
|
|
||||||
if (item is not org.apache.pdfbox.pdmodel.PDDocument pd)
|
|
||||||
continue;
|
|
||||||
pd.close();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (item is not org.apache.pdfbox.pdmodel.PDDocument pd)
|
|
||||||
continue;
|
|
||||||
pageText = dataStripper.getText(pd);
|
|
||||||
pd.save(pagePDFFile);
|
|
||||||
sourceFiles.Add(pagePDFFile);
|
|
||||||
pd.close();
|
|
||||||
File.WriteAllText(pageTextFile, pageText);
|
|
||||||
sourceFiles.Add(pageTextFile);
|
|
||||||
}
|
|
||||||
pages.Add(pagePDFFile, pageText);
|
|
||||||
}
|
|
||||||
pdDocument.close();
|
|
||||||
}
|
|
||||||
// parse lot summary
|
|
||||||
_Log.Debug($"****ParseData - Parsing lot summary");
|
|
||||||
List<Tuple<string, string>> pageMapping = new();
|
List<Tuple<string, string>> pageMapping = new();
|
||||||
string headerFileName = string.Concat(sourcePath, @"\", sourceFileNameWithoutExtension, "_", pages.Count, ".pdf");
|
_Log.Debug($"****ParseData - Parsing lot summary");
|
||||||
ParseLotSummary(fileRead, logistics, headerFileName, pages, slots);
|
string headerFileName = pages.ElementAt(pages.Count - 1).Key;
|
||||||
|
ParseLotSummary(logistics, pages, run, headerFileName, slots);
|
||||||
|
string sourcePath = Path.GetDirectoryName(logistics.ReportFullPath) ?? throw new Exception();
|
||||||
|
string sourceFileNameWithoutExtension = Path.GetFileNameWithoutExtension(logistics.ReportFullPath);
|
||||||
|
foreach (FileInfo fileInfo in fileInfoCollection)
|
||||||
|
sourceFiles.Add(fileInfo.FullName);
|
||||||
|
fileInfoCollection.Clear();
|
||||||
foreach (KeyValuePair<string, string> keyValuePair in pages)
|
foreach (KeyValuePair<string, string> keyValuePair in pages)
|
||||||
{
|
{
|
||||||
if (keyValuePair.Key == headerFileName)
|
if (keyValuePair.Key == headerFileName)
|
||||||
@ -709,7 +645,7 @@ public class ProcessData : IProcessData
|
|||||||
slots[dataFile.Slot].Add(dataFile);
|
slots[dataFile.Slot].Add(dataFile);
|
||||||
}
|
}
|
||||||
string checkFileName = string.Concat(sourcePath, @"\", sourceFileNameWithoutExtension, "_data.pdf");
|
string checkFileName = string.Concat(sourcePath, @"\", sourceFileNameWithoutExtension, "_data.pdf");
|
||||||
if (!File.Exists(checkFileName))
|
if (fileRead.IsEAFHosted && !File.Exists(checkFileName))
|
||||||
{
|
{
|
||||||
File.Move(headerFileName, checkFileName);
|
File.Move(headerFileName, checkFileName);
|
||||||
_ = sourceFiles.Remove(headerFileName);
|
_ = sourceFiles.Remove(headerFileName);
|
||||||
@ -721,7 +657,7 @@ public class ProcessData : IProcessData
|
|||||||
if (!string.IsNullOrEmpty(pageMapping[i].Item2))
|
if (!string.IsNullOrEmpty(pageMapping[i].Item2))
|
||||||
{
|
{
|
||||||
checkFileName = pageMapping[i].Item2;
|
checkFileName = pageMapping[i].Item2;
|
||||||
if (!File.Exists(checkFileName))
|
if (fileRead.IsEAFHosted && !File.Exists(checkFileName))
|
||||||
{
|
{
|
||||||
File.Move(pageMapping[i].Item1, checkFileName);
|
File.Move(pageMapping[i].Item1, checkFileName);
|
||||||
_ = sourceFiles.Remove(pageMapping[i].Item1);
|
_ = sourceFiles.Remove(pageMapping[i].Item1);
|
||||||
@ -730,16 +666,13 @@ public class ProcessData : IProcessData
|
|||||||
}
|
}
|
||||||
else if (!string.IsNullOrEmpty(checkFileName))
|
else if (!string.IsNullOrEmpty(checkFileName))
|
||||||
{
|
{
|
||||||
//if (i == 0 || !string.IsNullOrEmpty(pageMapping[i - 1].Item2))
|
|
||||||
//{
|
|
||||||
checkFileName = checkFileName.Replace("_data.pdf", "_image.pdf");
|
checkFileName = checkFileName.Replace("_data.pdf", "_image.pdf");
|
||||||
if (!File.Exists(checkFileName))
|
if (fileRead.IsEAFHosted && !File.Exists(checkFileName))
|
||||||
{
|
{
|
||||||
File.Move(pageMapping[i].Item1, checkFileName);
|
File.Move(pageMapping[i].Item1, checkFileName);
|
||||||
_ = sourceFiles.Remove(pageMapping[i].Item1);
|
_ = sourceFiles.Remove(pageMapping[i].Item1);
|
||||||
sourceFiles.Add(checkFileName);
|
sourceFiles.Add(checkFileName);
|
||||||
}
|
}
|
||||||
//}
|
|
||||||
checkFileName = string.Empty;
|
checkFileName = string.Empty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -766,18 +699,15 @@ public class ProcessData : IProcessData
|
|||||||
fileInfoCollection.Add(logistics.FileInfo);
|
fileInfoCollection.Add(logistics.FileInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
#nullable enable
|
|
||||||
|
|
||||||
internal static List<Description> GetDescriptions(JsonElement[] jsonElements)
|
internal static List<Description> GetDescriptions(JsonElement[] jsonElements)
|
||||||
{
|
{
|
||||||
List<Description> results = new();
|
List<Description> results = new();
|
||||||
Description? description;
|
Description? description;
|
||||||
JsonSerializerOptions jsonSerializerOptions = new() { NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString };
|
|
||||||
foreach (JsonElement jsonElement in jsonElements)
|
foreach (JsonElement jsonElement in jsonElements)
|
||||||
{
|
{
|
||||||
if (jsonElement.ValueKind != JsonValueKind.Object)
|
if (jsonElement.ValueKind != JsonValueKind.Object)
|
||||||
throw new Exception();
|
throw new Exception();
|
||||||
description = JsonSerializer.Deserialize<Description>(jsonElement.ToString(), jsonSerializerOptions);
|
description = JsonSerializer.Deserialize(jsonElement.ToString(), DescriptionSourceGenerationContext.Default.Description);
|
||||||
if (description is null)
|
if (description is null)
|
||||||
continue;
|
continue;
|
||||||
results.Add(description);
|
results.Add(description);
|
||||||
|
|||||||
193
Adaptation/FileHandlers/pcl/Row.cs
Normal file
193
Adaptation/FileHandlers/pcl/Row.cs
Normal file
@ -0,0 +1,193 @@
|
|||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace Adaptation.FileHandlers.pcl;
|
||||||
|
|
||||||
|
#nullable enable
|
||||||
|
|
||||||
|
internal class Row
|
||||||
|
{
|
||||||
|
|
||||||
|
public Row(Run run, int i)
|
||||||
|
{
|
||||||
|
Index = i;
|
||||||
|
//
|
||||||
|
Date = run.Header.Date;
|
||||||
|
Recipe = run.Header.Recipe;
|
||||||
|
Id = run.Header.Id;
|
||||||
|
//
|
||||||
|
WaferId = run.Header.WaferSummary[i].Id;
|
||||||
|
LPDCount = run.Header.WaferSummary[i].LPDCount;
|
||||||
|
LPDCM2 = run.Header.WaferSummary[i].LPDCM2;
|
||||||
|
AreaCount = run.Header.WaferSummary[i].AreaCount;
|
||||||
|
AreaTotal = run.Header.WaferSummary[i].AreaTotal;
|
||||||
|
ScratchCount = run.Header.WaferSummary[i].ScratchCount;
|
||||||
|
ScratchTotal = run.Header.WaferSummary[i].ScratchTotal;
|
||||||
|
SumOfDefects = run.Header.WaferSummary[i].SumOfDefects;
|
||||||
|
HazeRegion = run.Header.WaferSummary[i].HazeRegion;
|
||||||
|
HazeAverage = run.Header.WaferSummary[i].HazeAverage;
|
||||||
|
Grade = run.Header.WaferSummary[i].Grade;
|
||||||
|
//
|
||||||
|
LPDCountMin = run.Header.LPDCountMin;
|
||||||
|
LPDCM2Min = run.Header.LPDCM2Min;
|
||||||
|
AreaCountMin = run.Header.AreaCountMin;
|
||||||
|
AreaTotalMin = run.Header.AreaTotalMin;
|
||||||
|
ScratchCountMin = run.Header.ScratchCountMin;
|
||||||
|
ScratchTotalMin = run.Header.ScratchTotalMin;
|
||||||
|
SumOfDefectsMin = run.Header.SumOfDefectsMin;
|
||||||
|
HazeRegionMin = run.Header.HazeRegionMin;
|
||||||
|
HazeAverageMin = run.Header.HazeAverageMin;
|
||||||
|
LPDCountMax = run.Header.LPDCountMax;
|
||||||
|
LPDCM2Max = run.Header.LPDCM2Max;
|
||||||
|
AreaCountMax = run.Header.AreaCountMax;
|
||||||
|
AreaTotalMax = run.Header.AreaTotalMax;
|
||||||
|
ScratchCountMax = run.Header.ScratchCountMax;
|
||||||
|
ScratchTotalMax = run.Header.ScratchTotalMax;
|
||||||
|
SumOfDefectsMax = run.Header.SumOfDefectsMax;
|
||||||
|
HazeRegionMax = run.Header.HazeRegionMax;
|
||||||
|
HazeAverageMax = run.Header.HazeAverageMax;
|
||||||
|
LPDCountAvg = run.Header.LPDCountAvg;
|
||||||
|
LPDCM2Avg = run.Header.LPDCM2Avg;
|
||||||
|
AreaCountAvg = run.Header.AreaCountAvg;
|
||||||
|
AreaTotalAvg = run.Header.AreaTotalAvg;
|
||||||
|
ScratchCountAvg = run.Header.ScratchCountAvg;
|
||||||
|
ScratchTotalAvg = run.Header.ScratchTotalAvg;
|
||||||
|
SumOfDefectsAvg = run.Header.SumOfDefectsAvg;
|
||||||
|
HazeRegionAvg = run.Header.HazeRegionAvg;
|
||||||
|
HazeAverageAvg = run.Header.HazeAverageAvg;
|
||||||
|
LPDCountStdDev = run.Header.LPDCountStdDev;
|
||||||
|
LPDCM2StdDev = run.Header.LPDCM2StdDev;
|
||||||
|
AreaCountStdDev = run.Header.AreaCountStdDev;
|
||||||
|
AreaTotalStdDev = run.Header.AreaTotalStdDev;
|
||||||
|
ScratchCountStdDev = run.Header.ScratchCountStdDev;
|
||||||
|
ScratchTotalStdDev = run.Header.ScratchTotalStdDev;
|
||||||
|
SumOfDefectsStdDev = run.Header.SumOfDefectsStdDev;
|
||||||
|
HazeRegionStdDev = run.Header.HazeRegionStdDev;
|
||||||
|
HazeAverageStdDev = run.Header.HazeAverageStdDev;
|
||||||
|
//
|
||||||
|
WaferDate = run.Wafers[i].Date;
|
||||||
|
Comments = run.Wafers[i].Comments;
|
||||||
|
Sort = run.Wafers[i].Sort;
|
||||||
|
WaferLPDCount = run.Wafers[i].LPDCount;
|
||||||
|
WaferLPDCM2 = run.Wafers[i].LPDCM2;
|
||||||
|
Bin1 = run.Wafers[i].Bin1;
|
||||||
|
Bin2 = run.Wafers[i].Bin2;
|
||||||
|
Bin3 = run.Wafers[i].Bin3;
|
||||||
|
Bin4 = run.Wafers[i].Bin4;
|
||||||
|
Bin5 = run.Wafers[i].Bin5;
|
||||||
|
Bin6 = run.Wafers[i].Bin6;
|
||||||
|
Bin7 = run.Wafers[i].Bin7;
|
||||||
|
Bin8 = run.Wafers[i].Bin8;
|
||||||
|
Mean = run.Wafers[i].Mean;
|
||||||
|
StdDev = run.Wafers[i].StdDev;
|
||||||
|
WaferAreaCount = run.Wafers[i].AreaCount;
|
||||||
|
WaferAreaTotal = run.Wafers[i].AreaTotal;
|
||||||
|
WaferScratchCount = run.Wafers[i].ScratchCount;
|
||||||
|
WaferScratchTotal = run.Wafers[i].ScratchTotal;
|
||||||
|
WaferSumOfDefects = run.Wafers[i].SumOfDefects;
|
||||||
|
WaferHazeRegion = run.Wafers[i].HazeRegion;
|
||||||
|
WaferHazeAverage = run.Wafers[i].HazeAverage;
|
||||||
|
HazePeak = run.Wafers[i].HazePeak;
|
||||||
|
Laser = run.Wafers[i].Laser;
|
||||||
|
Gain = run.Wafers[i].Gain;
|
||||||
|
Diameter = run.Wafers[i].Diameter;
|
||||||
|
Thresh = run.Wafers[i].Thresh;
|
||||||
|
Exclusion = run.Wafers[i].Exclusion;
|
||||||
|
HazeRng = run.Wafers[i].HazeRng;
|
||||||
|
Thruput = run.Wafers[i].Thruput;
|
||||||
|
WaferRecipe = run.Wafers[i].Recipe;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Index { get; }
|
||||||
|
//
|
||||||
|
public string Date { get; }
|
||||||
|
public string Recipe { get; }
|
||||||
|
public string Id { get; }
|
||||||
|
//
|
||||||
|
public string WaferId { get; }
|
||||||
|
public string LPDCount { get; }
|
||||||
|
public string LPDCM2 { get; }
|
||||||
|
public string AreaCount { get; }
|
||||||
|
public string AreaTotal { get; }
|
||||||
|
public string ScratchCount { get; }
|
||||||
|
public string ScratchTotal { get; }
|
||||||
|
public string SumOfDefects { get; }
|
||||||
|
public string HazeRegion { get; }
|
||||||
|
public string HazeAverage { get; }
|
||||||
|
public string Grade { get; }
|
||||||
|
//
|
||||||
|
public string LPDCountMin { get; }
|
||||||
|
public string LPDCM2Min { get; }
|
||||||
|
public string AreaCountMin { get; }
|
||||||
|
public string AreaTotalMin { get; }
|
||||||
|
public string ScratchCountMin { get; }
|
||||||
|
public string ScratchTotalMin { get; }
|
||||||
|
public string SumOfDefectsMin { get; }
|
||||||
|
public string HazeRegionMin { get; }
|
||||||
|
public string HazeAverageMin { get; }
|
||||||
|
public string LPDCountMax { get; }
|
||||||
|
public string LPDCM2Max { get; }
|
||||||
|
public string AreaCountMax { get; }
|
||||||
|
public string AreaTotalMax { get; }
|
||||||
|
public string ScratchCountMax { get; }
|
||||||
|
public string ScratchTotalMax { get; }
|
||||||
|
public string SumOfDefectsMax { get; }
|
||||||
|
public string HazeRegionMax { get; }
|
||||||
|
public string HazeAverageMax { get; }
|
||||||
|
public string LPDCountAvg { get; }
|
||||||
|
public string LPDCM2Avg { get; }
|
||||||
|
public string AreaCountAvg { get; }
|
||||||
|
public string AreaTotalAvg { get; }
|
||||||
|
public string ScratchCountAvg { get; }
|
||||||
|
public string ScratchTotalAvg { get; }
|
||||||
|
public string SumOfDefectsAvg { get; }
|
||||||
|
public string HazeRegionAvg { get; }
|
||||||
|
public string HazeAverageAvg { get; }
|
||||||
|
public string LPDCountStdDev { get; }
|
||||||
|
public string LPDCM2StdDev { get; }
|
||||||
|
public string AreaCountStdDev { get; }
|
||||||
|
public string AreaTotalStdDev { get; }
|
||||||
|
public string ScratchCountStdDev { get; }
|
||||||
|
public string ScratchTotalStdDev { get; }
|
||||||
|
public string SumOfDefectsStdDev { get; }
|
||||||
|
public string HazeRegionStdDev { get; }
|
||||||
|
public string HazeAverageStdDev { get; }
|
||||||
|
//
|
||||||
|
public string WaferDate { get; }
|
||||||
|
public string Comments { get; }
|
||||||
|
public string Sort { get; }
|
||||||
|
public string WaferLPDCount { get; }
|
||||||
|
public string WaferLPDCM2 { get; }
|
||||||
|
public string Bin1 { get; }
|
||||||
|
public string Bin2 { get; }
|
||||||
|
public string Bin3 { get; }
|
||||||
|
public string Bin4 { get; }
|
||||||
|
public string Bin5 { get; }
|
||||||
|
public string Bin6 { get; }
|
||||||
|
public string Bin7 { get; }
|
||||||
|
public string Bin8 { get; }
|
||||||
|
public string Mean { get; }
|
||||||
|
public string StdDev { get; }
|
||||||
|
public string WaferAreaCount { get; }
|
||||||
|
public string WaferAreaTotal { get; }
|
||||||
|
public string WaferScratchCount { get; }
|
||||||
|
public string WaferScratchTotal { get; }
|
||||||
|
public string WaferSumOfDefects { get; }
|
||||||
|
public string WaferHazeRegion { get; }
|
||||||
|
public string WaferHazeAverage { get; }
|
||||||
|
public string HazePeak { get; }
|
||||||
|
public string Laser { get; }
|
||||||
|
public string Gain { get; }
|
||||||
|
public string Diameter { get; }
|
||||||
|
public string Thresh { get; }
|
||||||
|
public string Exclusion { get; }
|
||||||
|
public string HazeRng { get; }
|
||||||
|
public string Thruput { get; }
|
||||||
|
public string WaferRecipe { get; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[JsonSourceGenerationOptions(WriteIndented = true)]
|
||||||
|
[JsonSerializable(typeof(Row))]
|
||||||
|
internal partial class PCLRowSourceGenerationContext : JsonSerializerContext
|
||||||
|
{
|
||||||
|
}
|
||||||
145
Adaptation/FileHandlers/pcl/Run.cs
Normal file
145
Adaptation/FileHandlers/pcl/Run.cs
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
using Adaptation.Shared;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace Adaptation.FileHandlers.pcl;
|
||||||
|
|
||||||
|
#nullable enable
|
||||||
|
|
||||||
|
internal class Run
|
||||||
|
{
|
||||||
|
|
||||||
|
public Header Header { get; }
|
||||||
|
public ReadOnlyCollection<Wafer> Wafers { get; }
|
||||||
|
|
||||||
|
public Run(Header header, ReadOnlyCollection<Wafer> wafers)
|
||||||
|
{
|
||||||
|
Header = header;
|
||||||
|
Wafers = wafers;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static ReadOnlyCollection<Wafer> GetLastWaferForEachSlot(ReadOnlyDictionary<string, string> pages, Constant constant, Header header)
|
||||||
|
{
|
||||||
|
List<Wafer> results = new();
|
||||||
|
string id;
|
||||||
|
Wafer wafer;
|
||||||
|
ReadOnlyCollection<Wafer>? wafers;
|
||||||
|
ReadOnlyDictionary<string, ReadOnlyCollection<Wafer>> keyValuePairs = Wafer.Get(pages, constant);
|
||||||
|
ReadOnlyCollection<string> waferIds = GetWaferIds(header);
|
||||||
|
for (int i = 0; i < waferIds.Count; i++)
|
||||||
|
{
|
||||||
|
id = waferIds[i];
|
||||||
|
if (!keyValuePairs.TryGetValue(id, out wafers) || wafers.Count == 0)
|
||||||
|
wafer = Wafer.Get(id);
|
||||||
|
else
|
||||||
|
wafer = (from l in wafers where l.Recipe == header.Recipe select l).Last();
|
||||||
|
if (wafer is null)
|
||||||
|
break;
|
||||||
|
results.Add(wafer);
|
||||||
|
}
|
||||||
|
return results.AsReadOnly();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void WriteJson(Logistics logistics, List<FileInfo> fileInfoCollection, Run result)
|
||||||
|
{
|
||||||
|
FileInfo fileInfo = new($"{logistics.ReportFullPath}.run.json");
|
||||||
|
string json = JsonSerializer.Serialize(result, PCLRunSourceGenerationContext.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.Wafers.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));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static ReadOnlyCollection<string> GetWaferIds(Header header)
|
||||||
|
{
|
||||||
|
List<string> results = new();
|
||||||
|
foreach (WaferSummary waferSummary in header.WaferSummary)
|
||||||
|
results.Add(waferSummary.Id);
|
||||||
|
return results.AsReadOnly();
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static Run? Get(Logistics logistics, List<FileInfo> fileInfoCollection, ReadOnlyDictionary<string, string> pages)
|
||||||
|
{
|
||||||
|
Run? result;
|
||||||
|
Constant constant = new();
|
||||||
|
Header? header = Header.Get(pages, constant);
|
||||||
|
if (header is null)
|
||||||
|
result = null;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ReadOnlyCollection<Wafer> wafers = GetLastWaferForEachSlot(pages, constant, header);
|
||||||
|
result = new(header, wafers);
|
||||||
|
WriteJson(logistics, fileInfoCollection, result);
|
||||||
|
WriteCommaSeparatedValues(logistics, result);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[JsonSourceGenerationOptions(WriteIndented = true)]
|
||||||
|
[JsonSerializable(typeof(Run))]
|
||||||
|
internal partial class PCLRunSourceGenerationContext : JsonSerializerContext
|
||||||
|
{
|
||||||
|
}
|
||||||
236
Adaptation/FileHandlers/pcl/Wafer.cs
Normal file
236
Adaptation/FileHandlers/pcl/Wafer.cs
Normal file
@ -0,0 +1,236 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace Adaptation.FileHandlers.pcl;
|
||||||
|
|
||||||
|
#nullable enable
|
||||||
|
|
||||||
|
public class Wafer
|
||||||
|
{
|
||||||
|
|
||||||
|
public Wafer(string date, string id, string comments, string sort, string lPDCount, string lPDCM2, string bin1, string bin2, string bin3, string bin4, string bin5, string bin6, string bin7, string bin8, string mean, string stdDev, string areaCount, string areaTotal, string scratchCount, string scratchTotal, string sumOfDefects, string hazeRegion, string hazeAverage, string hazePeak, string laser, string gain, string diameter, string thresh, string exclusion, string hazeRng, string thruput, string recipe)
|
||||||
|
{
|
||||||
|
Date = date;
|
||||||
|
Id = id;
|
||||||
|
Comments = comments;
|
||||||
|
Sort = sort;
|
||||||
|
LPDCount = lPDCount;
|
||||||
|
LPDCM2 = lPDCM2;
|
||||||
|
Bin1 = bin1;
|
||||||
|
Bin2 = bin2;
|
||||||
|
Bin3 = bin3;
|
||||||
|
Bin4 = bin4;
|
||||||
|
Bin5 = bin5;
|
||||||
|
Bin6 = bin6;
|
||||||
|
Bin7 = bin7;
|
||||||
|
Bin8 = bin8;
|
||||||
|
Mean = mean;
|
||||||
|
StdDev = stdDev;
|
||||||
|
AreaCount = areaCount;
|
||||||
|
AreaTotal = areaTotal;
|
||||||
|
ScratchCount = scratchCount;
|
||||||
|
ScratchTotal = scratchTotal;
|
||||||
|
SumOfDefects = sumOfDefects;
|
||||||
|
HazeRegion = hazeRegion;
|
||||||
|
HazeAverage = hazeAverage;
|
||||||
|
HazePeak = hazePeak;
|
||||||
|
Laser = laser;
|
||||||
|
Gain = gain;
|
||||||
|
Diameter = diameter;
|
||||||
|
Thresh = thresh;
|
||||||
|
Exclusion = exclusion;
|
||||||
|
HazeRng = hazeRng;
|
||||||
|
Thruput = thruput;
|
||||||
|
Recipe = recipe;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static Wafer Get(string id) =>
|
||||||
|
new(date: string.Empty,
|
||||||
|
id: id,
|
||||||
|
comments: string.Empty,
|
||||||
|
sort: string.Empty,
|
||||||
|
lPDCount: string.Empty,
|
||||||
|
lPDCM2: string.Empty,
|
||||||
|
bin1: string.Empty,
|
||||||
|
bin2: string.Empty,
|
||||||
|
bin3: string.Empty,
|
||||||
|
bin4: string.Empty,
|
||||||
|
bin5: string.Empty,
|
||||||
|
bin6: string.Empty,
|
||||||
|
bin7: string.Empty,
|
||||||
|
bin8: string.Empty,
|
||||||
|
mean: string.Empty,
|
||||||
|
stdDev: string.Empty,
|
||||||
|
areaCount: string.Empty,
|
||||||
|
areaTotal: string.Empty,
|
||||||
|
scratchCount: string.Empty,
|
||||||
|
scratchTotal: string.Empty,
|
||||||
|
sumOfDefects: string.Empty,
|
||||||
|
hazeRegion: string.Empty,
|
||||||
|
hazeAverage: string.Empty,
|
||||||
|
hazePeak: string.Empty,
|
||||||
|
laser: string.Empty,
|
||||||
|
gain: string.Empty,
|
||||||
|
diameter: string.Empty,
|
||||||
|
thresh: string.Empty,
|
||||||
|
exclusion: string.Empty,
|
||||||
|
hazeRng: string.Empty,
|
||||||
|
thruput: string.Empty,
|
||||||
|
recipe: string.Empty);
|
||||||
|
|
||||||
|
public string Date { get; }
|
||||||
|
public string Id { get; }
|
||||||
|
public string Comments { get; }
|
||||||
|
public string Sort { get; }
|
||||||
|
public string LPDCount { get; }
|
||||||
|
public string LPDCM2 { get; }
|
||||||
|
public string Bin1 { get; }
|
||||||
|
public string Bin2 { get; }
|
||||||
|
public string Bin3 { get; }
|
||||||
|
public string Bin4 { get; }
|
||||||
|
public string Bin5 { get; }
|
||||||
|
public string Bin6 { get; }
|
||||||
|
public string Bin7 { get; }
|
||||||
|
public string Bin8 { get; }
|
||||||
|
public string Mean { get; }
|
||||||
|
public string StdDev { get; }
|
||||||
|
public string AreaCount { get; }
|
||||||
|
public string AreaTotal { get; }
|
||||||
|
public string ScratchCount { get; }
|
||||||
|
public string ScratchTotal { get; }
|
||||||
|
public string SumOfDefects { get; }
|
||||||
|
public string HazeRegion { get; }
|
||||||
|
public string HazeAverage { get; }
|
||||||
|
public string HazePeak { get; }
|
||||||
|
public string Laser { get; }
|
||||||
|
public string Gain { get; }
|
||||||
|
public string Diameter { get; }
|
||||||
|
public string Thresh { get; }
|
||||||
|
public string Exclusion { get; }
|
||||||
|
public string HazeRng { get; }
|
||||||
|
public string Thruput { get; }
|
||||||
|
public string Recipe { get; }
|
||||||
|
|
||||||
|
internal static ReadOnlyDictionary<string, ReadOnlyCollection<Wafer>> Get(ReadOnlyDictionary<string, string> pages, Constant constant)
|
||||||
|
{
|
||||||
|
Dictionary<string, ReadOnlyCollection<Wafer>> results = new();
|
||||||
|
Wafer wafer;
|
||||||
|
string? text;
|
||||||
|
List<string> stringList;
|
||||||
|
int[] i = new int[] { 0 };
|
||||||
|
Dictionary<string, List<Wafer>> keyValuePairs = new();
|
||||||
|
foreach (KeyValuePair<string, string> keyValuePair in pages)
|
||||||
|
{
|
||||||
|
i[0] = 0;
|
||||||
|
stringList = new();
|
||||||
|
if (!pages.TryGetValue(keyValuePair.Key, out text))
|
||||||
|
throw new Exception();
|
||||||
|
if (string.IsNullOrEmpty(text) || !text.Contains(constant.Id) || text.Contains(constant.Statistics) || text.Contains(constant.DatabaseId))
|
||||||
|
continue;
|
||||||
|
Header.ScanPast(text, i, constant.Date);
|
||||||
|
string date = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, constant.Id);
|
||||||
|
string id = Header.GetToEOL(text, i);
|
||||||
|
if (id.Length > 5)
|
||||||
|
id = string.Concat(id.Substring(0, 5), "... - ***");
|
||||||
|
id = id.Replace("*", "");
|
||||||
|
Header.ScanPast(text, i, "Comments:");
|
||||||
|
string comments = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "Sort:");
|
||||||
|
string sort = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "LPD Count:");
|
||||||
|
string lPDCount = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "LPD / cm2:");
|
||||||
|
string lPDCM2 = Header.GetToEOL(text, i);
|
||||||
|
while (Header.GetBefore(text, i, ":").Contains("Bin"))
|
||||||
|
stringList.Add(Header.GetToEOL(text, i));
|
||||||
|
string bin1 = stringList.Count >= 1 ? stringList[0] : string.Empty;
|
||||||
|
string bin2 = stringList.Count >= 2 ? stringList[1] : string.Empty;
|
||||||
|
string bin3 = stringList.Count >= 3 ? stringList[2] : string.Empty;
|
||||||
|
string bin4 = stringList.Count >= 4 ? stringList[3] : string.Empty;
|
||||||
|
string bin5 = stringList.Count >= 5 ? stringList[4] : string.Empty;
|
||||||
|
string bin6 = stringList.Count >= 6 ? stringList[5] : string.Empty;
|
||||||
|
string bin7 = stringList.Count >= 7 ? stringList[6] : string.Empty;
|
||||||
|
string bin8 = stringList.Count >= 8 ? stringList[7] : string.Empty;
|
||||||
|
string mean = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "Std Dev:");
|
||||||
|
string stdDev = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "Area Count:");
|
||||||
|
string areaCount = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "Area Total:");
|
||||||
|
string areaTotal = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "Scratch Count:");
|
||||||
|
string scratchCount = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "Scratch Total:");
|
||||||
|
string scratchTotal = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "Sum of All Defects:");
|
||||||
|
string sumOfDefects = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "Haze Region:");
|
||||||
|
string hazeRegion = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "Haze Average:");
|
||||||
|
string hazeAverage = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "Haze Peak:");
|
||||||
|
string hazePeak = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "Laser:");
|
||||||
|
string laser = Header.GetBefore(text, i, "Gain:");
|
||||||
|
string gain = Header.GetBefore(text, i, "Diameter:");
|
||||||
|
string diameter = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "Thresh:");
|
||||||
|
string thresh = Header.GetBefore(text, i, "Exclusion:");
|
||||||
|
string exclusion = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "Haze Rng:");
|
||||||
|
string hazeRng = Header.GetBefore(text, i, "Thruput:");
|
||||||
|
string thruput = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "Recipe ID:");
|
||||||
|
string recipe = Header.GetToEOL(text, i);
|
||||||
|
wafer = new(date: date,
|
||||||
|
id: id,
|
||||||
|
comments: comments,
|
||||||
|
sort: sort,
|
||||||
|
lPDCount: lPDCount,
|
||||||
|
lPDCM2: lPDCM2,
|
||||||
|
bin1: bin1,
|
||||||
|
bin2: bin2,
|
||||||
|
bin3: bin3,
|
||||||
|
bin4: bin4,
|
||||||
|
bin5: bin5,
|
||||||
|
bin6: bin6,
|
||||||
|
bin7: bin7,
|
||||||
|
bin8: bin8,
|
||||||
|
mean: mean,
|
||||||
|
stdDev: stdDev,
|
||||||
|
areaCount: areaCount,
|
||||||
|
areaTotal: areaTotal,
|
||||||
|
scratchCount: scratchCount,
|
||||||
|
scratchTotal: scratchTotal,
|
||||||
|
sumOfDefects: sumOfDefects,
|
||||||
|
hazeRegion: hazeRegion,
|
||||||
|
hazeAverage: hazeAverage,
|
||||||
|
hazePeak: hazePeak,
|
||||||
|
laser: laser,
|
||||||
|
gain: gain,
|
||||||
|
diameter: diameter,
|
||||||
|
thresh: thresh,
|
||||||
|
exclusion: exclusion,
|
||||||
|
hazeRng: hazeRng,
|
||||||
|
thruput: thruput,
|
||||||
|
recipe: recipe);
|
||||||
|
if (!keyValuePairs.ContainsKey(id))
|
||||||
|
keyValuePairs.Add(id, new List<Wafer>());
|
||||||
|
keyValuePairs[id].Add(wafer);
|
||||||
|
}
|
||||||
|
foreach (KeyValuePair<string, List<Wafer>> keyValuePair in keyValuePairs)
|
||||||
|
results.Add(keyValuePair.Key, keyValuePair.Value.AsReadOnly());
|
||||||
|
return new(results);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[JsonSourceGenerationOptions(WriteIndented = true)]
|
||||||
|
[JsonSerializable(typeof(Wafer))]
|
||||||
|
internal partial class PCLWaferSourceGenerationContext : JsonSerializerContext
|
||||||
|
{
|
||||||
|
}
|
||||||
43
Adaptation/FileHandlers/pcl/WaferSummary.cs
Normal file
43
Adaptation/FileHandlers/pcl/WaferSummary.cs
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace Adaptation.FileHandlers.pcl;
|
||||||
|
|
||||||
|
#nullable enable
|
||||||
|
|
||||||
|
public class WaferSummary
|
||||||
|
{
|
||||||
|
|
||||||
|
public WaferSummary(string id, string lPDCount, string lPDCM2, string areaCount, string areaTotal, string scratchCount, string scratchTotal, string sumOfDefects, string hazeRegion, string hazeAverage, string grade)
|
||||||
|
{
|
||||||
|
Id = id;
|
||||||
|
LPDCount = lPDCount;
|
||||||
|
LPDCM2 = lPDCM2;
|
||||||
|
AreaCount = areaCount;
|
||||||
|
AreaTotal = areaTotal;
|
||||||
|
ScratchCount = scratchCount;
|
||||||
|
ScratchTotal = scratchTotal;
|
||||||
|
SumOfDefects = sumOfDefects;
|
||||||
|
HazeRegion = hazeRegion;
|
||||||
|
HazeAverage = hazeAverage;
|
||||||
|
Grade = grade;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Id { get; }
|
||||||
|
public string LPDCount { get; }
|
||||||
|
public string LPDCM2 { get; }
|
||||||
|
public string AreaCount { get; }
|
||||||
|
public string AreaTotal { get; }
|
||||||
|
public string ScratchCount { get; }
|
||||||
|
public string ScratchTotal { get; }
|
||||||
|
public string SumOfDefects { get; }
|
||||||
|
public string HazeRegion { get; }
|
||||||
|
public string HazeAverage { get; }
|
||||||
|
public string Grade { get; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[JsonSourceGenerationOptions(WriteIndented = true)]
|
||||||
|
[JsonSerializable(typeof(WaferSummary))]
|
||||||
|
internal partial class PCLWaferSummarySourceGenerationContext : JsonSerializerContext
|
||||||
|
{
|
||||||
|
}
|
||||||
15
Adaptation/FileHandlers/pdsf/Constant.cs
Normal file
15
Adaptation/FileHandlers/pdsf/Constant.cs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
namespace Adaptation.FileHandlers.pdsf;
|
||||||
|
|
||||||
|
internal class Constant
|
||||||
|
{
|
||||||
|
|
||||||
|
public string Id { get; } = "ID#";
|
||||||
|
public string Max { get; } = "Max:";
|
||||||
|
public string Min { get; } = "Min:";
|
||||||
|
public string Date { get; } = "Date:";
|
||||||
|
public string StdDev { get; } = "Std Dev:";
|
||||||
|
public string Average { get; } = "Average:";
|
||||||
|
public string Statistics { get; } = "Statistics:";
|
||||||
|
public string DatabaseId { get; } = "Database ID:";
|
||||||
|
|
||||||
|
}
|
||||||
150
Adaptation/FileHandlers/pdsf/Convert.cs
Normal file
150
Adaptation/FileHandlers/pdsf/Convert.cs
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
using Adaptation.Shared;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
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(string ghostPCLFileName, Logistics logistics)
|
||||||
|
{
|
||||||
|
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 -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 Dictionary<string, string> PortableDocumentFormatSplit(string pdfTextStripperFileName, string sourcePath, string sourceFileNamePdf)
|
||||||
|
{
|
||||||
|
Dictionary<string, string> results = new();
|
||||||
|
ProcessStartInfo processStartInfo = new(pdfTextStripperFileName, $"s \"{sourceFileNamePdf}\"")
|
||||||
|
{
|
||||||
|
UseShellExecute = false,
|
||||||
|
RedirectStandardError = true,
|
||||||
|
RedirectStandardOutput = true,
|
||||||
|
};
|
||||||
|
Process process = Process.Start(processStartInfo);
|
||||||
|
_ = process.WaitForExit(30000);
|
||||||
|
string text;
|
||||||
|
string checkFile;
|
||||||
|
string[] pdfFiles = Directory.GetFiles(sourcePath, "*.pdf", SearchOption.TopDirectoryOnly);
|
||||||
|
string[] textFiles = Directory.GetFiles(sourcePath, "*.txt", SearchOption.TopDirectoryOnly);
|
||||||
|
foreach (string pdfFile in pdfFiles)
|
||||||
|
{
|
||||||
|
if (pdfFile == sourceFileNamePdf)
|
||||||
|
continue;
|
||||||
|
checkFile = Path.ChangeExtension(pdfFile, ".txt");
|
||||||
|
if (!textFiles.Contains(checkFile))
|
||||||
|
continue;
|
||||||
|
text = File.ReadAllText(checkFile);
|
||||||
|
results.Add(pdfFile, text);
|
||||||
|
}
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static ReadOnlyDictionary<string, string> PDF(Logistics logistics, string ghostPCLFileName, string pdfTextStripperFileName, List<FileInfo> fileInfoCollection)
|
||||||
|
{
|
||||||
|
Dictionary<string, string> results = new();
|
||||||
|
object item;
|
||||||
|
string pageText;
|
||||||
|
string pagePDFFile;
|
||||||
|
string pageTextFile;
|
||||||
|
List<string> sourceFiles = new();
|
||||||
|
string sourceFileNamePdf = ConvertSourceFileToPdf(ghostPCLFileName, logistics);
|
||||||
|
sourceFiles.Add(sourceFileNamePdf);
|
||||||
|
string sourcePath = Path.GetDirectoryName(logistics.ReportFullPath) ?? throw new Exception();
|
||||||
|
string sourceFileNameWithoutExtension = Path.GetFileNameWithoutExtension(logistics.ReportFullPath);
|
||||||
|
string[] txtFiles = Directory.GetFiles(sourcePath, $"{sourceFileNameWithoutExtension}_*.txt", SearchOption.TopDirectoryOnly);
|
||||||
|
if (txtFiles.Length != 0)
|
||||||
|
{
|
||||||
|
txtFiles = (from l in txtFiles orderby l.Length, l select l).ToArray();
|
||||||
|
foreach (string txtFile in txtFiles)
|
||||||
|
{
|
||||||
|
sourceFiles.Add(txtFile);
|
||||||
|
pageText = File.ReadAllText(txtFile);
|
||||||
|
pagePDFFile = Path.ChangeExtension(txtFile, ".pdf");
|
||||||
|
if (!File.Exists(pagePDFFile))
|
||||||
|
continue;
|
||||||
|
results.Add(pagePDFFile, pageText);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (results.Count == 0)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
java.io.File file = new(sourceFileNamePdf);
|
||||||
|
org.apache.pdfbox.util.Splitter splitter = new();
|
||||||
|
org.apache.pdfbox.pdmodel.PDDocument pdDocument = org.apache.pdfbox.pdmodel.PDDocument.load(file);
|
||||||
|
java.util.List list = splitter.split(pdDocument);
|
||||||
|
java.util.ListIterator iterator = list.listIterator();
|
||||||
|
org.apache.pdfbox.util.PDFTextStripper dataStripper = new();
|
||||||
|
for (short i = 1; i < short.MaxValue; i++)
|
||||||
|
{
|
||||||
|
if (!iterator.hasNext())
|
||||||
|
break;
|
||||||
|
item = iterator.next();
|
||||||
|
pagePDFFile = string.Concat(sourcePath, @"\", sourceFileNameWithoutExtension, "_", i, ".pdf");
|
||||||
|
pageTextFile = Path.ChangeExtension(pagePDFFile, ".txt");
|
||||||
|
if (File.Exists(pageTextFile))
|
||||||
|
{
|
||||||
|
pageText = File.ReadAllText(pageTextFile);
|
||||||
|
sourceFiles.Add(pageTextFile);
|
||||||
|
if (item is not org.apache.pdfbox.pdmodel.PDDocument pd)
|
||||||
|
continue;
|
||||||
|
pd.close();
|
||||||
|
}
|
||||||
|
else if (File.Exists(pagePDFFile))
|
||||||
|
{
|
||||||
|
org.apache.pdfbox.pdmodel.PDDocument document = org.apache.pdfbox.pdmodel.PDDocument.load(pagePDFFile);
|
||||||
|
pageText = dataStripper.getText(document);
|
||||||
|
document.close();
|
||||||
|
sourceFiles.Add(pagePDFFile);
|
||||||
|
if (item is not org.apache.pdfbox.pdmodel.PDDocument pd)
|
||||||
|
continue;
|
||||||
|
pd.close();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (item is not org.apache.pdfbox.pdmodel.PDDocument pd)
|
||||||
|
continue;
|
||||||
|
pageText = dataStripper.getText(pd);
|
||||||
|
pd.save(pagePDFFile);
|
||||||
|
sourceFiles.Add(pagePDFFile);
|
||||||
|
pd.close();
|
||||||
|
File.WriteAllText(pageTextFile, pageText);
|
||||||
|
sourceFiles.Add(pageTextFile);
|
||||||
|
}
|
||||||
|
results.Add(pagePDFFile, pageText);
|
||||||
|
}
|
||||||
|
pdDocument.close();
|
||||||
|
}
|
||||||
|
catch (MissingMethodException)
|
||||||
|
{
|
||||||
|
if (results.Count == 0)
|
||||||
|
results = PortableDocumentFormatSplit(pdfTextStripperFileName, sourcePath, sourceFileNamePdf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach (string sourceFile in sourceFiles)
|
||||||
|
fileInfoCollection.Add(new FileInfo(sourceFile));
|
||||||
|
return new(results);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
136
Adaptation/FileHandlers/pdsf/FileRead.cs
Normal file
136
Adaptation/FileHandlers/pdsf/FileRead.cs
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
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 = 15;
|
||||||
|
_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();
|
||||||
|
ReadOnlyDictionary<string, string> pages = Convert.PDF(_Logistics, _GhostPCLFileName, _PDFTextStripperFileName, fileInfoCollection);
|
||||||
|
Run? run = Run.Get(_Logistics, fileInfoCollection, pages);
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
341
Adaptation/FileHandlers/pdsf/Header.cs
Normal file
341
Adaptation/FileHandlers/pdsf/Header.cs
Normal file
@ -0,0 +1,341 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace Adaptation.FileHandlers.pdsf;
|
||||||
|
|
||||||
|
#nullable enable
|
||||||
|
|
||||||
|
public class Header
|
||||||
|
{
|
||||||
|
|
||||||
|
public Header(string date,
|
||||||
|
string recipe,
|
||||||
|
string id,
|
||||||
|
ReadOnlyCollection<WaferSummary> waferSummary,
|
||||||
|
string lPDCountMin,
|
||||||
|
string lPDCM2Min,
|
||||||
|
string areaCountMin,
|
||||||
|
string areaTotalMin,
|
||||||
|
string scratchCountMin,
|
||||||
|
string scratchTotalMin,
|
||||||
|
string sumOfDefectsMin,
|
||||||
|
string hazeRegionMin,
|
||||||
|
string hazeAverageMin,
|
||||||
|
string lPDCountMax,
|
||||||
|
string lPDCM2Max,
|
||||||
|
string areaCountMax,
|
||||||
|
string areaTotalMax,
|
||||||
|
string scratchCountMax,
|
||||||
|
string scratchTotalMax,
|
||||||
|
string sumOfDefectsMax,
|
||||||
|
string hazeRegionMax,
|
||||||
|
string hazeAverageMax,
|
||||||
|
string lPDCountAvg,
|
||||||
|
string lPDCM2Avg,
|
||||||
|
string areaCountAvg,
|
||||||
|
string areaTotalAvg,
|
||||||
|
string scratchCountAvg,
|
||||||
|
string scratchTotalAvg,
|
||||||
|
string sumOfDefectsAvg,
|
||||||
|
string hazeRegionAvg,
|
||||||
|
string hazeAverageAvg,
|
||||||
|
string lPDCountStdDev,
|
||||||
|
string lPDCM2StdDev,
|
||||||
|
string areaCountStdDev,
|
||||||
|
string areaTotalStdDev,
|
||||||
|
string scratchCountStdDev,
|
||||||
|
string scratchTotalStdDev,
|
||||||
|
string sumOfDefectsStdDev,
|
||||||
|
string hazeRegionStdDev,
|
||||||
|
string hazeAverageStdDev)
|
||||||
|
{
|
||||||
|
Date = date;
|
||||||
|
Recipe = recipe;
|
||||||
|
Id = id;
|
||||||
|
WaferSummary = waferSummary;
|
||||||
|
LPDCountMin = lPDCountMin;
|
||||||
|
LPDCM2Min = lPDCM2Min;
|
||||||
|
AreaCountMin = areaCountMin;
|
||||||
|
AreaTotalMin = areaTotalMin;
|
||||||
|
ScratchCountMin = scratchCountMin;
|
||||||
|
ScratchTotalMin = scratchTotalMin;
|
||||||
|
SumOfDefectsMin = sumOfDefectsMin;
|
||||||
|
HazeRegionMin = hazeRegionMin;
|
||||||
|
HazeAverageMin = hazeAverageMin;
|
||||||
|
LPDCountMax = lPDCountMax;
|
||||||
|
LPDCM2Max = lPDCM2Max;
|
||||||
|
AreaCountMax = areaCountMax;
|
||||||
|
AreaTotalMax = areaTotalMax;
|
||||||
|
ScratchCountMax = scratchCountMax;
|
||||||
|
ScratchTotalMax = scratchTotalMax;
|
||||||
|
SumOfDefectsMax = sumOfDefectsMax;
|
||||||
|
HazeRegionMax = hazeRegionMax;
|
||||||
|
HazeAverageMax = hazeAverageMax;
|
||||||
|
LPDCountAvg = lPDCountAvg;
|
||||||
|
LPDCM2Avg = lPDCM2Avg;
|
||||||
|
AreaCountAvg = areaCountAvg;
|
||||||
|
AreaTotalAvg = areaTotalAvg;
|
||||||
|
ScratchCountAvg = scratchCountAvg;
|
||||||
|
ScratchTotalAvg = scratchTotalAvg;
|
||||||
|
SumOfDefectsAvg = sumOfDefectsAvg;
|
||||||
|
HazeRegionAvg = hazeRegionAvg;
|
||||||
|
HazeAverageAvg = hazeAverageAvg;
|
||||||
|
LPDCountStdDev = lPDCountStdDev;
|
||||||
|
LPDCM2StdDev = lPDCM2StdDev;
|
||||||
|
AreaCountStdDev = areaCountStdDev;
|
||||||
|
AreaTotalStdDev = areaTotalStdDev;
|
||||||
|
ScratchCountStdDev = scratchCountStdDev;
|
||||||
|
ScratchTotalStdDev = scratchTotalStdDev;
|
||||||
|
SumOfDefectsStdDev = sumOfDefectsStdDev;
|
||||||
|
HazeRegionStdDev = hazeRegionStdDev;
|
||||||
|
HazeAverageStdDev = hazeAverageStdDev;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Date { get; }
|
||||||
|
public string Recipe { get; }
|
||||||
|
public string Id { get; }
|
||||||
|
public ReadOnlyCollection<WaferSummary> WaferSummary { get; }
|
||||||
|
public string LPDCountMin { get; }
|
||||||
|
public string LPDCM2Min { get; }
|
||||||
|
public string AreaCountMin { get; }
|
||||||
|
public string AreaTotalMin { get; }
|
||||||
|
public string ScratchCountMin { get; }
|
||||||
|
public string ScratchTotalMin { get; }
|
||||||
|
public string SumOfDefectsMin { get; }
|
||||||
|
public string HazeRegionMin { get; }
|
||||||
|
public string HazeAverageMin { get; }
|
||||||
|
public string LPDCountMax { get; }
|
||||||
|
public string LPDCM2Max { get; }
|
||||||
|
public string AreaCountMax { get; }
|
||||||
|
public string AreaTotalMax { get; }
|
||||||
|
public string ScratchCountMax { get; }
|
||||||
|
public string ScratchTotalMax { get; }
|
||||||
|
public string SumOfDefectsMax { get; }
|
||||||
|
public string HazeRegionMax { get; }
|
||||||
|
public string HazeAverageMax { get; }
|
||||||
|
public string LPDCountAvg { get; }
|
||||||
|
public string LPDCM2Avg { get; }
|
||||||
|
public string AreaCountAvg { get; }
|
||||||
|
public string AreaTotalAvg { get; }
|
||||||
|
public string ScratchCountAvg { get; }
|
||||||
|
public string ScratchTotalAvg { get; }
|
||||||
|
public string SumOfDefectsAvg { get; }
|
||||||
|
public string HazeRegionAvg { get; }
|
||||||
|
public string HazeAverageAvg { get; }
|
||||||
|
public string LPDCountStdDev { get; }
|
||||||
|
public string LPDCM2StdDev { get; }
|
||||||
|
public string AreaCountStdDev { get; }
|
||||||
|
public string AreaTotalStdDev { get; }
|
||||||
|
public string ScratchCountStdDev { get; }
|
||||||
|
public string ScratchTotalStdDev { get; }
|
||||||
|
public string SumOfDefectsStdDev { get; }
|
||||||
|
public string HazeRegionStdDev { get; }
|
||||||
|
public string HazeAverageStdDev { get; }
|
||||||
|
|
||||||
|
private static ReadOnlyCollection<string> FixToEolArray(string[] toEol)
|
||||||
|
{
|
||||||
|
List<string> results = new();
|
||||||
|
const int MAX_COLUMNS = 9;
|
||||||
|
if (toEol.Length >= MAX_COLUMNS)
|
||||||
|
results.AddRange(toEol);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
string leftVal, rightVal;
|
||||||
|
List<string> toEolList = new(toEol);
|
||||||
|
int[] mColumnWidths = new int[MAX_COLUMNS] { 8, 6, 6, 6, 6, 7, 7, 5, 7 };
|
||||||
|
if (string.IsNullOrEmpty(toEolList[toEolList.Count - 1]))
|
||||||
|
toEolList.RemoveAt(toEolList.Count - 1);
|
||||||
|
for (int i = toEolList.Count; i < MAX_COLUMNS; i++)
|
||||||
|
toEolList.Insert(0, "");
|
||||||
|
for (int i = MAX_COLUMNS - 1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
if (toEolList[i].Length > mColumnWidths[i])
|
||||||
|
{
|
||||||
|
leftVal = toEolList[i].Substring(0, toEolList[i].Length - mColumnWidths[i]);
|
||||||
|
rightVal = toEolList[i].Substring(leftVal.Length);
|
||||||
|
toEolList[i] = rightVal;
|
||||||
|
toEolList.Insert(i, leftVal);
|
||||||
|
if (string.IsNullOrEmpty(toEolList[0]))
|
||||||
|
toEolList.RemoveAt(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
results.AddRange(toEolList);
|
||||||
|
}
|
||||||
|
return results.AsReadOnly();
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static void ScanPast(string text, int[] i, string search)
|
||||||
|
{
|
||||||
|
int num = text.IndexOf(search, i[0]);
|
||||||
|
if (num > -1)
|
||||||
|
i[0] = num + search.Length;
|
||||||
|
else
|
||||||
|
i[0] = text.Length;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static string GetBefore(string text, int[] i, string search)
|
||||||
|
{
|
||||||
|
int num = text.IndexOf(search, i[0]);
|
||||||
|
if (num > -1)
|
||||||
|
{
|
||||||
|
string str = text.Substring(i[0], num - i[0]);
|
||||||
|
i[0] = num + search.Length;
|
||||||
|
return str.Trim();
|
||||||
|
}
|
||||||
|
string str1 = text.Substring(i[0]);
|
||||||
|
i[0] = text.Length;
|
||||||
|
return str1.Trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string GetBefore(string text, int[] i, string search, bool trim)
|
||||||
|
{
|
||||||
|
if (trim)
|
||||||
|
return GetBefore(text, i, search);
|
||||||
|
int num = text.IndexOf(search, i[0]);
|
||||||
|
if (num > -1)
|
||||||
|
{
|
||||||
|
string str = text.Substring(i[0], num - i[0]);
|
||||||
|
i[0] = num + search.Length;
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
string str1 = text.Substring(i[0]);
|
||||||
|
i[0] = text.Length;
|
||||||
|
return str1;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static string GetToEOL(string text, int[] i) =>
|
||||||
|
GetBefore(text, i, "\n");
|
||||||
|
|
||||||
|
private static string GetToEOL(string text, int[] i, bool trim)
|
||||||
|
{
|
||||||
|
if (trim)
|
||||||
|
return GetToEOL(text, i);
|
||||||
|
return GetBefore(text, i, "\n", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string? GetText(ReadOnlyDictionary<string, string> pages, Constant constant)
|
||||||
|
{
|
||||||
|
string? text;
|
||||||
|
string? headerFileName = null;
|
||||||
|
foreach (KeyValuePair<string, string> keyValuePair in pages)
|
||||||
|
{
|
||||||
|
if (!pages.TryGetValue(keyValuePair.Key, out text))
|
||||||
|
throw new Exception();
|
||||||
|
if (!text.Contains(constant.Statistics))
|
||||||
|
continue;
|
||||||
|
headerFileName = keyValuePair.Key;
|
||||||
|
}
|
||||||
|
headerFileName ??= pages.Count == 0 ? string.Empty : pages.ElementAt(pages.Count - 1).Key;
|
||||||
|
if (pages.Count == 0 || !pages.TryGetValue(headerFileName, out text))
|
||||||
|
text = null;
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static Header Get(ReadOnlyDictionary<string, string> pages, Constant constant)
|
||||||
|
{
|
||||||
|
Header? result;
|
||||||
|
string id;
|
||||||
|
string[] segmentsB;
|
||||||
|
string[] segmentsC;
|
||||||
|
int[] i = new int[] { 0 };
|
||||||
|
WaferSummary waferSummary;
|
||||||
|
List<WaferSummary> collection = new();
|
||||||
|
string? text = GetText(pages, constant);
|
||||||
|
if (string.IsNullOrEmpty(text))
|
||||||
|
throw new Exception();
|
||||||
|
ScanPast(text, i, constant.Date);
|
||||||
|
string date = GetToEOL(text, i);
|
||||||
|
ScanPast(text, i, "Recipe ID:");
|
||||||
|
string recipe = GetBefore(text, i, "LotID:");
|
||||||
|
recipe = recipe.Replace(";", "");
|
||||||
|
if (text.Contains("[]"))
|
||||||
|
id = GetBefore(text, i, "[]");
|
||||||
|
else if (text.Contains("[7]"))
|
||||||
|
id = GetBefore(text, i, "[7]");
|
||||||
|
else
|
||||||
|
id = GetBefore(text, i, "[");
|
||||||
|
ScanPast(text, i, "*");
|
||||||
|
string[] segments = text.Substring(i[0]).Split('*');
|
||||||
|
string[] split = new string[] { Environment.NewLine };
|
||||||
|
foreach (string segment in segments)
|
||||||
|
{
|
||||||
|
segmentsB = segment.Split(split, StringSplitOptions.None);
|
||||||
|
segmentsC = segmentsB[0].Split(' ');
|
||||||
|
waferSummary = new(id: segmentsC.Length < 1 ? string.Empty : segmentsC[0].Trim(),
|
||||||
|
lPDCount: segmentsC.Length < 2 ? string.Empty : segmentsC[1].Trim(),
|
||||||
|
lPDCM2: segmentsC.Length < 3 ? string.Empty : segmentsC[2].Trim(),
|
||||||
|
areaCount: segmentsC.Length < 4 ? string.Empty : segmentsC[3].Trim(),
|
||||||
|
areaTotal: segmentsC.Length < 5 ? string.Empty : segmentsC[4].Trim(),
|
||||||
|
scratchCount: segmentsC.Length < 6 ? string.Empty : segmentsC[5].Trim(),
|
||||||
|
scratchTotal: segmentsC.Length < 7 ? string.Empty : segmentsC[6].Trim(),
|
||||||
|
sumOfDefects: segmentsC.Length < 8 ? string.Empty : segmentsC[7].Trim(),
|
||||||
|
hazeRegion: segmentsC.Length < 9 ? string.Empty : segmentsC[8].Trim(),
|
||||||
|
hazeAverage: segmentsC.Length < 10 ? string.Empty : segmentsC[9].Trim(),
|
||||||
|
grade: segmentsC.Length < 11 ? string.Empty : segmentsC[10].Trim());
|
||||||
|
collection.Add(waferSummary);
|
||||||
|
}
|
||||||
|
ScanPast(text, i, constant.Min);
|
||||||
|
string[] preToEol1 = GetToEOL(text, i, false).Trim().Split(' ');
|
||||||
|
ReadOnlyCollection<string> toEol1 = FixToEolArray(preToEol1);
|
||||||
|
ScanPast(text, i, constant.Max);
|
||||||
|
string[] preToEol2 = GetToEOL(text, i, false).Trim().Split(' ');
|
||||||
|
ReadOnlyCollection<string> toEol2 = FixToEolArray(preToEol2);
|
||||||
|
ScanPast(text, i, constant.Average);
|
||||||
|
string[] preToEol3 = GetToEOL(text, i, false).Trim().Split(' ');
|
||||||
|
ReadOnlyCollection<string> toEol3 = FixToEolArray(preToEol3);
|
||||||
|
ScanPast(text, i, constant.StdDev);
|
||||||
|
string[] preToEol4 = GetToEOL(text, i, false).Trim().Split(' ');
|
||||||
|
ReadOnlyCollection<string> toEol4 = FixToEolArray(preToEol4);
|
||||||
|
result = new(date: date,
|
||||||
|
recipe: recipe,
|
||||||
|
id: id,
|
||||||
|
waferSummary: collection.AsReadOnly(),
|
||||||
|
lPDCountMin: toEol1[0].Trim(),
|
||||||
|
lPDCM2Min: toEol1[1].Trim(),
|
||||||
|
areaCountMin: toEol1[2].Trim(),
|
||||||
|
areaTotalMin: toEol1[3].Trim(),
|
||||||
|
scratchCountMin: toEol1[4].Trim(),
|
||||||
|
scratchTotalMin: toEol1[5].Trim(),
|
||||||
|
sumOfDefectsMin: toEol1[6].Trim(),
|
||||||
|
hazeRegionMin: toEol1[7].Trim(),
|
||||||
|
hazeAverageMin: toEol1[8].Trim(),
|
||||||
|
lPDCountMax: toEol2[0].Trim(),
|
||||||
|
lPDCM2Max: toEol2[1].Trim(),
|
||||||
|
areaCountMax: toEol2[2].Trim(),
|
||||||
|
areaTotalMax: toEol2[3].Trim(),
|
||||||
|
scratchCountMax: toEol2[4].Trim(),
|
||||||
|
scratchTotalMax: toEol2[5].Trim(),
|
||||||
|
sumOfDefectsMax: toEol2[6].Trim(),
|
||||||
|
hazeRegionMax: toEol2[7].Trim(),
|
||||||
|
hazeAverageMax: toEol2[8].Trim(),
|
||||||
|
lPDCountAvg: toEol3[0].Trim(),
|
||||||
|
lPDCM2Avg: toEol3[1].Trim(),
|
||||||
|
areaCountAvg: toEol3[2].Trim(),
|
||||||
|
areaTotalAvg: toEol3[3].Trim(),
|
||||||
|
scratchCountAvg: toEol3[4].Trim(),
|
||||||
|
scratchTotalAvg: toEol3[5].Trim(),
|
||||||
|
sumOfDefectsAvg: toEol3[6].Trim(),
|
||||||
|
hazeRegionAvg: toEol3[7].Trim(),
|
||||||
|
hazeAverageAvg: toEol3[8].Trim(),
|
||||||
|
lPDCountStdDev: toEol4[0].Trim(),
|
||||||
|
lPDCM2StdDev: toEol4[1].Trim(),
|
||||||
|
areaCountStdDev: toEol4[2].Trim(),
|
||||||
|
areaTotalStdDev: toEol4[3].Trim(),
|
||||||
|
scratchCountStdDev: toEol4[4].Trim(),
|
||||||
|
scratchTotalStdDev: toEol4[5].Trim(),
|
||||||
|
sumOfDefectsStdDev: toEol4[6].Trim(),
|
||||||
|
hazeRegionStdDev: toEol4[7].Trim(),
|
||||||
|
hazeAverageStdDev: toEol4[8].Trim());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[JsonSourceGenerationOptions(WriteIndented = true)]
|
||||||
|
[JsonSerializable(typeof(Header))]
|
||||||
|
internal partial class HeaderSourceGenerationContext : JsonSerializerContext
|
||||||
|
{
|
||||||
|
}
|
||||||
193
Adaptation/FileHandlers/pdsf/Row.cs
Normal file
193
Adaptation/FileHandlers/pdsf/Row.cs
Normal file
@ -0,0 +1,193 @@
|
|||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace Adaptation.FileHandlers.pdsf;
|
||||||
|
|
||||||
|
#nullable enable
|
||||||
|
|
||||||
|
internal class Row
|
||||||
|
{
|
||||||
|
|
||||||
|
public Row(Run run, int i)
|
||||||
|
{
|
||||||
|
Index = i;
|
||||||
|
//
|
||||||
|
Date = run.Header.Date;
|
||||||
|
Recipe = run.Header.Recipe;
|
||||||
|
Id = run.Header.Id;
|
||||||
|
//
|
||||||
|
WaferId = run.Header.WaferSummary[i].Id;
|
||||||
|
LPDCount = run.Header.WaferSummary[i].LPDCount;
|
||||||
|
LPDCM2 = run.Header.WaferSummary[i].LPDCM2;
|
||||||
|
AreaCount = run.Header.WaferSummary[i].AreaCount;
|
||||||
|
AreaTotal = run.Header.WaferSummary[i].AreaTotal;
|
||||||
|
ScratchCount = run.Header.WaferSummary[i].ScratchCount;
|
||||||
|
ScratchTotal = run.Header.WaferSummary[i].ScratchTotal;
|
||||||
|
SumOfDefects = run.Header.WaferSummary[i].SumOfDefects;
|
||||||
|
HazeRegion = run.Header.WaferSummary[i].HazeRegion;
|
||||||
|
HazeAverage = run.Header.WaferSummary[i].HazeAverage;
|
||||||
|
Grade = run.Header.WaferSummary[i].Grade;
|
||||||
|
//
|
||||||
|
LPDCountMin = run.Header.LPDCountMin;
|
||||||
|
LPDCM2Min = run.Header.LPDCM2Min;
|
||||||
|
AreaCountMin = run.Header.AreaCountMin;
|
||||||
|
AreaTotalMin = run.Header.AreaTotalMin;
|
||||||
|
ScratchCountMin = run.Header.ScratchCountMin;
|
||||||
|
ScratchTotalMin = run.Header.ScratchTotalMin;
|
||||||
|
SumOfDefectsMin = run.Header.SumOfDefectsMin;
|
||||||
|
HazeRegionMin = run.Header.HazeRegionMin;
|
||||||
|
HazeAverageMin = run.Header.HazeAverageMin;
|
||||||
|
LPDCountMax = run.Header.LPDCountMax;
|
||||||
|
LPDCM2Max = run.Header.LPDCM2Max;
|
||||||
|
AreaCountMax = run.Header.AreaCountMax;
|
||||||
|
AreaTotalMax = run.Header.AreaTotalMax;
|
||||||
|
ScratchCountMax = run.Header.ScratchCountMax;
|
||||||
|
ScratchTotalMax = run.Header.ScratchTotalMax;
|
||||||
|
SumOfDefectsMax = run.Header.SumOfDefectsMax;
|
||||||
|
HazeRegionMax = run.Header.HazeRegionMax;
|
||||||
|
HazeAverageMax = run.Header.HazeAverageMax;
|
||||||
|
LPDCountAvg = run.Header.LPDCountAvg;
|
||||||
|
LPDCM2Avg = run.Header.LPDCM2Avg;
|
||||||
|
AreaCountAvg = run.Header.AreaCountAvg;
|
||||||
|
AreaTotalAvg = run.Header.AreaTotalAvg;
|
||||||
|
ScratchCountAvg = run.Header.ScratchCountAvg;
|
||||||
|
ScratchTotalAvg = run.Header.ScratchTotalAvg;
|
||||||
|
SumOfDefectsAvg = run.Header.SumOfDefectsAvg;
|
||||||
|
HazeRegionAvg = run.Header.HazeRegionAvg;
|
||||||
|
HazeAverageAvg = run.Header.HazeAverageAvg;
|
||||||
|
LPDCountStdDev = run.Header.LPDCountStdDev;
|
||||||
|
LPDCM2StdDev = run.Header.LPDCM2StdDev;
|
||||||
|
AreaCountStdDev = run.Header.AreaCountStdDev;
|
||||||
|
AreaTotalStdDev = run.Header.AreaTotalStdDev;
|
||||||
|
ScratchCountStdDev = run.Header.ScratchCountStdDev;
|
||||||
|
ScratchTotalStdDev = run.Header.ScratchTotalStdDev;
|
||||||
|
SumOfDefectsStdDev = run.Header.SumOfDefectsStdDev;
|
||||||
|
HazeRegionStdDev = run.Header.HazeRegionStdDev;
|
||||||
|
HazeAverageStdDev = run.Header.HazeAverageStdDev;
|
||||||
|
//
|
||||||
|
WaferDate = run.Wafers[i].Date;
|
||||||
|
Comments = run.Wafers[i].Comments;
|
||||||
|
Sort = run.Wafers[i].Sort;
|
||||||
|
WaferLPDCount = run.Wafers[i].LPDCount;
|
||||||
|
WaferLPDCM2 = run.Wafers[i].LPDCM2;
|
||||||
|
Bin1 = run.Wafers[i].Bin1;
|
||||||
|
Bin2 = run.Wafers[i].Bin2;
|
||||||
|
Bin3 = run.Wafers[i].Bin3;
|
||||||
|
Bin4 = run.Wafers[i].Bin4;
|
||||||
|
Bin5 = run.Wafers[i].Bin5;
|
||||||
|
Bin6 = run.Wafers[i].Bin6;
|
||||||
|
Bin7 = run.Wafers[i].Bin7;
|
||||||
|
Bin8 = run.Wafers[i].Bin8;
|
||||||
|
Mean = run.Wafers[i].Mean;
|
||||||
|
StdDev = run.Wafers[i].StdDev;
|
||||||
|
WaferAreaCount = run.Wafers[i].AreaCount;
|
||||||
|
WaferAreaTotal = run.Wafers[i].AreaTotal;
|
||||||
|
WaferScratchCount = run.Wafers[i].ScratchCount;
|
||||||
|
WaferScratchTotal = run.Wafers[i].ScratchTotal;
|
||||||
|
WaferSumOfDefects = run.Wafers[i].SumOfDefects;
|
||||||
|
WaferHazeRegion = run.Wafers[i].HazeRegion;
|
||||||
|
WaferHazeAverage = run.Wafers[i].HazeAverage;
|
||||||
|
HazePeak = run.Wafers[i].HazePeak;
|
||||||
|
Laser = run.Wafers[i].Laser;
|
||||||
|
Gain = run.Wafers[i].Gain;
|
||||||
|
Diameter = run.Wafers[i].Diameter;
|
||||||
|
Thresh = run.Wafers[i].Thresh;
|
||||||
|
Exclusion = run.Wafers[i].Exclusion;
|
||||||
|
HazeRng = run.Wafers[i].HazeRng;
|
||||||
|
Thruput = run.Wafers[i].Thruput;
|
||||||
|
WaferRecipe = run.Wafers[i].Recipe;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Index { get; }
|
||||||
|
//
|
||||||
|
public string Date { get; }
|
||||||
|
public string Recipe { get; }
|
||||||
|
public string Id { get; }
|
||||||
|
//
|
||||||
|
public string WaferId { get; }
|
||||||
|
public string LPDCount { get; }
|
||||||
|
public string LPDCM2 { get; }
|
||||||
|
public string AreaCount { get; }
|
||||||
|
public string AreaTotal { get; }
|
||||||
|
public string ScratchCount { get; }
|
||||||
|
public string ScratchTotal { get; }
|
||||||
|
public string SumOfDefects { get; }
|
||||||
|
public string HazeRegion { get; }
|
||||||
|
public string HazeAverage { get; }
|
||||||
|
public string Grade { get; }
|
||||||
|
//
|
||||||
|
public string LPDCountMin { get; }
|
||||||
|
public string LPDCM2Min { get; }
|
||||||
|
public string AreaCountMin { get; }
|
||||||
|
public string AreaTotalMin { get; }
|
||||||
|
public string ScratchCountMin { get; }
|
||||||
|
public string ScratchTotalMin { get; }
|
||||||
|
public string SumOfDefectsMin { get; }
|
||||||
|
public string HazeRegionMin { get; }
|
||||||
|
public string HazeAverageMin { get; }
|
||||||
|
public string LPDCountMax { get; }
|
||||||
|
public string LPDCM2Max { get; }
|
||||||
|
public string AreaCountMax { get; }
|
||||||
|
public string AreaTotalMax { get; }
|
||||||
|
public string ScratchCountMax { get; }
|
||||||
|
public string ScratchTotalMax { get; }
|
||||||
|
public string SumOfDefectsMax { get; }
|
||||||
|
public string HazeRegionMax { get; }
|
||||||
|
public string HazeAverageMax { get; }
|
||||||
|
public string LPDCountAvg { get; }
|
||||||
|
public string LPDCM2Avg { get; }
|
||||||
|
public string AreaCountAvg { get; }
|
||||||
|
public string AreaTotalAvg { get; }
|
||||||
|
public string ScratchCountAvg { get; }
|
||||||
|
public string ScratchTotalAvg { get; }
|
||||||
|
public string SumOfDefectsAvg { get; }
|
||||||
|
public string HazeRegionAvg { get; }
|
||||||
|
public string HazeAverageAvg { get; }
|
||||||
|
public string LPDCountStdDev { get; }
|
||||||
|
public string LPDCM2StdDev { get; }
|
||||||
|
public string AreaCountStdDev { get; }
|
||||||
|
public string AreaTotalStdDev { get; }
|
||||||
|
public string ScratchCountStdDev { get; }
|
||||||
|
public string ScratchTotalStdDev { get; }
|
||||||
|
public string SumOfDefectsStdDev { get; }
|
||||||
|
public string HazeRegionStdDev { get; }
|
||||||
|
public string HazeAverageStdDev { get; }
|
||||||
|
//
|
||||||
|
public string WaferDate { get; }
|
||||||
|
public string Comments { get; }
|
||||||
|
public string Sort { get; }
|
||||||
|
public string WaferLPDCount { get; }
|
||||||
|
public string WaferLPDCM2 { get; }
|
||||||
|
public string Bin1 { get; }
|
||||||
|
public string Bin2 { get; }
|
||||||
|
public string Bin3 { get; }
|
||||||
|
public string Bin4 { get; }
|
||||||
|
public string Bin5 { get; }
|
||||||
|
public string Bin6 { get; }
|
||||||
|
public string Bin7 { get; }
|
||||||
|
public string Bin8 { get; }
|
||||||
|
public string Mean { get; }
|
||||||
|
public string StdDev { get; }
|
||||||
|
public string WaferAreaCount { get; }
|
||||||
|
public string WaferAreaTotal { get; }
|
||||||
|
public string WaferScratchCount { get; }
|
||||||
|
public string WaferScratchTotal { get; }
|
||||||
|
public string WaferSumOfDefects { get; }
|
||||||
|
public string WaferHazeRegion { get; }
|
||||||
|
public string WaferHazeAverage { get; }
|
||||||
|
public string HazePeak { get; }
|
||||||
|
public string Laser { get; }
|
||||||
|
public string Gain { get; }
|
||||||
|
public string Diameter { get; }
|
||||||
|
public string Thresh { get; }
|
||||||
|
public string Exclusion { get; }
|
||||||
|
public string HazeRng { get; }
|
||||||
|
public string Thruput { get; }
|
||||||
|
public string WaferRecipe { get; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[JsonSourceGenerationOptions(WriteIndented = true)]
|
||||||
|
[JsonSerializable(typeof(Row))]
|
||||||
|
internal partial class RowSourceGenerationContext : JsonSerializerContext
|
||||||
|
{
|
||||||
|
}
|
||||||
145
Adaptation/FileHandlers/pdsf/Run.cs
Normal file
145
Adaptation/FileHandlers/pdsf/Run.cs
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
using Adaptation.Shared;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace Adaptation.FileHandlers.pdsf;
|
||||||
|
|
||||||
|
#nullable enable
|
||||||
|
|
||||||
|
internal class Run
|
||||||
|
{
|
||||||
|
|
||||||
|
public Header Header { get; }
|
||||||
|
public ReadOnlyCollection<Wafer> Wafers { get; }
|
||||||
|
|
||||||
|
public Run(Header header, ReadOnlyCollection<Wafer> wafers)
|
||||||
|
{
|
||||||
|
Header = header;
|
||||||
|
Wafers = wafers;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static ReadOnlyCollection<Wafer> GetLastWaferForEachSlot(ReadOnlyDictionary<string, string> pages, Constant constant, Header header)
|
||||||
|
{
|
||||||
|
List<Wafer> results = new();
|
||||||
|
string id;
|
||||||
|
Wafer wafer;
|
||||||
|
ReadOnlyCollection<Wafer>? wafers;
|
||||||
|
ReadOnlyDictionary<string, ReadOnlyCollection<Wafer>> keyValuePairs = Wafer.Get(pages, constant);
|
||||||
|
ReadOnlyCollection<string> waferIds = GetWaferIds(header);
|
||||||
|
for (int i = 0; i < waferIds.Count; i++)
|
||||||
|
{
|
||||||
|
id = waferIds[i];
|
||||||
|
if (!keyValuePairs.TryGetValue(id, out wafers) || wafers.Count == 0)
|
||||||
|
wafer = Wafer.Get(id);
|
||||||
|
else
|
||||||
|
wafer = (from l in wafers where l.Recipe == header.Recipe select l).Last();
|
||||||
|
if (wafer is null)
|
||||||
|
break;
|
||||||
|
results.Add(wafer);
|
||||||
|
}
|
||||||
|
return results.AsReadOnly();
|
||||||
|
}
|
||||||
|
|
||||||
|
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.Wafers.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));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static ReadOnlyCollection<string> GetWaferIds(Header header)
|
||||||
|
{
|
||||||
|
List<string> results = new();
|
||||||
|
foreach (WaferSummary waferSummary in header.WaferSummary)
|
||||||
|
results.Add(waferSummary.Id);
|
||||||
|
return results.AsReadOnly();
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static Run? Get(Logistics logistics, List<FileInfo> fileInfoCollection, ReadOnlyDictionary<string, string> pages)
|
||||||
|
{
|
||||||
|
Run? result;
|
||||||
|
Constant constant = new();
|
||||||
|
Header? header = Header.Get(pages, constant);
|
||||||
|
if (header is null)
|
||||||
|
result = null;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ReadOnlyCollection<Wafer> wafers = GetLastWaferForEachSlot(pages, constant, header);
|
||||||
|
result = new(header, wafers);
|
||||||
|
WriteJson(logistics, fileInfoCollection, result);
|
||||||
|
WriteCommaSeparatedValues(logistics, result);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[JsonSourceGenerationOptions(WriteIndented = true)]
|
||||||
|
[JsonSerializable(typeof(Run))]
|
||||||
|
internal partial class RunSourceGenerationContext : JsonSerializerContext
|
||||||
|
{
|
||||||
|
}
|
||||||
242
Adaptation/FileHandlers/pdsf/Wafer.cs
Normal file
242
Adaptation/FileHandlers/pdsf/Wafer.cs
Normal file
@ -0,0 +1,242 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace Adaptation.FileHandlers.pdsf;
|
||||||
|
|
||||||
|
#nullable enable
|
||||||
|
|
||||||
|
public class Wafer
|
||||||
|
{
|
||||||
|
|
||||||
|
public Wafer(string date, string id, string comments, string sort, string lPDCount, string lPDCM2, string bin1, string bin2, string bin3, string bin4, string bin5, string bin6, string bin7, string bin8, string mean, string stdDev, string areaCount, string areaTotal, string scratchCount, string scratchTotal, string sumOfDefects, string hazeRegion, string hazeAverage, string hazePeak, string laser, string gain, string diameter, string thresh, string exclusion, string hazeRng, string thruput, string recipe)
|
||||||
|
{
|
||||||
|
Date = date;
|
||||||
|
Id = id;
|
||||||
|
Comments = comments;
|
||||||
|
Sort = sort;
|
||||||
|
LPDCount = lPDCount;
|
||||||
|
LPDCM2 = lPDCM2;
|
||||||
|
Bin1 = bin1;
|
||||||
|
Bin2 = bin2;
|
||||||
|
Bin3 = bin3;
|
||||||
|
Bin4 = bin4;
|
||||||
|
Bin5 = bin5;
|
||||||
|
Bin6 = bin6;
|
||||||
|
Bin7 = bin7;
|
||||||
|
Bin8 = bin8;
|
||||||
|
Mean = mean;
|
||||||
|
StdDev = stdDev;
|
||||||
|
AreaCount = areaCount;
|
||||||
|
AreaTotal = areaTotal;
|
||||||
|
ScratchCount = scratchCount;
|
||||||
|
ScratchTotal = scratchTotal;
|
||||||
|
SumOfDefects = sumOfDefects;
|
||||||
|
HazeRegion = hazeRegion;
|
||||||
|
HazeAverage = hazeAverage;
|
||||||
|
HazePeak = hazePeak;
|
||||||
|
Laser = laser;
|
||||||
|
Gain = gain;
|
||||||
|
Diameter = diameter;
|
||||||
|
Thresh = thresh;
|
||||||
|
Exclusion = exclusion;
|
||||||
|
HazeRng = hazeRng;
|
||||||
|
Thruput = thruput;
|
||||||
|
Recipe = recipe;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static Wafer Get(string id) =>
|
||||||
|
new(date: string.Empty,
|
||||||
|
id: id,
|
||||||
|
comments: string.Empty,
|
||||||
|
sort: string.Empty,
|
||||||
|
lPDCount: string.Empty,
|
||||||
|
lPDCM2: string.Empty,
|
||||||
|
bin1: string.Empty,
|
||||||
|
bin2: string.Empty,
|
||||||
|
bin3: string.Empty,
|
||||||
|
bin4: string.Empty,
|
||||||
|
bin5: string.Empty,
|
||||||
|
bin6: string.Empty,
|
||||||
|
bin7: string.Empty,
|
||||||
|
bin8: string.Empty,
|
||||||
|
mean: string.Empty,
|
||||||
|
stdDev: string.Empty,
|
||||||
|
areaCount: string.Empty,
|
||||||
|
areaTotal: string.Empty,
|
||||||
|
scratchCount: string.Empty,
|
||||||
|
scratchTotal: string.Empty,
|
||||||
|
sumOfDefects: string.Empty,
|
||||||
|
hazeRegion: string.Empty,
|
||||||
|
hazeAverage: string.Empty,
|
||||||
|
hazePeak: string.Empty,
|
||||||
|
laser: string.Empty,
|
||||||
|
gain: string.Empty,
|
||||||
|
diameter: string.Empty,
|
||||||
|
thresh: string.Empty,
|
||||||
|
exclusion: string.Empty,
|
||||||
|
hazeRng: string.Empty,
|
||||||
|
thruput: string.Empty,
|
||||||
|
recipe: string.Empty);
|
||||||
|
|
||||||
|
public string Date { get; }
|
||||||
|
public string Id { get; }
|
||||||
|
public string Comments { get; }
|
||||||
|
public string Sort { get; }
|
||||||
|
public string LPDCount { get; }
|
||||||
|
public string LPDCM2 { get; }
|
||||||
|
public string Bin1 { get; }
|
||||||
|
public string Bin2 { get; }
|
||||||
|
public string Bin3 { get; }
|
||||||
|
public string Bin4 { get; }
|
||||||
|
public string Bin5 { get; }
|
||||||
|
public string Bin6 { get; }
|
||||||
|
public string Bin7 { get; }
|
||||||
|
public string Bin8 { get; }
|
||||||
|
public string Mean { get; }
|
||||||
|
public string StdDev { get; }
|
||||||
|
public string AreaCount { get; }
|
||||||
|
public string AreaTotal { get; }
|
||||||
|
public string ScratchCount { get; }
|
||||||
|
public string ScratchTotal { get; }
|
||||||
|
public string SumOfDefects { get; }
|
||||||
|
public string HazeRegion { get; }
|
||||||
|
public string HazeAverage { get; }
|
||||||
|
public string HazePeak { get; }
|
||||||
|
public string Laser { get; }
|
||||||
|
public string Gain { get; }
|
||||||
|
public string Diameter { get; }
|
||||||
|
public string Thresh { get; }
|
||||||
|
public string Exclusion { get; }
|
||||||
|
public string HazeRng { get; }
|
||||||
|
public string Thruput { get; }
|
||||||
|
public string Recipe { get; }
|
||||||
|
|
||||||
|
internal static ReadOnlyDictionary<string, ReadOnlyCollection<Wafer>> Get(ReadOnlyDictionary<string, string> pages, Constant constant)
|
||||||
|
{
|
||||||
|
Dictionary<string, ReadOnlyCollection<Wafer>> results = new();
|
||||||
|
Wafer wafer;
|
||||||
|
string? text;
|
||||||
|
List<string> stringList;
|
||||||
|
int[] i = new int[] { 0 };
|
||||||
|
Dictionary<string, List<Wafer>> keyValuePairs = new();
|
||||||
|
foreach (KeyValuePair<string, string> keyValuePair in pages)
|
||||||
|
{
|
||||||
|
i[0] = 0;
|
||||||
|
stringList = new();
|
||||||
|
if (!pages.TryGetValue(keyValuePair.Key, out text))
|
||||||
|
throw new Exception();
|
||||||
|
if (string.IsNullOrEmpty(text) || !text.Contains(constant.Id) || text.Contains(constant.Statistics) || text.Contains(constant.DatabaseId))
|
||||||
|
continue;
|
||||||
|
i[0] = 0;
|
||||||
|
stringList = new();
|
||||||
|
if (!pages.TryGetValue(keyValuePair.Key, out text))
|
||||||
|
throw new Exception();
|
||||||
|
if (string.IsNullOrEmpty(text) || !text.Contains(constant.Id))
|
||||||
|
continue;
|
||||||
|
Header.ScanPast(text, i, constant.Date);
|
||||||
|
string date = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, constant.Id);
|
||||||
|
string id = Header.GetToEOL(text, i);
|
||||||
|
if (id.Length > 5)
|
||||||
|
id = string.Concat(id.Substring(0, 5), "... - ***");
|
||||||
|
id = id.Replace("*", "");
|
||||||
|
Header.ScanPast(text, i, "Comments:");
|
||||||
|
string comments = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "Sort:");
|
||||||
|
string sort = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "LPD Count:");
|
||||||
|
string lPDCount = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "LPD / cm2:");
|
||||||
|
string lPDCM2 = Header.GetToEOL(text, i);
|
||||||
|
while (Header.GetBefore(text, i, ":").Contains("Bin"))
|
||||||
|
stringList.Add(Header.GetToEOL(text, i));
|
||||||
|
string bin1 = stringList.Count >= 1 ? stringList[0] : string.Empty;
|
||||||
|
string bin2 = stringList.Count >= 2 ? stringList[1] : string.Empty;
|
||||||
|
string bin3 = stringList.Count >= 3 ? stringList[2] : string.Empty;
|
||||||
|
string bin4 = stringList.Count >= 4 ? stringList[3] : string.Empty;
|
||||||
|
string bin5 = stringList.Count >= 5 ? stringList[4] : string.Empty;
|
||||||
|
string bin6 = stringList.Count >= 6 ? stringList[5] : string.Empty;
|
||||||
|
string bin7 = stringList.Count >= 7 ? stringList[6] : string.Empty;
|
||||||
|
string bin8 = stringList.Count >= 8 ? stringList[7] : string.Empty;
|
||||||
|
string mean = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "Std Dev:");
|
||||||
|
string stdDev = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "Area Count:");
|
||||||
|
string areaCount = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "Area Total:");
|
||||||
|
string areaTotal = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "Scratch Count:");
|
||||||
|
string scratchCount = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "Scratch Total:");
|
||||||
|
string scratchTotal = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "Sum of All Defects:");
|
||||||
|
string sumOfDefects = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "Haze Region:");
|
||||||
|
string hazeRegion = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "Haze Average:");
|
||||||
|
string hazeAverage = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "Haze Peak:");
|
||||||
|
string hazePeak = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "Laser:");
|
||||||
|
string laser = Header.GetBefore(text, i, "Gain:");
|
||||||
|
string gain = Header.GetBefore(text, i, "Diameter:");
|
||||||
|
string diameter = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "Thresh:");
|
||||||
|
string thresh = Header.GetBefore(text, i, "Exclusion:");
|
||||||
|
string exclusion = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "Haze Rng:");
|
||||||
|
string hazeRng = Header.GetBefore(text, i, "Thruput:");
|
||||||
|
string thruput = Header.GetToEOL(text, i);
|
||||||
|
Header.ScanPast(text, i, "Recipe ID:");
|
||||||
|
string recipe = Header.GetToEOL(text, i);
|
||||||
|
wafer = new(date: date,
|
||||||
|
id: id,
|
||||||
|
comments: comments,
|
||||||
|
sort: sort,
|
||||||
|
lPDCount: lPDCount,
|
||||||
|
lPDCM2: lPDCM2,
|
||||||
|
bin1: bin1,
|
||||||
|
bin2: bin2,
|
||||||
|
bin3: bin3,
|
||||||
|
bin4: bin4,
|
||||||
|
bin5: bin5,
|
||||||
|
bin6: bin6,
|
||||||
|
bin7: bin7,
|
||||||
|
bin8: bin8,
|
||||||
|
mean: mean,
|
||||||
|
stdDev: stdDev,
|
||||||
|
areaCount: areaCount,
|
||||||
|
areaTotal: areaTotal,
|
||||||
|
scratchCount: scratchCount,
|
||||||
|
scratchTotal: scratchTotal,
|
||||||
|
sumOfDefects: sumOfDefects,
|
||||||
|
hazeRegion: hazeRegion,
|
||||||
|
hazeAverage: hazeAverage,
|
||||||
|
hazePeak: hazePeak,
|
||||||
|
laser: laser,
|
||||||
|
gain: gain,
|
||||||
|
diameter: diameter,
|
||||||
|
thresh: thresh,
|
||||||
|
exclusion: exclusion,
|
||||||
|
hazeRng: hazeRng,
|
||||||
|
thruput: thruput,
|
||||||
|
recipe: recipe);
|
||||||
|
if (!keyValuePairs.ContainsKey(id))
|
||||||
|
keyValuePairs.Add(id, new List<Wafer>());
|
||||||
|
keyValuePairs[id].Add(wafer);
|
||||||
|
}
|
||||||
|
foreach (KeyValuePair<string, List<Wafer>> keyValuePair in keyValuePairs)
|
||||||
|
results.Add(keyValuePair.Key, keyValuePair.Value.AsReadOnly());
|
||||||
|
return new(results);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[JsonSourceGenerationOptions(WriteIndented = true)]
|
||||||
|
[JsonSerializable(typeof(Wafer))]
|
||||||
|
internal partial class WaferSourceGenerationContext : JsonSerializerContext
|
||||||
|
{
|
||||||
|
}
|
||||||
43
Adaptation/FileHandlers/pdsf/WaferSummary.cs
Normal file
43
Adaptation/FileHandlers/pdsf/WaferSummary.cs
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace Adaptation.FileHandlers.pdsf;
|
||||||
|
|
||||||
|
#nullable enable
|
||||||
|
|
||||||
|
public class WaferSummary
|
||||||
|
{
|
||||||
|
|
||||||
|
public WaferSummary(string id, string lPDCount, string lPDCM2, string areaCount, string areaTotal, string scratchCount, string scratchTotal, string sumOfDefects, string hazeRegion, string hazeAverage, string grade)
|
||||||
|
{
|
||||||
|
Id = id;
|
||||||
|
LPDCount = lPDCount;
|
||||||
|
LPDCM2 = lPDCM2;
|
||||||
|
AreaCount = areaCount;
|
||||||
|
AreaTotal = areaTotal;
|
||||||
|
ScratchCount = scratchCount;
|
||||||
|
ScratchTotal = scratchTotal;
|
||||||
|
SumOfDefects = sumOfDefects;
|
||||||
|
HazeRegion = hazeRegion;
|
||||||
|
HazeAverage = hazeAverage;
|
||||||
|
Grade = grade;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Id { get; }
|
||||||
|
public string LPDCount { get; }
|
||||||
|
public string LPDCM2 { get; }
|
||||||
|
public string AreaCount { get; }
|
||||||
|
public string AreaTotal { get; }
|
||||||
|
public string ScratchCount { get; }
|
||||||
|
public string ScratchTotal { get; }
|
||||||
|
public string SumOfDefects { get; }
|
||||||
|
public string HazeRegion { get; }
|
||||||
|
public string HazeAverage { get; }
|
||||||
|
public string Grade { get; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[JsonSourceGenerationOptions(WriteIndented = true)]
|
||||||
|
[JsonSerializable(typeof(WaferSummary))]
|
||||||
|
internal partial class WaferSummarySourceGenerationContext : 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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,190 +1 @@
|
|||||||
trigger:
|
# dotnet nuget push --source https://tfs.intra.infineon.com/tfs/FactoryIntegration/fccf8303-9cf7-4788-a9e0-4042541503fa/_packaging/EAF-Mesa-Integration/nuget/v3/index.json --api-key az D:\vsts-agent-win-x64-2.210.1-eaf\nuget\infineon.mesa.pdf.text.stripper.4.8.0.1.nupkg
|
||||||
branches:
|
|
||||||
include:
|
|
||||||
- development
|
|
||||||
paths:
|
|
||||||
include:
|
|
||||||
- "Adaptation/*"
|
|
||||||
|
|
||||||
pool:
|
|
||||||
name: eaf
|
|
||||||
demands: MET08DDUPSFS6420-Development
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- script: |
|
|
||||||
set coreVersion=net7.0
|
|
||||||
echo %coreVersion%
|
|
||||||
echo ##vso[task.setvariable variable=CoreVersion;]%coreVersion%
|
|
||||||
echo $(CoreVersion)
|
|
||||||
displayName: CoreVersion
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set configuration=Debug
|
|
||||||
echo %configuration%
|
|
||||||
echo ##vso[task.setvariable variable=Configuration;]%configuration%
|
|
||||||
echo $(Configuration)
|
|
||||||
displayName: Configuration
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set nugetSource=https://eaf-dev-reporting.mes.infineon.com/v3/index.json
|
|
||||||
echo %nugetSource%
|
|
||||||
echo ##vso[task.setvariable variable=NugetSource;]%nugetSource%
|
|
||||||
echo $(NugetSource)
|
|
||||||
displayName: NugetSource
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
set gitCommit=$(Build.SourceVersion)
|
|
||||||
set gitCommitSeven=%gitCommit:~0,7%
|
|
||||||
echo %gitCommitSeven%
|
|
||||||
echo ##vso[task.setvariable variable=GitCommitSeven;]%gitCommitSeven%
|
|
||||||
echo $(GitCommitSeven)
|
|
||||||
displayName: GitCommitSeven
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
echo $(Build.BuildId)
|
|
||||||
echo $(Build.Reason)
|
|
||||||
echo $(Build.Repository.Id)
|
|
||||||
echo $(Build.Repository.Name)
|
|
||||||
echo $(Build.SourceVersion)
|
|
||||||
echo $(CoreVersion)
|
|
||||||
echo $(Configuration)
|
|
||||||
echo $(NugetSource)
|
|
||||||
echo $(GitCommitSeven)
|
|
||||||
REM echo $(pipelinePassword)
|
|
||||||
displayName: "Echo Check"
|
|
||||||
|
|
||||||
- script: '"C:\program files\dotnet\dotnet.exe" nuget locals all --clear'
|
|
||||||
displayName: "Nuget Clear"
|
|
||||||
# enabled: false
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
"C:\program files\dotnet\dotnet.exe" user-secrets init
|
|
||||||
"C:\program files\dotnet\dotnet.exe" user-secrets set "BuildNumber" "$(Build.BuildId)"
|
|
||||||
"C:\program files\dotnet\dotnet.exe" user-secrets set "GitCommitSeven" "$(GitCommitSeven)"
|
|
||||||
"C:\program files\dotnet\dotnet.exe" user-secrets list
|
|
||||||
workingDirectory: Adaptation
|
|
||||||
displayName: "Safe storage of app secrets - Adaptation"
|
|
||||||
|
|
||||||
- task: CopyFiles@2
|
|
||||||
displayName: "Copy Files to: - GhostPCL"
|
|
||||||
inputs:
|
|
||||||
Contents: '*'
|
|
||||||
SourceFolder: '\\mesfs.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\GhostPCL\gpcl6win64'
|
|
||||||
TargetFolder: 'Adaptation\bin\$(Configuration)\net6.0\win-x64'
|
|
||||||
OverWrite: true
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
- task: CopyFiles@2
|
|
||||||
displayName: "Copy Files to: - LincPDFC"
|
|
||||||
inputs:
|
|
||||||
Contents: '*'
|
|
||||||
SourceFolder: '\\mesfs.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\LincPDFC\v2.6.6.21'
|
|
||||||
TargetFolder: 'Adaptation\bin\$(Configuration)\net6.0\win-x64'
|
|
||||||
OverWrite: true
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
- task: CopyFiles@2
|
|
||||||
displayName: "Copy Files to: - PDF-Text-Stripper"
|
|
||||||
inputs:
|
|
||||||
Contents: '*'
|
|
||||||
SourceFolder: '\\mesfs.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\PDF-Text-Stripper\v4.8.0.1'
|
|
||||||
TargetFolder: 'Adaptation\bin\$(Configuration)\net6.0\win-x64'
|
|
||||||
OverWrite: true
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
- script: '"C:\program files\dotnet\dotnet.exe" build --configuration $(Configuration) --source $(NugetSource)'
|
|
||||||
workingDirectory: Adaptation
|
|
||||||
displayName: "Core Build - Adaptation"
|
|
||||||
|
|
||||||
- powershell: Get-ChildItem .\ -include TestResults -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse }
|
|
||||||
workingDirectory: "$(System.DefaultWorkingDirectory)/../../../$(Build.Repository.Name)"
|
|
||||||
displayName: "PowerShell Script"
|
|
||||||
continueOnError: true
|
|
||||||
|
|
||||||
- script: "dotnet test --configuration $(Configuration)"
|
|
||||||
workingDirectory: Adaptation
|
|
||||||
displayName: "Core Test"
|
|
||||||
|
|
||||||
- script: 'move /y "$(System.DefaultWorkingDirectory)/../../../$(Build.Repository.Name)/05_TestResults/TestResults" $(System.DefaultWorkingDirectory)'
|
|
||||||
displayName: "Move Results"
|
|
||||||
|
|
||||||
- script: '"C:\program files\dotnet\dotnet.exe" tool restore'
|
|
||||||
workingDirectory: Adaptation
|
|
||||||
displayName: "Tool Restore"
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
- script: '"C:\program files\dotnet\dotnet.exe" ReportGenerator -reports:$(System.DefaultWorkingDirectory)/TestResults/**/coverage.cobertura.xml -targetDir:$(Build.ArtifactStagingDirectory)\Coverage -reportTypes:Html_Dark'
|
|
||||||
workingDirectory: Adaptation
|
|
||||||
displayName: "Report Generator"
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
- task: PublishTestResults@2
|
|
||||||
displayName: "Publish Test Results **/*.trx"
|
|
||||||
inputs:
|
|
||||||
testResultsFormat: VSTest
|
|
||||||
testResultsFiles: "**/*.trx"
|
|
||||||
testRunTitle: "$(GitCommitSeven)-$(Build.BuildId)-$(CoreVersion)-$(Configuration)-$(Build.Repository.Name)"
|
|
||||||
searchFolder: "$(System.DefaultWorkingDirectory)/TestResults"
|
|
||||||
|
|
||||||
- task: PublishTestResults@2
|
|
||||||
displayName: "Publish Test Results */coverage.cobertura.xml"
|
|
||||||
inputs:
|
|
||||||
testResultsFormat: VSTest
|
|
||||||
testResultsFiles: "*/coverage.cobertura.xml"
|
|
||||||
testRunTitle: "$(GitCommitSeven)-$(Build.BuildId)-$(CoreVersion)-$(Configuration)-$(Build.Repository.Name)"
|
|
||||||
searchFolder: "$(System.DefaultWorkingDirectory)/TestResults"
|
|
||||||
|
|
||||||
- task: mspremier.CreateWorkItem.CreateWorkItem-task.CreateWorkItem@1
|
|
||||||
displayName: "Create work item"
|
|
||||||
inputs:
|
|
||||||
teamProject: "Mesa_FI"
|
|
||||||
workItemType: Bug
|
|
||||||
title: $(GitCommitSeven)-$(Build.BuildId)-$(Build.Repository.Name)-$(Configuration)
|
|
||||||
assignedTo: "$(Build.RequestedForId)"
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
- script: '"C:\program files\dotnet\dotnet.exe" publish --configuration $(Configuration) --runtime win-x64 --self-contained -o $(Build.ArtifactStagingDirectory)\Adaptation --source $(NugetSource)'
|
|
||||||
workingDirectory: Adaptation
|
|
||||||
displayName: "Core Publish"
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
- script: '"C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe" /target:Restore /detailedsummary /consoleloggerparameters:PerformanceSummary;ErrorsOnly; /property:Configuration=$(Configuration);TargetFrameworkVersion=v4.8 /p:RestoreSources=$(NugetSource)'
|
|
||||||
displayName: "MSBuild Restore"
|
|
||||||
|
|
||||||
- script: '"C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe" /target:Build /detailedsummary /consoleloggerparameters:PerformanceSummary;ErrorsOnly; /property:Configuration=$(Configuration);TargetFrameworkVersion=v4.8'
|
|
||||||
displayName: MSBuild
|
|
||||||
|
|
||||||
- script: 'echo $(Build.SourceVersion)-$(Build.BuildId)-$(Build.Repository.Name)>bin\$(Configuration)\$(Build.Repository.Name).txt'
|
|
||||||
displayName: "Commit Id"
|
|
||||||
|
|
||||||
- task: CopyFiles@2
|
|
||||||
displayName: 'Copy Files to: D:\Framework4.8'
|
|
||||||
inputs:
|
|
||||||
Contents: "*$(Build.Repository.Name)*"
|
|
||||||
SourceFolder: 'bin\$(Configuration)'
|
|
||||||
TargetFolder: 'D:\Framework4.8\$(GitCommitSeven)-$(Build.BuildId)-$(Build.Repository.Name)-$(Configuration)'
|
|
||||||
OverWrite: true
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
- task: CopyFiles@2
|
|
||||||
displayName: 'Copy Files to: \\mesfs.infineon.com\EC_EAFRepository'
|
|
||||||
inputs:
|
|
||||||
Contents: "*$(Build.Repository.Name)*"
|
|
||||||
SourceFolder: 'bin\$(Configuration)'
|
|
||||||
TargetFolder: '\\mesfs.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\Adaptation_$(Build.Repository.Name)'
|
|
||||||
OverWrite: true
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
"C:\program files\dotnet\dotnet.exe" clean --configuration $(Configuration)
|
|
||||||
workingDirectory: Adaptation
|
|
||||||
displayName: "Core Clean - Tests"
|
|
||||||
|
|
||||||
- script: |
|
|
||||||
"C:\program files\dotnet\dotnet.exe" clean --configuration $(Configuration)
|
|
||||||
workingDirectory: Adaptation
|
|
||||||
displayName: "Core Clean - Adaptation"
|
|
||||||
|
|
||||||
- script: 'echo $(Build.SourceVersion)-$(Build.BuildId)>bin_x_x_\$(Configuration)\$(CoreVersion)\win-x64\$(Build.Repository.Name).txt'
|
|
||||||
displayName: "Force Fail"
|
|
||||||
enabled: false
|
|
||||||
@ -32,7 +32,10 @@
|
|||||||
<DefineConstants>Linux</DefineConstants>
|
<DefineConstants>Linux</DefineConstants>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="coverlet.collector" Version="6.0.0" />
|
<RuntimeHostConfigurationOption Include="AssemblyName" Value="MET08DDUPSFS6420" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="coverlet.collector" Version="6.0.3" />
|
||||||
<PackageReference Include="FFMpegCore" Version="5.1.0" />
|
<PackageReference Include="FFMpegCore" Version="5.1.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>
|
||||||
@ -41,41 +44,39 @@
|
|||||||
<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.0" />
|
<PackageReference Include="Instances" Version="3.0.1" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="8.0.0" />
|
<PackageReference Include="log4net" Version="3.0.3"></PackageReference>
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="8.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="9.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="8.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="9.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="8.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="9.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.json" Version="8.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="9.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.json" Version="9.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration" Version="9.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="8.0.0" />
|
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="8.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="9.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="9.0.0" />
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
|
<PackageReference Include="Microsoft.Extensions.Logging" Version="9.0.0" />
|
||||||
<PackageReference Include="Microsoft.Win32.SystemEvents" Version="8.0.0" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
|
||||||
<PackageReference Include="MSTest.TestAdapter" Version="3.1.1" />
|
<PackageReference Include="Microsoft.Win32.SystemEvents" Version="9.0.0" />
|
||||||
<PackageReference Include="MSTest.TestFramework" Version="3.1.1" />
|
<PackageReference Include="MSTest.TestAdapter" 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.3.5" />
|
<PackageReference Include="RoboSharp" Version="1.6.0" />
|
||||||
<PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
|
<PackageReference Include="System.Configuration.ConfigurationManager" Version="9.0.0" />
|
||||||
<PackageReference Include="System.Data.OleDb" Version="8.0.0" />
|
<PackageReference Include="System.Data.OleDb" Version="9.0.0" />
|
||||||
<PackageReference Include="System.Data.SqlClient" Version="4.8.5" />
|
<PackageReference Include="System.Data.SqlClient" Version="4.8.6" />
|
||||||
<PackageReference Include="System.Drawing.Common" Version="8.0.0" />
|
<PackageReference Include="System.Drawing.Common" Version="9.0.0" />
|
||||||
<PackageReference Include="System.Text.Json" Version="8.0.0" />
|
<PackageReference Include="System.Text.Json" Version="9.0.0" />
|
||||||
<PackageReference Include="Tesseract" Version="5.2.0" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Infineon.Mesa.PDF.Text.Stripper" Version="4.8.0.2"><NoWarn>NU1701</NoWarn></PackageReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Infineon.Yoda.DotNetCore" Version="5.4.3" />
|
||||||
<PackageReference Include="Tibco.Rendezvous.DotNetCore" Version="8.5.0" />
|
<PackageReference Include="Tibco.Rendezvous.DotNetCore" Version="8.5.0" />
|
||||||
<PackageReference Include="Infineon.Yoda.DotNetCore" Version="5.4.1" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Infineon.Mesa.PDF.Text.Stripper" Version="4.8.0.1"><NoWarn>NU1701</NoWarn></PackageReference>
|
<PackageReference Include="Tesseract" Version="5.2.0" />
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="External.Common.Logging.Core" Version="3.3.1"><NoWarn>NU1701</NoWarn></PackageReference>
|
|
||||||
<PackageReference Include="External.Common.Logging" Version="3.3.1"><NoWarn>NU1701</NoWarn></PackageReference>
|
|
||||||
<PackageReference Include="External.log4net" Version="2.0.8"><NoWarn>NU1701</NoWarn></PackageReference>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="appsettings.json">
|
<None Include="appsettings.json">
|
||||||
@ -86,16 +87,16 @@
|
|||||||
</None>
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Condition="'$(Configuration)' == 'Debug'" Include="\\mestsa003.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\GhostPCL\gpcl6win64\gpcl6dll64.dll">
|
<None Condition="'$(Configuration)' == 'Debug'" Include="D:\EAF-Mesa-Integration\copy\GhostPCL\gpcl6win64\gpcl6dll64.dll">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</None>
|
</None>
|
||||||
<None Condition="'$(Configuration)' == 'Debug'" Include="\\mestsa003.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\GhostPCL\gpcl6win64\gpcl6win64.exe">
|
<None Condition="'$(Configuration)' == 'Debug'" Include="D:\EAF-Mesa-Integration\copy\GhostPCL\gpcl6win64\gpcl6win64.exe">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</None>
|
</None>
|
||||||
<None Condition="'$(Configuration)' == 'Release'" Include="\\mesfs.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\GhostPCL\gpcl6win64\gpcl6dll64.dll">
|
<None Condition="'$(Configuration)' == 'Release'" Include="D:\EAF-Mesa-Integration\copy\GhostPCL\gpcl6win64\gpcl6dll64.dll">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</None>
|
</None>
|
||||||
<None Condition="'$(Configuration)' == 'Release'" Include="\\mesfs.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\GhostPCL\gpcl6win64\gpcl6win64.exe">
|
<None Condition="'$(Configuration)' == 'Release'" Include="D:\EAF-Mesa-Integration\copy\GhostPCL\gpcl6win64\gpcl6win64.exe">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</None>
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
@ -1,3 +1,9 @@
|
|||||||
|
# D:
|
||||||
|
# cd D:\EAF-Mesa-Integration
|
||||||
|
# config --url https://tfs.intra.infineon.com/tfs/FactoryIntegration --pool "EAF Mesa Integration" --agent mestsa003-meseafsvc --work _work --runAsService --auth negotiate --userName infineon\phares
|
||||||
|
# D:
|
||||||
|
# cd D:\EAF-Mesa-Integration
|
||||||
|
# config --url https://tfs.intra.infineon.com/tfs/FactoryIntegration --pool "EAF Mesa Integration" --agent mestsa07ec-ecmeseaf --work _work --runAsService --auth negotiate --userName infineon\phares
|
||||||
trigger:
|
trigger:
|
||||||
branches:
|
branches:
|
||||||
include:
|
include:
|
||||||
@ -6,180 +12,273 @@ trigger:
|
|||||||
include:
|
include:
|
||||||
- "Adaptation/*"
|
- "Adaptation/*"
|
||||||
|
|
||||||
pool:
|
stages:
|
||||||
name: eaf
|
- stage: DevServer
|
||||||
demands: MET08DDUPSFS6420
|
displayName: DevServer
|
||||||
|
|
||||||
steps:
|
pool:
|
||||||
- script: |
|
name: EAF Mesa Integration
|
||||||
set coreVersion=net7.0
|
demands: MET08DDUPSFS6420-Development
|
||||||
echo %coreVersion%
|
|
||||||
echo ##vso[task.setvariable variable=CoreVersion;]%coreVersion%
|
|
||||||
echo $(CoreVersion)
|
|
||||||
displayName: CoreVersion
|
|
||||||
|
|
||||||
- script: |
|
variables:
|
||||||
set configuration=Release
|
coreVersion: "net8.0"
|
||||||
echo %configuration%
|
nugetSource: "https://artifactory.intra.infineon.com/artifactory/api/nuget/ngt-fi-package-main-vir/"
|
||||||
echo ##vso[task.setvariable variable=Configuration;]%configuration%
|
|
||||||
echo $(Configuration)
|
|
||||||
displayName: Configuration
|
|
||||||
|
|
||||||
- script: |
|
jobs:
|
||||||
set nugetSource=https://eaf-prod.mes.infineon.com/v3/index.json
|
- job: SetupEnvironment
|
||||||
echo %nugetSource%
|
steps:
|
||||||
echo ##vso[task.setvariable variable=NugetSource;]%nugetSource%
|
- script: |
|
||||||
echo $(NugetSource)
|
echo $(Build.BuildId)
|
||||||
displayName: NugetSource
|
echo $(Build.Reason)
|
||||||
|
echo $(Build.Repository.Id)
|
||||||
|
echo $(Build.Repository.Name)
|
||||||
|
echo $(Build.SourceVersion)
|
||||||
|
echo $(CoreVersion)
|
||||||
|
echo $(NugetSource)
|
||||||
|
displayName: "Echo Check"
|
||||||
|
|
||||||
- script: |
|
- script: '"C:\program files\dotnet\dotnet.exe" nuget locals all --clear'
|
||||||
set gitCommit=$(Build.SourceVersion)
|
displayName: "Nuget Clear"
|
||||||
set gitCommitSeven=%gitCommit:~0,7%
|
enabled: false
|
||||||
echo %gitCommitSeven%
|
|
||||||
echo ##vso[task.setvariable variable=GitCommitSeven;]%gitCommitSeven%
|
|
||||||
echo $(GitCommitSeven)
|
|
||||||
displayName: GitCommitSeven
|
|
||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
echo $(Build.BuildId)
|
"C:\program files\dotnet\dotnet.exe" user-secrets init
|
||||||
echo $(Build.Reason)
|
"C:\program files\dotnet\dotnet.exe" user-secrets set "BuildNumber" "$(Build.BuildId)"
|
||||||
echo $(Build.Repository.Id)
|
"C:\program files\dotnet\dotnet.exe" user-secrets set "GitCommit" "$(Build.SourceVersion)"
|
||||||
echo $(Build.Repository.Name)
|
"C:\program files\dotnet\dotnet.exe" user-secrets list
|
||||||
echo $(Build.SourceVersion)
|
workingDirectory: Adaptation
|
||||||
echo $(CoreVersion)
|
displayName: "Safe storage of app secrets - Adaptation"
|
||||||
echo $(Configuration)
|
|
||||||
echo $(NugetSource)
|
|
||||||
echo $(GitCommitSeven)
|
|
||||||
REM echo $(pipelinePassword)
|
|
||||||
displayName: "Echo Check"
|
|
||||||
|
|
||||||
- script: '"C:\program files\dotnet\dotnet.exe" nuget locals all --clear'
|
- job: BuildDebug
|
||||||
displayName: "Nuget Clear"
|
dependsOn:
|
||||||
enabled: false
|
- SetupEnvironment
|
||||||
|
steps:
|
||||||
|
- script: |
|
||||||
|
set configuration=Debug
|
||||||
|
echo %configuration%
|
||||||
|
echo ##vso[task.setvariable variable=Configuration;]%configuration%
|
||||||
|
echo $(Configuration)
|
||||||
|
displayName: Configuration
|
||||||
|
|
||||||
- script: |
|
- script: '"C:\program files\dotnet\dotnet.exe" build --configuration $(Configuration) --source $(NugetSource)'
|
||||||
"C:\program files\dotnet\dotnet.exe" user-secrets init
|
workingDirectory: Adaptation
|
||||||
"C:\program files\dotnet\dotnet.exe" user-secrets set "BuildNumber" "$(Build.BuildId)"
|
displayName: "Core Build - Adaptation"
|
||||||
"C:\program files\dotnet\dotnet.exe" user-secrets set "GitCommitSeven" "$(GitCommitSeven)"
|
|
||||||
"C:\program files\dotnet\dotnet.exe" user-secrets list
|
|
||||||
workingDirectory: Adaptation
|
|
||||||
displayName: "Safe storage of app secrets - Adaptation"
|
|
||||||
|
|
||||||
- task: CopyFiles@2
|
- job: BuildRelease
|
||||||
displayName: "Copy Files to: - GhostPCL"
|
dependsOn:
|
||||||
inputs:
|
- SetupEnvironment
|
||||||
Contents: '*'
|
steps:
|
||||||
SourceFolder: '\\mesfs.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\GhostPCL\gpcl6win64'
|
- script: |
|
||||||
TargetFolder: 'Adaptation\bin\$(Configuration)\net6.0\win-x64'
|
set configuration=Release
|
||||||
OverWrite: true
|
echo %configuration%
|
||||||
|
echo ##vso[task.setvariable variable=Configuration;]%configuration%
|
||||||
|
echo $(Configuration)
|
||||||
|
displayName: Configuration
|
||||||
|
|
||||||
- task: CopyFiles@2
|
- script: '"C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe" /target:Restore /detailedsummary /consoleloggerparameters:PerformanceSummary;ErrorsOnly; /property:Configuration=$(Configuration);TargetFrameworkVersion=v4.8 /p:RestoreSources=$(NugetSource)'
|
||||||
displayName: "Copy Files to: - LincPDFC"
|
displayName: "MSBuild Restore"
|
||||||
inputs:
|
|
||||||
Contents: '*'
|
|
||||||
SourceFolder: '\\mesfs.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\LincPDFC\v2.6.6.21'
|
|
||||||
TargetFolder: 'Adaptation\bin\$(Configuration)\net6.0\win-x64'
|
|
||||||
OverWrite: true
|
|
||||||
|
|
||||||
- task: CopyFiles@2
|
- script: '"C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe" /target:Build /detailedsummary /consoleloggerparameters:PerformanceSummary;ErrorsOnly; /property:Configuration=$(Configuration);TargetFrameworkVersion=v4.8'
|
||||||
displayName: "Copy Files to: - PDF-Text-Stripper"
|
displayName: MSBuild
|
||||||
inputs:
|
|
||||||
Contents: '*'
|
|
||||||
SourceFolder: '\\mesfs.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\PDF-Text-Stripper\v4.8.0.1'
|
|
||||||
TargetFolder: 'Adaptation\bin\$(Configuration)\net6.0\win-x64'
|
|
||||||
OverWrite: true
|
|
||||||
|
|
||||||
- script: '"C:\program files\dotnet\dotnet.exe" build --configuration $(Configuration) --source $(NugetSource)'
|
- script: '"C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe" /target:Build /detailedsummary /consoleloggerparameters:PerformanceSummary;ErrorsOnly; /property:Configuration=$(Configuration);TargetFrameworkVersion=v4.8'
|
||||||
workingDirectory: Adaptation
|
displayName: MSBuild
|
||||||
displayName: "Core Build - Adaptation"
|
|
||||||
|
|
||||||
- powershell: Get-ChildItem .\ -include TestResults -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse }
|
- script: 'echo $(Build.Repository.Name)-$(Build.BuildId)-$(Build.SourceVersion)>bin\$(Configuration)\$(Build.Repository.Name).txt'
|
||||||
workingDirectory: "$(System.DefaultWorkingDirectory)/../../../$(Build.Repository.Name)"
|
displayName: "Commit Id"
|
||||||
displayName: "PowerShell Script"
|
|
||||||
continueOnError: true
|
|
||||||
|
|
||||||
- script: "dotnet test --configuration $(Configuration)"
|
- task: CopyFiles@2
|
||||||
workingDirectory: Adaptation
|
displayName: 'Copy Files to: D:\EAF'
|
||||||
displayName: "Core Test"
|
inputs:
|
||||||
|
Contents: "*$(Build.Repository.Name)*"
|
||||||
|
SourceFolder: 'bin\$(Configuration)'
|
||||||
|
TargetFolder: 'D:\EAF\EAF Deployment Storage\Adaptation_$(Build.Repository.Name)'
|
||||||
|
OverWrite: true
|
||||||
|
enabled: true
|
||||||
|
|
||||||
- script: 'move /y "$(System.DefaultWorkingDirectory)/../../../$(Build.Repository.Name)/05_TestResults/TestResults" $(System.DefaultWorkingDirectory)'
|
- job: TestDebug
|
||||||
displayName: "Move Results"
|
dependsOn:
|
||||||
|
- SetupEnvironment
|
||||||
|
- BuildDebug
|
||||||
|
- BuildRelease
|
||||||
|
steps:
|
||||||
|
- script: |
|
||||||
|
set configuration=Debug
|
||||||
|
echo %configuration%
|
||||||
|
echo ##vso[task.setvariable variable=Configuration;]%configuration%
|
||||||
|
echo $(Configuration)
|
||||||
|
displayName: Configuration
|
||||||
|
|
||||||
- script: '"C:\program files\dotnet\dotnet.exe" tool restore'
|
- powershell: Get-ChildItem .\ -include TestResults -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse }
|
||||||
workingDirectory: Adaptation
|
workingDirectory: "$(System.DefaultWorkingDirectory)/../../../$(Build.Repository.Name)"
|
||||||
displayName: "Tool Restore"
|
displayName: "PowerShell Script"
|
||||||
enabled: false
|
continueOnError: true
|
||||||
|
|
||||||
- script: '"C:\program files\dotnet\dotnet.exe" ReportGenerator -reports:$(System.DefaultWorkingDirectory)/TestResults/**/coverage.cobertura.xml -targetDir:$(Build.ArtifactStagingDirectory)\Coverage -reportTypes:Html_Dark'
|
- script: "dotnet test --configuration $(Configuration)"
|
||||||
workingDirectory: Adaptation
|
workingDirectory: Adaptation
|
||||||
displayName: "Report Generator"
|
displayName: "Core Test"
|
||||||
enabled: false
|
|
||||||
|
|
||||||
- task: PublishTestResults@2
|
- script: 'move /y "$(System.DefaultWorkingDirectory)/../../../$(Build.Repository.Name)/05_TestResults/TestResults" $(System.DefaultWorkingDirectory)'
|
||||||
displayName: "Publish Test Results **/*.trx"
|
displayName: "Move Results"
|
||||||
inputs:
|
|
||||||
testResultsFormat: VSTest
|
|
||||||
testResultsFiles: "**/*.trx"
|
|
||||||
testRunTitle: "$(GitCommitSeven)-$(Build.BuildId)-$(CoreVersion)-$(Configuration)-$(Build.Repository.Name)"
|
|
||||||
searchFolder: "$(System.DefaultWorkingDirectory)/TestResults"
|
|
||||||
|
|
||||||
- task: PublishTestResults@2
|
- script: '"C:\program files\dotnet\dotnet.exe" tool restore'
|
||||||
displayName: "Publish Test Results */coverage.cobertura.xml"
|
workingDirectory: Adaptation
|
||||||
inputs:
|
displayName: "Tool Restore"
|
||||||
testResultsFormat: VSTest
|
enabled: false
|
||||||
testResultsFiles: "*/coverage.cobertura.xml"
|
|
||||||
testRunTitle: "$(GitCommitSeven)-$(Build.BuildId)-$(CoreVersion)-$(Configuration)-$(Build.Repository.Name)"
|
|
||||||
searchFolder: "$(System.DefaultWorkingDirectory)/TestResults"
|
|
||||||
|
|
||||||
- task: mspremier.CreateWorkItem.CreateWorkItem-task.CreateWorkItem@1
|
- script: '"C:\program files\dotnet\dotnet.exe" ReportGenerator -reports:$(System.DefaultWorkingDirectory)/TestResults/**/coverage.cobertura.xml -targetDir:$(Build.ArtifactStagingDirectory)\Coverage -reportTypes:Html_Dark'
|
||||||
displayName: "Create work item"
|
workingDirectory: Adaptation
|
||||||
inputs:
|
displayName: "Report Generator"
|
||||||
teamProject: "Mesa_FI"
|
enabled: false
|
||||||
workItemType: Bug
|
|
||||||
title: $(GitCommitSeven)-$(Build.BuildId)-$(Build.Repository.Name)-$(Configuration)
|
|
||||||
assignedTo: "$(Build.RequestedForId)"
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
- script: '"C:\program files\dotnet\dotnet.exe" publish --configuration $(Configuration) --runtime win-x64 --self-contained -o $(Build.ArtifactStagingDirectory)\Adaptation --source $(NugetSource)'
|
- task: PublishTestResults@2
|
||||||
workingDirectory: Adaptation
|
displayName: "Publish Test Results **/*.trx"
|
||||||
displayName: "Core Publish"
|
inputs:
|
||||||
enabled: false
|
testResultsFormat: VSTest
|
||||||
|
testResultsFiles: "**/*.trx"
|
||||||
|
testRunTitle: "$(Build.BuildId)-$(Build.SourceVersion)-$(CoreVersion)-$(Configuration)-$(Build.Repository.Name)"
|
||||||
|
searchFolder: "$(System.DefaultWorkingDirectory)/TestResults"
|
||||||
|
|
||||||
- script: '"C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe" /target:Restore /detailedsummary /consoleloggerparameters:PerformanceSummary;ErrorsOnly; /property:Configuration=$(Configuration);TargetFrameworkVersion=v4.8 /p:RestoreSources=$(NugetSource)'
|
- task: PublishTestResults@2
|
||||||
displayName: "MSBuild Restore"
|
displayName: "Publish Test Results */coverage.cobertura.xml"
|
||||||
|
inputs:
|
||||||
|
testResultsFormat: VSTest
|
||||||
|
testResultsFiles: "*/coverage.cobertura.xml"
|
||||||
|
testRunTitle: "$(Build.BuildId)-$(Build.SourceVersion)-$(CoreVersion)-$(Configuration)-$(Build.Repository.Name)"
|
||||||
|
searchFolder: "$(System.DefaultWorkingDirectory)/TestResults"
|
||||||
|
|
||||||
- script: '"C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe" /target:Build /detailedsummary /consoleloggerparameters:PerformanceSummary;ErrorsOnly; /property:Configuration=$(Configuration);TargetFrameworkVersion=v4.8'
|
- script: |
|
||||||
displayName: MSBuild
|
"C:\program files\dotnet\dotnet.exe" clean --configuration $(Configuration)
|
||||||
|
workingDirectory: Adaptation
|
||||||
|
displayName: "Core Clean - Adaptation"
|
||||||
|
|
||||||
- script: 'echo $(Build.SourceVersion)-$(Build.BuildId)-$(Build.Repository.Name)>bin\$(Configuration)\$(Build.Repository.Name).txt'
|
- script: 'echo $(Build.BuildId)-$(Build.SourceVersion)-bin_x_x_\$(Configuration)\$(CoreVersion)\win-x64\$(Build.Repository.Name).txt'
|
||||||
displayName: "Commit Id"
|
displayName: "Force Fail"
|
||||||
|
enabled: false
|
||||||
|
|
||||||
- task: CopyFiles@2
|
- stage: ProductionServer
|
||||||
displayName: 'Copy Files to: D:\Framework4.8'
|
displayName: ProductionServer
|
||||||
inputs:
|
|
||||||
Contents: "*$(Build.Repository.Name)*"
|
|
||||||
SourceFolder: 'bin\$(Configuration)'
|
|
||||||
TargetFolder: 'D:\Framework4.8\$(GitCommitSeven)-$(Build.BuildId)-$(Build.Repository.Name)-$(Configuration)'
|
|
||||||
OverWrite: true
|
|
||||||
|
|
||||||
- task: CopyFiles@2
|
pool:
|
||||||
displayName: 'Copy Files to: \\mesfs.infineon.com\EC_EAFRepository'
|
name: EAF Mesa Integration
|
||||||
inputs:
|
demands: MET08DDUPSFS6420
|
||||||
Contents: "*$(Build.Repository.Name)*"
|
|
||||||
SourceFolder: 'bin\$(Configuration)'
|
|
||||||
TargetFolder: '\\mesfs.infineon.com\EC_EAFRepository\Staging\DeploymentStorage\Adaptation_$(Build.Repository.Name)'
|
|
||||||
OverWrite: true
|
|
||||||
|
|
||||||
- script: |
|
variables:
|
||||||
"C:\program files\dotnet\dotnet.exe" clean --configuration $(Configuration)
|
coreVersion: "net8.0"
|
||||||
workingDirectory: Adaptation
|
nugetSource: "https://artifactory.intra.infineon.com/artifactory/api/nuget/ngt-fi-package-main-vir/"
|
||||||
displayName: "Core Clean - Tests"
|
|
||||||
|
|
||||||
- script: |
|
jobs:
|
||||||
"C:\program files\dotnet\dotnet.exe" clean --configuration $(Configuration)
|
- job: SetupEnvironment
|
||||||
workingDirectory: Adaptation
|
steps:
|
||||||
displayName: "Core Clean - Adaptation"
|
- script: |
|
||||||
|
echo $(Build.BuildId)
|
||||||
|
echo $(Build.Reason)
|
||||||
|
echo $(Build.Repository.Id)
|
||||||
|
echo $(Build.Repository.Name)
|
||||||
|
echo $(Build.SourceVersion)
|
||||||
|
echo $(CoreVersion)
|
||||||
|
echo $(NugetSource)
|
||||||
|
displayName: "Echo Check"
|
||||||
|
|
||||||
- script: 'echo $(Build.SourceVersion)-$(Build.BuildId)>bin_x_x_\$(Configuration)\$(CoreVersion)\win-x64\$(Build.Repository.Name).txt'
|
- script: '"C:\program files\dotnet\dotnet.exe" nuget locals all --clear'
|
||||||
displayName: "Force Fail"
|
displayName: "Nuget Clear"
|
||||||
enabled: false
|
enabled: false
|
||||||
|
|
||||||
|
- script: |
|
||||||
|
"C:\program files\dotnet\dotnet.exe" user-secrets init
|
||||||
|
"C:\program files\dotnet\dotnet.exe" user-secrets set "BuildNumber" "$(Build.BuildId)"
|
||||||
|
"C:\program files\dotnet\dotnet.exe" user-secrets set "GitCommit" "$(Build.SourceVersion)"
|
||||||
|
"C:\program files\dotnet\dotnet.exe" user-secrets list
|
||||||
|
workingDirectory: Adaptation
|
||||||
|
displayName: "Safe storage of app secrets - Adaptation"
|
||||||
|
|
||||||
|
- job: BuildRelease
|
||||||
|
dependsOn:
|
||||||
|
- SetupEnvironment
|
||||||
|
steps:
|
||||||
|
- script: |
|
||||||
|
set configuration=Release
|
||||||
|
echo %configuration%
|
||||||
|
echo ##vso[task.setvariable variable=Configuration;]%configuration%
|
||||||
|
echo $(Configuration)
|
||||||
|
displayName: Configuration
|
||||||
|
|
||||||
|
- script: '"C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe" /target:Restore /detailedsummary /consoleloggerparameters:PerformanceSummary;ErrorsOnly; /property:Configuration=$(Configuration);TargetFrameworkVersion=v4.8 /p:RestoreSources=$(NugetSource)'
|
||||||
|
displayName: "MSBuild Restore"
|
||||||
|
|
||||||
|
- script: '"C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe" /target:Build /detailedsummary /consoleloggerparameters:PerformanceSummary;ErrorsOnly; /property:Configuration=$(Configuration);TargetFrameworkVersion=v4.8'
|
||||||
|
displayName: MSBuild
|
||||||
|
|
||||||
|
- script: 'echo $(Build.Repository.Name)-$(Build.BuildId)-$(Build.SourceVersion)>bin\$(Configuration)\$(Build.Repository.Name).txt'
|
||||||
|
displayName: "Commit Id"
|
||||||
|
|
||||||
|
- task: CopyFiles@2
|
||||||
|
displayName: 'Copy Files to: D:\EAF'
|
||||||
|
inputs:
|
||||||
|
Contents: "*$(Build.Repository.Name)*"
|
||||||
|
SourceFolder: 'bin\$(Configuration)'
|
||||||
|
TargetFolder: 'D:\EAF\EAF Deployment Storage\Adaptation_$(Build.Repository.Name)'
|
||||||
|
OverWrite: true
|
||||||
|
|
||||||
|
- script: '"C:\program files\dotnet\dotnet.exe" build --configuration $(Configuration) --source $(NugetSource)'
|
||||||
|
workingDirectory: Adaptation
|
||||||
|
displayName: "Core Build - Adaptation"
|
||||||
|
|
||||||
|
- job: TestRelease
|
||||||
|
dependsOn:
|
||||||
|
- SetupEnvironment
|
||||||
|
- BuildRelease
|
||||||
|
steps:
|
||||||
|
- script: |
|
||||||
|
set configuration=Release
|
||||||
|
echo %configuration%
|
||||||
|
echo ##vso[task.setvariable variable=Configuration;]%configuration%
|
||||||
|
echo $(Configuration)
|
||||||
|
displayName: Configuration
|
||||||
|
|
||||||
|
- powershell: Get-ChildItem .\ -include TestResults -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse }
|
||||||
|
workingDirectory: "$(System.DefaultWorkingDirectory)/../../../$(Build.Repository.Name)"
|
||||||
|
displayName: "PowerShell Script"
|
||||||
|
continueOnError: true
|
||||||
|
|
||||||
|
- script: "dotnet test --configuration $(Configuration)"
|
||||||
|
workingDirectory: Adaptation
|
||||||
|
displayName: "Core Test"
|
||||||
|
|
||||||
|
- script: 'move /y "$(System.DefaultWorkingDirectory)/../../../$(Build.Repository.Name)/05_TestResults/TestResults" $(System.DefaultWorkingDirectory)'
|
||||||
|
displayName: "Move Results"
|
||||||
|
|
||||||
|
- script: '"C:\program files\dotnet\dotnet.exe" tool restore'
|
||||||
|
workingDirectory: Adaptation
|
||||||
|
displayName: "Tool Restore"
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
- script: '"C:\program files\dotnet\dotnet.exe" ReportGenerator -reports:$(System.DefaultWorkingDirectory)/TestResults/**/coverage.cobertura.xml -targetDir:$(Build.ArtifactStagingDirectory)\Coverage -reportTypes:Html_Dark'
|
||||||
|
workingDirectory: Adaptation
|
||||||
|
displayName: "Report Generator"
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
- task: PublishTestResults@2
|
||||||
|
displayName: "Publish Test Results **/*.trx"
|
||||||
|
inputs:
|
||||||
|
testResultsFormat: VSTest
|
||||||
|
testResultsFiles: "**/*.trx"
|
||||||
|
testRunTitle: "$(Build.BuildId)-$(Build.SourceVersion)-$(CoreVersion)-$(Configuration)-$(Build.Repository.Name)"
|
||||||
|
searchFolder: "$(System.DefaultWorkingDirectory)/TestResults"
|
||||||
|
|
||||||
|
- task: PublishTestResults@2
|
||||||
|
displayName: "Publish Test Results */coverage.cobertura.xml"
|
||||||
|
inputs:
|
||||||
|
testResultsFormat: VSTest
|
||||||
|
testResultsFiles: "*/coverage.cobertura.xml"
|
||||||
|
testRunTitle: "$(Build.BuildId)-$(Build.SourceVersion)-$(CoreVersion)-$(Configuration)-$(Build.Repository.Name)"
|
||||||
|
searchFolder: "$(System.DefaultWorkingDirectory)/TestResults"
|
||||||
|
|
||||||
|
- script: |
|
||||||
|
"C:\program files\dotnet\dotnet.exe" clean --configuration $(Configuration)
|
||||||
|
workingDirectory: Adaptation
|
||||||
|
displayName: "Core Clean - Adaptation"
|
||||||
|
|
||||||
|
- script: 'echo $(Build.BuildId)-$(Build.SourceVersion)-bin_x_x_\$(Configuration)\$(CoreVersion)\win-x64\$(Build.Repository.Name).txt'
|
||||||
|
displayName: "Force Fail"
|
||||||
|
enabled: true
|
||||||
|
|||||||
@ -3,6 +3,7 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
namespace Adaptation.Shared.Duplicator;
|
namespace Adaptation.Shared.Duplicator;
|
||||||
|
|
||||||
@ -178,4 +179,16 @@ public class Description : IDescription, Properties.IDescription
|
|||||||
|
|
||||||
internal static string GetDateFormat() => "MM/dd/yyyy hh:mm:ss tt";
|
internal static string GetDateFormat() => "MM/dd/yyyy hh:mm:ss tt";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[JsonSourceGenerationOptions(WriteIndented = true, NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)]
|
||||||
|
[JsonSerializable(typeof(Description))]
|
||||||
|
internal partial class SharedDescriptionSourceGenerationContext : JsonSerializerContext
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[JsonSourceGenerationOptions(WriteIndented = true, NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)]
|
||||||
|
[JsonSerializable(typeof(Description[]))]
|
||||||
|
internal partial class SharedDescriptionArraySourceGenerationContext : JsonSerializerContext
|
||||||
|
{
|
||||||
}
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@ -35,6 +35,9 @@ public class Logistics : ILogistics
|
|||||||
public long Sequence => _Sequence;
|
public long Sequence => _Sequence;
|
||||||
public double TotalSecondsSinceLastWriteTimeFromSequence => _TotalSecondsSinceLastWriteTimeFromSequence;
|
public double TotalSecondsSinceLastWriteTimeFromSequence => _TotalSecondsSinceLastWriteTimeFromSequence;
|
||||||
|
|
||||||
|
private static string DefaultMesEntity(DateTime dateTime) =>
|
||||||
|
string.Concat(dateTime.Ticks, "_MES_ENTITY");
|
||||||
|
|
||||||
public Logistics(IFileRead fileRead)
|
public Logistics(IFileRead fileRead)
|
||||||
{
|
{
|
||||||
DateTime dateTime = DateTime.Now;
|
DateTime dateTime = DateTime.Now;
|
||||||
@ -84,13 +87,13 @@ public class Logistics : ILogistics
|
|||||||
_Logistics2 = new List<Logistics2>();
|
_Logistics2 = new List<Logistics2>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Logistics(string reportFullPath, string logistics)
|
internal Logistics(string reportFullPath, ProcessDataStandardFormat processDataStandardFormat)
|
||||||
{
|
{
|
||||||
string key;
|
string key;
|
||||||
DateTime dateTime;
|
DateTime dateTime;
|
||||||
string[] segments;
|
string[] segments;
|
||||||
_FileInfo = new(reportFullPath);
|
_FileInfo = new(reportFullPath);
|
||||||
_Logistics1 = logistics.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).ToList();
|
_Logistics1 = processDataStandardFormat.Logistics.ToList();
|
||||||
if (Logistics1.Count == 0 || !Logistics1[0].StartsWith("LOGISTICS_1"))
|
if (Logistics1.Count == 0 || !Logistics1[0].StartsWith("LOGISTICS_1"))
|
||||||
{
|
{
|
||||||
_NullData = null;
|
_NullData = null;
|
||||||
@ -190,8 +193,6 @@ public class Logistics : ILogistics
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string DefaultMesEntity(DateTime dateTime) => string.Concat(dateTime.Ticks, "_MES_ENTITY");
|
|
||||||
|
|
||||||
internal void Update(string mid, string processJobID)
|
internal void Update(string mid, string processJobID)
|
||||||
{
|
{
|
||||||
_MID = mid;
|
_MID = mid;
|
||||||
|
|||||||
@ -2,18 +2,29 @@
|
|||||||
|
|
||||||
public partial class WS
|
public partial class WS
|
||||||
{
|
{
|
||||||
|
|
||||||
public class Attachment
|
public class Attachment
|
||||||
{
|
{
|
||||||
|
|
||||||
public string UniqueId { get; set; }
|
#nullable enable
|
||||||
public string DestinationFileName { get; set; }
|
|
||||||
public string SourceFileName { get; set; }
|
|
||||||
|
|
||||||
public Attachment(string uniqueId, string destinationFileName, string sourceFileName)
|
public long HeaderId { get; set; }
|
||||||
|
public string UniqueId { get; set; }
|
||||||
|
public string SubGroupId { get; set; }
|
||||||
|
public string AttachmentId { get; set; }
|
||||||
|
public string SourceFileName { get; set; }
|
||||||
|
public string HeaderIdDirectory { get; set; }
|
||||||
|
public string DestinationFileName { get; set; }
|
||||||
|
|
||||||
|
public Attachment(Results? results, string headerIdDirectory, string uniqueId, string destinationFileName, string sourceFileName)
|
||||||
{
|
{
|
||||||
UniqueId = uniqueId;
|
UniqueId = uniqueId;
|
||||||
DestinationFileName = destinationFileName;
|
|
||||||
SourceFileName = sourceFileName;
|
SourceFileName = sourceFileName;
|
||||||
|
HeaderIdDirectory = headerIdDirectory;
|
||||||
|
DestinationFileName = destinationFileName;
|
||||||
|
AttachmentId = System.Guid.NewGuid().ToString();
|
||||||
|
HeaderId = results?.HeaderId is null ? -1 : results.HeaderId.Value;
|
||||||
|
SubGroupId = results?.SubgroupId is null ? string.Empty : results.SubgroupId.Value.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,27 +1,75 @@
|
|||||||
using System.Collections.Generic;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
namespace Adaptation.Shared.Metrology;
|
namespace Adaptation.Shared.Metrology;
|
||||||
|
|
||||||
public partial class WS
|
public partial class WS
|
||||||
{
|
{
|
||||||
// this class represents the response from the Inbound API endpoint
|
|
||||||
public class Results
|
public class Results
|
||||||
{
|
{
|
||||||
// true or false if data was written to the database
|
|
||||||
public bool Success { get; set; }
|
|
||||||
|
|
||||||
// if true, contains ID of the Header record in the database
|
#nullable enable
|
||||||
public long HeaderID { get; set; }
|
|
||||||
|
|
||||||
// if false, this collection will contain a list of errors
|
[JsonConstructor]
|
||||||
public List<string> Errors { get; set; }
|
public Results(List<string>? errors,
|
||||||
|
long? headerId,
|
||||||
|
long? subgroupId,
|
||||||
|
bool? success,
|
||||||
|
List<string>? warnings)
|
||||||
|
{
|
||||||
|
Errors = errors;
|
||||||
|
Success = success;
|
||||||
|
HeaderId = headerId;
|
||||||
|
Warnings = warnings;
|
||||||
|
SubgroupId = subgroupId;
|
||||||
|
}
|
||||||
|
|
||||||
// this collection will contain a list of warnings, they will not prevent data from being saved
|
[JsonPropertyName("errors")] public List<string>? Errors { get; set; }
|
||||||
public List<string> Warnings { get; set; }
|
[JsonPropertyName("headerID")] public long? HeaderId { get; set; }
|
||||||
|
[JsonPropertyName("subgroupId")] public long? SubgroupId { get; set; }
|
||||||
|
[JsonPropertyName("success")] public bool? Success { get; set; }
|
||||||
|
[JsonPropertyName("warnings")] public List<string>? Warnings { get; set; }
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
string result = JsonSerializer.Serialize(this, ResultsSourceGenerationContext.Default.Results);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static Results Get(Results results, long? subgroupId) =>
|
||||||
|
new(results.Errors, results.HeaderId, subgroupId, results.Success, results.Warnings);
|
||||||
|
|
||||||
|
internal static Results Get(string resultsJson, Exception e)
|
||||||
|
{
|
||||||
|
Results results;
|
||||||
|
Exception? exception = e;
|
||||||
|
List<string> errors = new();
|
||||||
|
StringBuilder stringBuilder = new();
|
||||||
|
while (exception is not null)
|
||||||
|
{
|
||||||
|
_ = stringBuilder.AppendLine(exception.Message);
|
||||||
|
exception = exception.InnerException;
|
||||||
|
}
|
||||||
|
errors.Add(resultsJson);
|
||||||
|
errors.Add(stringBuilder.ToString());
|
||||||
|
results = new(errors: errors,
|
||||||
|
headerId: null,
|
||||||
|
subgroupId: null,
|
||||||
|
success: false,
|
||||||
|
warnings: new());
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
// this is just a helper function to make displaying the results easier
|
|
||||||
public override string ToString() => JsonSerializer.Serialize(this, GetType());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[JsonSourceGenerationOptions(WriteIndented = true)]
|
||||||
|
[JsonSerializable(typeof(WS.Results))]
|
||||||
|
internal partial class ResultsSourceGenerationContext : JsonSerializerContext
|
||||||
|
{
|
||||||
}
|
}
|
||||||
@ -10,9 +10,11 @@ namespace Adaptation.Shared.Metrology;
|
|||||||
public partial class WS
|
public partial class WS
|
||||||
{
|
{
|
||||||
|
|
||||||
public static (string, Results) SendData(string url, object payload, int timeoutSeconds = 120)
|
#nullable enable
|
||||||
|
|
||||||
|
public static (string, Results) SendData(string url, long sequence, string directory, object payload, int timeoutSeconds = 120)
|
||||||
{
|
{
|
||||||
Results results = new();
|
Results? wsResults = null;
|
||||||
string resultsJson = string.Empty;
|
string resultsJson = string.Empty;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -30,85 +32,83 @@ public partial class WS
|
|||||||
};
|
};
|
||||||
HttpResponseMessage httpResponseMessage = httpClient.SendAsync(httpRequestMessage, HttpCompletionOption.ResponseContentRead).Result;
|
HttpResponseMessage httpResponseMessage = httpClient.SendAsync(httpRequestMessage, HttpCompletionOption.ResponseContentRead).Result;
|
||||||
resultsJson = httpResponseMessage.Content.ReadAsStringAsync().Result;
|
resultsJson = httpResponseMessage.Content.ReadAsStringAsync().Result;
|
||||||
results = JsonSerializer.Deserialize<Results>(resultsJson, new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
|
wsResults = JsonSerializer.Deserialize(resultsJson, ResultsSourceGenerationContext.Default.Results);
|
||||||
|
if (wsResults is null)
|
||||||
|
throw new NullReferenceException(nameof(wsResults));
|
||||||
|
string checkDirectory = Path.Combine(directory, $"-{wsResults.HeaderId}");
|
||||||
|
if (!Directory.Exists(checkDirectory))
|
||||||
|
_ = Directory.CreateDirectory(checkDirectory);
|
||||||
|
File.WriteAllText(Path.Combine(checkDirectory, $"{sequence}.json"), json);
|
||||||
}
|
}
|
||||||
if (!results.Success)
|
if (wsResults.Success is null || !wsResults.Success.Value)
|
||||||
results.Errors.Add(results.ToString());
|
wsResults.Errors?.Add(wsResults.ToString());
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{ wsResults ??= Results.Get(resultsJson, e); }
|
||||||
Exception exception = e;
|
return new(resultsJson, wsResults);
|
||||||
StringBuilder stringBuilder = new();
|
|
||||||
while (exception is not null)
|
|
||||||
{
|
|
||||||
_ = stringBuilder.AppendLine(exception.Message);
|
|
||||||
exception = exception.InnerException;
|
|
||||||
}
|
|
||||||
results.Errors ??= new List<string>();
|
|
||||||
results.Errors.Add(resultsJson);
|
|
||||||
results.Errors.Add(stringBuilder.ToString());
|
|
||||||
}
|
|
||||||
return new(resultsJson, results);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// this method is a wrapper for attaching a file to either a header or data record
|
public static void AttachFile(string url, Attachment attachment, int timeoutSeconds = 60)
|
||||||
// URL is the same URL used for SendData, ex: http://localhost/api/inbound/CDE
|
|
||||||
// attachToHeaderId is the ID returned by SendData
|
|
||||||
// attachToDataUniqueId is the string unique ID for the data record, aka the Title of the Sharepoint list entry
|
|
||||||
// fileContents is a byte array with the contents of the file
|
|
||||||
// fileName is which attachment this is, image.pdf, data.pdf, data.txt, header.pdf, etc
|
|
||||||
// timeoutSeconds is configured as the request timeout
|
|
||||||
// this method will either succeed or throw an exception
|
|
||||||
// also, this has been made synchronous
|
|
||||||
public static void AttachFile(string url, long attachToHeaderId, string attachToDataUniqueId, byte[] fileContents, string fileName, int timeoutSeconds = 60)
|
|
||||||
{
|
{
|
||||||
using HttpClient httpClient = new();
|
using HttpClient httpClient = new();
|
||||||
string requestUrl = url + "/attachment?headerid=" + attachToHeaderId.ToString();
|
string json = JsonSerializer.Serialize(attachment);
|
||||||
if (!string.IsNullOrWhiteSpace(attachToDataUniqueId))
|
|
||||||
{
|
|
||||||
requestUrl += "&datauniqueid=";
|
|
||||||
requestUrl += System.Net.WebUtility.UrlEncode(attachToDataUniqueId);
|
|
||||||
}
|
|
||||||
requestUrl += "&filename="; // this is just so the web server log shows the filename
|
|
||||||
requestUrl += System.Net.WebUtility.UrlEncode(fileName);
|
|
||||||
|
|
||||||
httpClient.Timeout = new TimeSpan(0, 0, 0, timeoutSeconds, 0);
|
httpClient.Timeout = new TimeSpan(0, 0, 0, timeoutSeconds, 0);
|
||||||
|
StringContent httpContent = new(json, Encoding.UTF8, "application/json");
|
||||||
MultipartFormDataContent multipartFormDataContent = new();
|
HttpResponseMessage httpResponseMessage = httpClient.PostAsync($"{url}/attachment", httpContent).Result;
|
||||||
ByteArrayContent byteArrayContent = new(fileContents);
|
if (!httpResponseMessage.IsSuccessStatusCode)
|
||||||
byteArrayContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream");
|
{
|
||||||
|
string resultBody = httpResponseMessage.Content.ReadAsStringAsync().Result;
|
||||||
multipartFormDataContent.Add(byteArrayContent, "attachment", fileName);
|
throw new Exception($"Attachment failed: {resultBody}");
|
||||||
|
}
|
||||||
HttpResponseMessage httpResponseMessage = httpClient.PostAsync(requestUrl, multipartFormDataContent).Result;
|
|
||||||
|
|
||||||
if (httpResponseMessage.IsSuccessStatusCode)
|
|
||||||
return;
|
|
||||||
|
|
||||||
string resultBody = httpResponseMessage.Content.ReadAsStringAsync().Result;
|
|
||||||
|
|
||||||
throw new Exception("Attachment failed: " + resultBody);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void AttachFiles(string url, long headerID, List<Attachment> headerAttachments = null, List<Attachment> dataAttachments = null)
|
public static void AttachFiles(string url, List<Attachment>? headerAttachments = null, List<Attachment>? dataAttachments = null)
|
||||||
{
|
{
|
||||||
|
string directory;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
string? directoryName;
|
||||||
if (headerAttachments is not null)
|
if (headerAttachments is not null)
|
||||||
{
|
{
|
||||||
foreach (Attachment attachment in headerAttachments)
|
foreach (Attachment attachment in headerAttachments)
|
||||||
AttachFile(url, headerID, "", File.ReadAllBytes(attachment.SourceFileName), attachment.DestinationFileName);
|
{
|
||||||
|
directoryName = Path.GetDirectoryName(attachment.HeaderIdDirectory);
|
||||||
|
if (string.IsNullOrEmpty(directoryName))
|
||||||
|
continue;
|
||||||
|
directory = Path.Combine(directoryName, attachment.AttachmentId) ?? throw new Exception();
|
||||||
|
if (!Directory.Exists(directory))
|
||||||
|
_ = Directory.CreateDirectory(directory);
|
||||||
|
File.Copy(attachment.SourceFileName, Path.Combine(directory, attachment.DestinationFileName), overwrite: true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (dataAttachments is not null)
|
if (dataAttachments is not null)
|
||||||
{
|
{
|
||||||
foreach (Attachment attachment in dataAttachments)
|
foreach (Attachment attachment in dataAttachments)
|
||||||
AttachFile(url, headerID, attachment.UniqueId, File.ReadAllBytes(attachment.SourceFileName), attachment.DestinationFileName);
|
{
|
||||||
|
directoryName = Path.GetDirectoryName(attachment.HeaderIdDirectory.Replace("Header", "Data"));
|
||||||
|
if (string.IsNullOrEmpty(directoryName))
|
||||||
|
continue;
|
||||||
|
directory = Path.Combine(directoryName, attachment.AttachmentId) ?? throw new Exception();
|
||||||
|
if (!Directory.Exists(directory))
|
||||||
|
_ = Directory.CreateDirectory(directory);
|
||||||
|
File.Copy(attachment.SourceFileName, Path.Combine(directory, attachment.DestinationFileName), overwrite: true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (headerAttachments is not null)
|
||||||
|
{
|
||||||
|
foreach (Attachment attachment in headerAttachments)
|
||||||
|
AttachFile(url, attachment);
|
||||||
|
}
|
||||||
|
if (dataAttachments is not null)
|
||||||
|
{
|
||||||
|
foreach (Attachment attachment in dataAttachments)
|
||||||
|
AttachFile(url, attachment);
|
||||||
}
|
}
|
||||||
//MessageBox.Show(r.ToString());
|
//MessageBox.Show(r.ToString());
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
Exception exception = e;
|
Exception? exception = e;
|
||||||
StringBuilder stringBuilder = new();
|
StringBuilder stringBuilder = new();
|
||||||
while (exception is not null)
|
while (exception is not null)
|
||||||
{
|
{
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
34
Adaptation/Shared/ProcessDataStandardFormatMapping.cs
Normal file
34
Adaptation/Shared/ProcessDataStandardFormatMapping.cs
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
using System.Collections.ObjectModel;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace Adaptation.Shared;
|
||||||
|
|
||||||
|
public class ProcessDataStandardFormatMapping
|
||||||
|
{
|
||||||
|
|
||||||
|
public ReadOnlyCollection<int> ColumnIndices { get; private set; }
|
||||||
|
public ReadOnlyCollection<string> NewColumnNames { get; private set; }
|
||||||
|
public ReadOnlyCollection<string> OldColumnNames { get; private set; }
|
||||||
|
|
||||||
|
public ProcessDataStandardFormatMapping(ReadOnlyCollection<int> columnIndices,
|
||||||
|
ReadOnlyCollection<string> newColumnNames,
|
||||||
|
ReadOnlyCollection<string> oldColumnNames)
|
||||||
|
{
|
||||||
|
ColumnIndices = columnIndices;
|
||||||
|
NewColumnNames = newColumnNames;
|
||||||
|
OldColumnNames = oldColumnNames;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static ProcessDataStandardFormatMapping Get(string processDataStandardFormatMappingOldColumnNames, string processDataStandardFormatMappingNewColumnNames, string processDataStandardFormatMappingColumnIndices)
|
||||||
|
{
|
||||||
|
ProcessDataStandardFormatMapping result;
|
||||||
|
ReadOnlyCollection<string> newColumnNames = new(processDataStandardFormatMappingNewColumnNames.Split(','));
|
||||||
|
ReadOnlyCollection<string> oldColumnNames = new(processDataStandardFormatMappingOldColumnNames.Split(','));
|
||||||
|
ReadOnlyCollection<int> columnIndices = new(processDataStandardFormatMappingColumnIndices.Split(',').Select(int.Parse).ToArray());
|
||||||
|
result = new(columnIndices: columnIndices,
|
||||||
|
newColumnNames: newColumnNames,
|
||||||
|
oldColumnNames: oldColumnNames);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -14,6 +14,7 @@ public enum Test
|
|||||||
CandelaPSL = 38,
|
CandelaPSL = 38,
|
||||||
CandelaVerify = 37,
|
CandelaVerify = 37,
|
||||||
CDE = 24,
|
CDE = 24,
|
||||||
|
Climatec = 54, //Largest
|
||||||
CV = 3,
|
CV = 3,
|
||||||
DailyRPMAverage = 19,
|
DailyRPMAverage = 19,
|
||||||
DailyRPMPLRatio = 20,
|
DailyRPMPLRatio = 20,
|
||||||
@ -38,7 +39,7 @@ public enum Test
|
|||||||
RPMPLRatio = 17,
|
RPMPLRatio = 17,
|
||||||
RPMXY = 15,
|
RPMXY = 15,
|
||||||
SP1 = 8,
|
SP1 = 8,
|
||||||
SRP2100 = 53, //Largest
|
SRP2100 = 53,
|
||||||
Tencor = 7,
|
Tencor = 7,
|
||||||
UV = 35,
|
UV = 35,
|
||||||
VerificationLehighton = 14,
|
VerificationLehighton = 14,
|
||||||
|
|||||||
@ -0,0 +1,182 @@
|
|||||||
|
#if v2_57_0
|
||||||
|
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_57_0;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static MET08DDUPSFS6420 EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
static MET08DDUPSFS6420() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||||
|
|
||||||
|
public MET08DDUPSFS6420() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public MET08DDUPSFS6420(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new MET08DDUPSFS6420(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_57_0__MET08DDUPSFS6420__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_57_0__MET08DDUPSFS6420__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_57_0__MET08DDUPSFS6420__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_57_0__MET08DDUPSFS6420__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_57_0__MET08DDUPSFS6420__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_57_0__MET08DDUPSFS6420__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_57_0__MET08DDUPSFS6420__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_57_0__MET08DDUPSFS6420__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_57_0__MET08DDUPSFS6420__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_57_0__MET08DDUPSFS6420__Dummy()
|
||||||
|
{
|
||||||
|
string check = "637400762709163000.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"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@ -0,0 +1,65 @@
|
|||||||
|
#if v2_57_0
|
||||||
|
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_57_0;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class TENCOR1 : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static TENCOR1 EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
static TENCOR1() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||||
|
|
||||||
|
public TENCOR1() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public TENCOR1(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new TENCOR1(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_57_0__TENCOR1__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,65 @@
|
|||||||
|
#if v2_57_0
|
||||||
|
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_57_0;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class TENCOR2 : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static TENCOR2 EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
static TENCOR2() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||||
|
|
||||||
|
public TENCOR2() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public TENCOR2(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new TENCOR2(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_57_0__TENCOR2__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,65 @@
|
|||||||
|
#if v2_57_0
|
||||||
|
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_57_0;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class TENCOR3 : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static TENCOR3 EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
static TENCOR3() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||||
|
|
||||||
|
public TENCOR3() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public TENCOR3(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new TENCOR3(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_57_0__TENCOR3__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,182 @@
|
|||||||
|
#if v2_58_0
|
||||||
|
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_58_0;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static MET08DDUPSFS6420 EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
static MET08DDUPSFS6420() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||||
|
|
||||||
|
public MET08DDUPSFS6420() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public MET08DDUPSFS6420(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new MET08DDUPSFS6420(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_58_0__MET08DDUPSFS6420__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_58_0__MET08DDUPSFS6420__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_58_0__MET08DDUPSFS6420__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_58_0__MET08DDUPSFS6420__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_58_0__MET08DDUPSFS6420__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_58_0__MET08DDUPSFS6420__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_58_0__MET08DDUPSFS6420__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_58_0__MET08DDUPSFS6420__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_58_0__MET08DDUPSFS6420__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_58_0__MET08DDUPSFS6420__Dummy()
|
||||||
|
{
|
||||||
|
string check = "637400762709163000.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"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@ -0,0 +1,65 @@
|
|||||||
|
#if v2_58_0
|
||||||
|
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_58_0;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class TENCOR1 : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static TENCOR1 EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
static TENCOR1() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||||
|
|
||||||
|
public TENCOR1() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public TENCOR1(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new TENCOR1(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_58_0__TENCOR1__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,65 @@
|
|||||||
|
#if v2_58_0
|
||||||
|
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_58_0;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class TENCOR2 : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static TENCOR2 EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
static TENCOR2() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||||
|
|
||||||
|
public TENCOR2() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public TENCOR2(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new TENCOR2(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_58_0__TENCOR2__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,65 @@
|
|||||||
|
#if v2_58_0
|
||||||
|
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_58_0;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class TENCOR3 : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static TENCOR3 EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
static TENCOR3() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||||
|
|
||||||
|
public TENCOR3() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public TENCOR3(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new TENCOR3(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_58_0__TENCOR3__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,182 @@
|
|||||||
|
#if v2_59_0
|
||||||
|
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_59_0;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static MET08DDUPSFS6420 EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
static MET08DDUPSFS6420() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||||
|
|
||||||
|
public MET08DDUPSFS6420() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public MET08DDUPSFS6420(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new MET08DDUPSFS6420(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_59_0__MET08DDUPSFS6420__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_59_0__MET08DDUPSFS6420__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_59_0__MET08DDUPSFS6420__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_59_0__MET08DDUPSFS6420__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_59_0__MET08DDUPSFS6420__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_59_0__MET08DDUPSFS6420__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_59_0__MET08DDUPSFS6420__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_59_0__MET08DDUPSFS6420__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_59_0__MET08DDUPSFS6420__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_59_0__MET08DDUPSFS6420__Dummy()
|
||||||
|
{
|
||||||
|
string check = "637400762709163000.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"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@ -0,0 +1,65 @@
|
|||||||
|
#if v2_59_0
|
||||||
|
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_59_0;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class TENCOR1 : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static TENCOR1 EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
static TENCOR1() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||||
|
|
||||||
|
public TENCOR1() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public TENCOR1(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new TENCOR1(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_59_0__TENCOR1__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,65 @@
|
|||||||
|
#if v2_59_0
|
||||||
|
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_59_0;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class TENCOR2 : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static TENCOR2 EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
static TENCOR2() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||||
|
|
||||||
|
public TENCOR2() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public TENCOR2(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new TENCOR2(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_59_0__TENCOR2__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,65 @@
|
|||||||
|
#if v2_59_0
|
||||||
|
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_59_0;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class TENCOR3 : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static TENCOR3 EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
static TENCOR3() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||||
|
|
||||||
|
public TENCOR3() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public TENCOR3(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new TENCOR3(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_59_0__TENCOR3__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,182 @@
|
|||||||
|
#if v2_60_0
|
||||||
|
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_60_0;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static MET08DDUPSFS6420 EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
static MET08DDUPSFS6420() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||||
|
|
||||||
|
public MET08DDUPSFS6420() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public MET08DDUPSFS6420(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new MET08DDUPSFS6420(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_60_0__MET08DDUPSFS6420__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_60_0__MET08DDUPSFS6420__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_60_0__MET08DDUPSFS6420__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_60_0__MET08DDUPSFS6420__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_60_0__MET08DDUPSFS6420__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_60_0__MET08DDUPSFS6420__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_60_0__MET08DDUPSFS6420__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_60_0__MET08DDUPSFS6420__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_60_0__MET08DDUPSFS6420__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_60_0__MET08DDUPSFS6420__Dummy()
|
||||||
|
{
|
||||||
|
string check = "637400762709163000.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"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@ -0,0 +1,65 @@
|
|||||||
|
#if v2_60_0
|
||||||
|
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_60_0;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class TENCOR1 : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static TENCOR1 EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
static TENCOR1() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||||
|
|
||||||
|
public TENCOR1() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public TENCOR1(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new TENCOR1(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_60_0__TENCOR1__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 v2_60_0
|
||||||
|
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_60_0;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class TENCOR2 : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static TENCOR2 EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
static TENCOR2() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||||
|
|
||||||
|
public TENCOR2() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public TENCOR2(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new TENCOR2(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_60_0__TENCOR2__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_60_0__TENCOR2__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,76 @@
|
|||||||
|
#if v2_60_0
|
||||||
|
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_60_0;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class TENCOR3 : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static TENCOR3 EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
static TENCOR3() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||||
|
|
||||||
|
public TENCOR3() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public TENCOR3(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new TENCOR3(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_60_0__TENCOR3__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_60_0__TENCOR3__TransmissionControlProtocol()
|
||||||
|
{
|
||||||
|
string check = "Statistics";
|
||||||
|
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,182 @@
|
|||||||
|
#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 MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static MET08DDUPSFS6420 EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
static MET08DDUPSFS6420() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||||
|
|
||||||
|
public MET08DDUPSFS6420() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public MET08DDUPSFS6420(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new MET08DDUPSFS6420(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__MET08DDUPSFS6420__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__MET08DDUPSFS6420__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__MET08DDUPSFS6420__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__MET08DDUPSFS6420__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__MET08DDUPSFS6420__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__MET08DDUPSFS6420__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__MET08DDUPSFS6420__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__MET08DDUPSFS6420__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__MET08DDUPSFS6420__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__MET08DDUPSFS6420__Dummy()
|
||||||
|
{
|
||||||
|
string check = "637400762709163000.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"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
#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 TENCOR1 : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static TENCOR1 EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
static TENCOR1() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||||
|
|
||||||
|
public TENCOR1() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public TENCOR1(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new TENCOR1(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__TENCOR1__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 TENCOR2 : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static TENCOR2 EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
static TENCOR2() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||||
|
|
||||||
|
public TENCOR2() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public TENCOR2(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new TENCOR2(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__TENCOR2__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__TENCOR2__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,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 TENCOR3 : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static TENCOR3 EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
static TENCOR3() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||||
|
|
||||||
|
public TENCOR3() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public TENCOR3(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new TENCOR3(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__TENCOR3__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__TENCOR3__TransmissionControlProtocol()
|
||||||
|
{
|
||||||
|
string check = "Statistics";
|
||||||
|
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,3 +1,4 @@
|
|||||||
|
#if v2_36_3
|
||||||
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;
|
||||||
@ -45,7 +46,7 @@ public class TENCOR1 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting?.Dispose();
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -58,4 +59,5 @@ public class TENCOR1 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
#if v2_39_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;
|
||||||
@ -47,7 +48,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting?.Dispose();
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -60,7 +61,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -73,7 +74,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -86,7 +87,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -99,7 +100,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -112,7 +113,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -125,7 +126,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -138,7 +139,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -151,7 +152,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -164,7 +165,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -177,7 +178,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -190,4 +191,5 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
#if v2_39_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;
|
||||||
@ -44,7 +45,7 @@ public class TENCOR1 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting?.Dispose();
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -52,4 +53,5 @@ public class TENCOR1 : EAFLoggingUnitTesting
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
#if v2_39_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;
|
||||||
@ -44,7 +45,7 @@ public class TENCOR2 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting?.Dispose();
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -52,4 +53,5 @@ public class TENCOR2 : EAFLoggingUnitTesting
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
#if v2_39_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;
|
||||||
@ -45,7 +46,7 @@ public class TENCOR3_EQPT : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting?.Dispose();
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -58,4 +59,5 @@ public class TENCOR3_EQPT : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
#if v2_39_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;
|
||||||
@ -45,7 +46,7 @@ public class TENCOR3 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting?.Dispose();
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -58,4 +59,5 @@ public class TENCOR3 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
#if v2_43_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;
|
||||||
@ -45,7 +46,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting?.Dispose();
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -58,7 +59,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -71,7 +72,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -84,7 +85,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -97,7 +98,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -110,7 +111,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -123,7 +124,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -136,7 +137,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -149,7 +150,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -162,7 +163,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -175,4 +176,5 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
#if v2_43_4
|
||||||
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;
|
||||||
@ -47,7 +48,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting?.Dispose();
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -60,7 +61,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -73,7 +74,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -86,7 +87,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -99,7 +100,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -112,7 +113,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -125,7 +126,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -138,7 +139,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -151,7 +152,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -164,7 +165,7 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -177,4 +178,5 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
#if v2_43_4
|
||||||
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;
|
||||||
@ -47,7 +48,7 @@ public class TENCOR1 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting?.Dispose();
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -60,4 +61,5 @@ public class TENCOR1 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
#if v2_43_4
|
||||||
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;
|
||||||
@ -47,7 +48,7 @@ public class TENCOR2 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting?.Dispose();
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -60,4 +61,5 @@ public class TENCOR2 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
#if v2_43_4
|
||||||
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;
|
||||||
@ -47,7 +48,7 @@ public class TENCOR3 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting?.Dispose();
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -60,4 +61,5 @@ public class TENCOR3 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
#if v2_47_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;
|
||||||
@ -47,7 +48,9 @@ public class TENCOR1 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting?.Dispose();
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_47_0__TENCOR1__pcl()
|
public void Staging__v2_47_0__TENCOR1__pcl()
|
||||||
{
|
{
|
||||||
@ -58,4 +61,5 @@ public class TENCOR1 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
#if v2_47_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;
|
||||||
@ -47,7 +48,9 @@ public class TENCOR2 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting?.Dispose();
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_47_0__TENCOR2__pcl()
|
public void Staging__v2_47_0__TENCOR2__pcl()
|
||||||
{
|
{
|
||||||
@ -58,4 +61,5 @@ public class TENCOR2 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
#if v2_47_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;
|
||||||
@ -47,7 +48,9 @@ public class TENCOR3 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting?.Dispose();
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_47_0__TENCOR3__pcl()
|
public void Staging__v2_47_0__TENCOR3__pcl()
|
||||||
{
|
{
|
||||||
@ -58,4 +61,5 @@ public class TENCOR3 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
#if v2_47_1
|
||||||
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;
|
||||||
@ -47,7 +48,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting?.Dispose();
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_47_1__MET08DDUPSFS6420__MoveMatchingFiles()
|
public void Staging__v2_47_1__MET08DDUPSFS6420__MoveMatchingFiles()
|
||||||
{
|
{
|
||||||
@ -58,7 +61,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_47_1__MET08DDUPSFS6420__OpenInsightMetrologyViewer()
|
public void Staging__v2_47_1__MET08DDUPSFS6420__OpenInsightMetrologyViewer()
|
||||||
{
|
{
|
||||||
@ -69,7 +74,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_47_1__MET08DDUPSFS6420__IQSSi()
|
public void Staging__v2_47_1__MET08DDUPSFS6420__IQSSi()
|
||||||
{
|
{
|
||||||
@ -80,7 +87,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_47_1__MET08DDUPSFS6420__OpenInsight()
|
public void Staging__v2_47_1__MET08DDUPSFS6420__OpenInsight()
|
||||||
{
|
{
|
||||||
@ -91,7 +100,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_47_1__MET08DDUPSFS6420__OpenInsightMetrologyViewerAttachments()
|
public void Staging__v2_47_1__MET08DDUPSFS6420__OpenInsightMetrologyViewerAttachments()
|
||||||
{
|
{
|
||||||
@ -102,7 +113,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_47_1__MET08DDUPSFS6420__APC()
|
public void Staging__v2_47_1__MET08DDUPSFS6420__APC()
|
||||||
{
|
{
|
||||||
@ -113,7 +126,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_47_1__MET08DDUPSFS6420__SPaCe()
|
public void Staging__v2_47_1__MET08DDUPSFS6420__SPaCe()
|
||||||
{
|
{
|
||||||
@ -124,7 +139,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_47_1__MET08DDUPSFS6420__Processed()
|
public void Staging__v2_47_1__MET08DDUPSFS6420__Processed()
|
||||||
{
|
{
|
||||||
@ -135,7 +152,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_47_1__MET08DDUPSFS6420__Archive()
|
public void Staging__v2_47_1__MET08DDUPSFS6420__Archive()
|
||||||
{
|
{
|
||||||
@ -146,7 +165,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_47_1__MET08DDUPSFS6420__Dummy()
|
public void Staging__v2_47_1__MET08DDUPSFS6420__Dummy()
|
||||||
{
|
{
|
||||||
@ -157,4 +178,5 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
#if v2_47_5
|
||||||
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;
|
||||||
@ -47,7 +48,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting?.Dispose();
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_47_5__MET08DDUPSFS6420__MoveMatchingFiles()
|
public void Staging__v2_47_5__MET08DDUPSFS6420__MoveMatchingFiles()
|
||||||
{
|
{
|
||||||
@ -58,7 +61,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_47_5__MET08DDUPSFS6420__OpenInsightMetrologyViewer()
|
public void Staging__v2_47_5__MET08DDUPSFS6420__OpenInsightMetrologyViewer()
|
||||||
{
|
{
|
||||||
@ -69,7 +74,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_47_5__MET08DDUPSFS6420__IQSSi()
|
public void Staging__v2_47_5__MET08DDUPSFS6420__IQSSi()
|
||||||
{
|
{
|
||||||
@ -80,7 +87,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_47_5__MET08DDUPSFS6420__OpenInsight()
|
public void Staging__v2_47_5__MET08DDUPSFS6420__OpenInsight()
|
||||||
{
|
{
|
||||||
@ -91,7 +100,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_47_5__MET08DDUPSFS6420__OpenInsightMetrologyViewerAttachments()
|
public void Staging__v2_47_5__MET08DDUPSFS6420__OpenInsightMetrologyViewerAttachments()
|
||||||
{
|
{
|
||||||
@ -102,7 +113,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_47_5__MET08DDUPSFS6420__APC()
|
public void Staging__v2_47_5__MET08DDUPSFS6420__APC()
|
||||||
{
|
{
|
||||||
@ -113,7 +126,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_47_5__MET08DDUPSFS6420__SPaCe()
|
public void Staging__v2_47_5__MET08DDUPSFS6420__SPaCe()
|
||||||
{
|
{
|
||||||
@ -124,7 +139,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_47_5__MET08DDUPSFS6420__Processed()
|
public void Staging__v2_47_5__MET08DDUPSFS6420__Processed()
|
||||||
{
|
{
|
||||||
@ -135,7 +152,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_47_5__MET08DDUPSFS6420__Archive()
|
public void Staging__v2_47_5__MET08DDUPSFS6420__Archive()
|
||||||
{
|
{
|
||||||
@ -146,7 +165,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_47_5__MET08DDUPSFS6420__Dummy()
|
public void Staging__v2_47_5__MET08DDUPSFS6420__Dummy()
|
||||||
{
|
{
|
||||||
@ -157,4 +178,5 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
#if v2_47_5
|
||||||
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;
|
||||||
@ -47,7 +48,9 @@ public class TENCOR1 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting?.Dispose();
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_47_5__TENCOR1__pcl()
|
public void Staging__v2_47_5__TENCOR1__pcl()
|
||||||
{
|
{
|
||||||
@ -58,4 +61,5 @@ public class TENCOR1 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
#if v2_47_5
|
||||||
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;
|
||||||
@ -47,7 +48,9 @@ public class TENCOR2 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting?.Dispose();
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_47_5__TENCOR2__pcl()
|
public void Staging__v2_47_5__TENCOR2__pcl()
|
||||||
{
|
{
|
||||||
@ -58,4 +61,5 @@ public class TENCOR2 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
#if v2_47_5
|
||||||
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;
|
||||||
@ -47,7 +48,9 @@ public class TENCOR3 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting?.Dispose();
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_47_5__TENCOR3__pcl()
|
public void Staging__v2_47_5__TENCOR3__pcl()
|
||||||
{
|
{
|
||||||
@ -58,4 +61,5 @@ public class TENCOR3 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
#if v2_49_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;
|
||||||
@ -47,7 +48,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting?.Dispose();
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_49_0__MET08DDUPSFS6420__MoveMatchingFiles()
|
public void Staging__v2_49_0__MET08DDUPSFS6420__MoveMatchingFiles()
|
||||||
{
|
{
|
||||||
@ -58,7 +61,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_49_0__MET08DDUPSFS6420__OpenInsightMetrologyViewer()
|
public void Staging__v2_49_0__MET08DDUPSFS6420__OpenInsightMetrologyViewer()
|
||||||
{
|
{
|
||||||
@ -69,7 +74,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_49_0__MET08DDUPSFS6420__IQSSi()
|
public void Staging__v2_49_0__MET08DDUPSFS6420__IQSSi()
|
||||||
{
|
{
|
||||||
@ -80,7 +87,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_49_0__MET08DDUPSFS6420__OpenInsight()
|
public void Staging__v2_49_0__MET08DDUPSFS6420__OpenInsight()
|
||||||
{
|
{
|
||||||
@ -91,7 +100,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_49_0__MET08DDUPSFS6420__OpenInsightMetrologyViewerAttachments()
|
public void Staging__v2_49_0__MET08DDUPSFS6420__OpenInsightMetrologyViewerAttachments()
|
||||||
{
|
{
|
||||||
@ -102,7 +113,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_49_0__MET08DDUPSFS6420__APC()
|
public void Staging__v2_49_0__MET08DDUPSFS6420__APC()
|
||||||
{
|
{
|
||||||
@ -113,7 +126,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_49_0__MET08DDUPSFS6420__SPaCe()
|
public void Staging__v2_49_0__MET08DDUPSFS6420__SPaCe()
|
||||||
{
|
{
|
||||||
@ -124,7 +139,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_49_0__MET08DDUPSFS6420__Processed()
|
public void Staging__v2_49_0__MET08DDUPSFS6420__Processed()
|
||||||
{
|
{
|
||||||
@ -135,7 +152,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_49_0__MET08DDUPSFS6420__Archive()
|
public void Staging__v2_49_0__MET08DDUPSFS6420__Archive()
|
||||||
{
|
{
|
||||||
@ -146,7 +165,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_49_0__MET08DDUPSFS6420__Dummy()
|
public void Staging__v2_49_0__MET08DDUPSFS6420__Dummy()
|
||||||
{
|
{
|
||||||
@ -157,4 +178,5 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
#if v2_49_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;
|
||||||
@ -47,7 +48,9 @@ public class TENCOR1 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting?.Dispose();
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_49_0__TENCOR1__pcl()
|
public void Staging__v2_49_0__TENCOR1__pcl()
|
||||||
{
|
{
|
||||||
@ -58,4 +61,5 @@ public class TENCOR1 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
#if v2_49_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;
|
||||||
@ -47,7 +48,9 @@ public class TENCOR2 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting?.Dispose();
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_49_0__TENCOR2__pcl()
|
public void Staging__v2_49_0__TENCOR2__pcl()
|
||||||
{
|
{
|
||||||
@ -58,4 +61,5 @@ public class TENCOR2 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
#if v2_49_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;
|
||||||
@ -47,7 +48,9 @@ public class TENCOR3 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting?.Dispose();
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_49_0__TENCOR3__pcl()
|
public void Staging__v2_49_0__TENCOR3__pcl()
|
||||||
{
|
{
|
||||||
@ -58,4 +61,5 @@ public class TENCOR3 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
#if v2_49_2
|
||||||
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;
|
||||||
@ -47,7 +48,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting?.Dispose();
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_49_2__MET08DDUPSFS6420__MoveMatchingFiles()
|
public void Staging__v2_49_2__MET08DDUPSFS6420__MoveMatchingFiles()
|
||||||
{
|
{
|
||||||
@ -58,7 +61,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_49_2__MET08DDUPSFS6420__OpenInsightMetrologyViewer()
|
public void Staging__v2_49_2__MET08DDUPSFS6420__OpenInsightMetrologyViewer()
|
||||||
{
|
{
|
||||||
@ -69,7 +74,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_49_2__MET08DDUPSFS6420__IQSSi()
|
public void Staging__v2_49_2__MET08DDUPSFS6420__IQSSi()
|
||||||
{
|
{
|
||||||
@ -80,7 +87,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_49_2__MET08DDUPSFS6420__OpenInsight()
|
public void Staging__v2_49_2__MET08DDUPSFS6420__OpenInsight()
|
||||||
{
|
{
|
||||||
@ -91,7 +100,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_49_2__MET08DDUPSFS6420__OpenInsightMetrologyViewerAttachments()
|
public void Staging__v2_49_2__MET08DDUPSFS6420__OpenInsightMetrologyViewerAttachments()
|
||||||
{
|
{
|
||||||
@ -102,7 +113,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_49_2__MET08DDUPSFS6420__APC()
|
public void Staging__v2_49_2__MET08DDUPSFS6420__APC()
|
||||||
{
|
{
|
||||||
@ -113,7 +126,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_49_2__MET08DDUPSFS6420__SPaCe()
|
public void Staging__v2_49_2__MET08DDUPSFS6420__SPaCe()
|
||||||
{
|
{
|
||||||
@ -124,7 +139,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_49_2__MET08DDUPSFS6420__Processed()
|
public void Staging__v2_49_2__MET08DDUPSFS6420__Processed()
|
||||||
{
|
{
|
||||||
@ -135,7 +152,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_49_2__MET08DDUPSFS6420__Archive()
|
public void Staging__v2_49_2__MET08DDUPSFS6420__Archive()
|
||||||
{
|
{
|
||||||
@ -146,7 +165,9 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_49_2__MET08DDUPSFS6420__Dummy()
|
public void Staging__v2_49_2__MET08DDUPSFS6420__Dummy()
|
||||||
{
|
{
|
||||||
@ -157,4 +178,5 @@ public class MET08DDUPSFS6420 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
#if v2_49_2
|
||||||
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;
|
||||||
@ -47,7 +48,9 @@ public class TENCOR1 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting?.Dispose();
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_49_2__TENCOR1__pcl()
|
public void Staging__v2_49_2__TENCOR1__pcl()
|
||||||
{
|
{
|
||||||
@ -58,4 +61,5 @@ public class TENCOR1 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
#if v2_49_2
|
||||||
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;
|
||||||
@ -47,7 +48,9 @@ public class TENCOR2 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting?.Dispose();
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_49_2__TENCOR2__pcl()
|
public void Staging__v2_49_2__TENCOR2__pcl()
|
||||||
{
|
{
|
||||||
@ -58,4 +61,5 @@ public class TENCOR2 : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user