Compare commits
13 Commits
5e87407ead
...
06-16-a
| Author | SHA1 | Date | |
|---|---|---|---|
| c68107caf5 | |||
| dbfea6e18a | |||
| 7190d21dfd | |||
| ceefbb354a | |||
| e082257baf | |||
| c93819b346 | |||
| 80150959cc | |||
| 93555ac94a | |||
| d347d5835c | |||
| 99eab6d003 | |||
| 056975ef85 | |||
| cc0e0c9965 | |||
| c36b7f41b9 |
16
.gitignore
vendored
16
.gitignore
vendored
@ -331,11 +331,15 @@ ASALocalRun/
|
|||||||
##
|
##
|
||||||
## Visual Studio Code
|
## Visual Studio Code
|
||||||
##
|
##
|
||||||
*/!.vscode/extensions.json
|
**/.vscode/*
|
||||||
*/!.vscode/launch.json
|
!**/.vscode/extensions.json
|
||||||
*/!.vscode/settings.json
|
!**/.vscode/format-report.json
|
||||||
*/!.vscode/tasks.json
|
!**/.vscode/launch.json
|
||||||
*/.vscode/*
|
!**/.vscode/settings.json
|
||||||
*/.vscode/ReportGenerator/*
|
!**/.vscode/tasks.json
|
||||||
|
!**/.vscode/mklink.md
|
||||||
|
|
||||||
*.lnk
|
*.lnk
|
||||||
|
|
||||||
|
.kanbn
|
||||||
|
Adaptation/.kanbn
|
||||||
|
|||||||
55
.vscode/settings.json
vendored
Normal file
55
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
{
|
||||||
|
"files.eol": "\n",
|
||||||
|
"[markdown]": {
|
||||||
|
"editor.wordWrap": "off"
|
||||||
|
},
|
||||||
|
"cSpell.words": [
|
||||||
|
"PDSF",
|
||||||
|
"Syncthing"
|
||||||
|
],
|
||||||
|
"files.exclude": {
|
||||||
|
"**/node_modules": true
|
||||||
|
},
|
||||||
|
"files.watcherExclude": {
|
||||||
|
"**/node_modules": true
|
||||||
|
},
|
||||||
|
"foam.files.ignore": [
|
||||||
|
".foam/**/*",
|
||||||
|
".stfolder/**/*",
|
||||||
|
"**/_layouts/**/*",
|
||||||
|
"**/_site/**/*",
|
||||||
|
"**/.vscode/**/*",
|
||||||
|
"**/node_modules/**/*"
|
||||||
|
],
|
||||||
|
"kanbn.showBurndownButton": false,
|
||||||
|
"kanbn.showSprintButton": false,
|
||||||
|
"foam.links.hover.enable": false,
|
||||||
|
"foam.placeholders.exclude": [
|
||||||
|
".kanbn/Archive/**/*"
|
||||||
|
],
|
||||||
|
"foam.orphans.exclude": [
|
||||||
|
".journal/**/*"
|
||||||
|
],
|
||||||
|
"foam.graph.style": {
|
||||||
|
"background": "#202020",
|
||||||
|
"node": {
|
||||||
|
"wired": "green",
|
||||||
|
"wireless": "orange",
|
||||||
|
"person": "white",
|
||||||
|
"topic": "#bc2a3c",
|
||||||
|
"kanbn": "#ff7b00",
|
||||||
|
"basic-note": "#773b93",
|
||||||
|
"daily-note": "#ff9d00",
|
||||||
|
"note": "#f2cb1d",
|
||||||
|
"placeholder": "#ff9d00",
|
||||||
|
"tag": "#0494c1",
|
||||||
|
"bug": "#bc2a3c",
|
||||||
|
"epic": "#ff7b00",
|
||||||
|
"feature": "#773b93",
|
||||||
|
"issue": "#ff9d00",
|
||||||
|
"task": "#f2cb1d",
|
||||||
|
"test-case": "#ff9d00",
|
||||||
|
"user-story": "#0494c1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,3 +1,19 @@
|
|||||||
|
[*.md]
|
||||||
|
end_of_line = crlf
|
||||||
|
file_header_template = unset
|
||||||
|
indent_size = 2
|
||||||
|
indent_style = space
|
||||||
|
insert_final_newline = false
|
||||||
|
root = true
|
||||||
|
tab_width = 2
|
||||||
|
[*.csproj]
|
||||||
|
end_of_line = crlf
|
||||||
|
file_header_template = unset
|
||||||
|
indent_size = 2
|
||||||
|
indent_style = space
|
||||||
|
insert_final_newline = false
|
||||||
|
root = true
|
||||||
|
tab_width = 2
|
||||||
[*.cs]
|
[*.cs]
|
||||||
csharp_indent_block_contents = true
|
csharp_indent_block_contents = true
|
||||||
csharp_indent_braces = false
|
csharp_indent_braces = false
|
||||||
@ -77,18 +93,37 @@ 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.CA1816.severity = none # CA1816: Call GC.SuppressFinalize correctly
|
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 # CA1823: 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.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.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.CA1869.severity = none # CA1869: Avoid creating a new 'JsonSerializerOptions' instance for every serialization operation. Cache and reuse instances instead.
|
||||||
|
dotnet_diagnostic.CA2254.severity = none # CA2254: The logging message template should not vary between calls to 'LoggerExtensions.LogInformation(ILogger, string?, params object?[])'
|
||||||
dotnet_diagnostic.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 = warning # Using directive is unnecessary
|
||||||
|
dotnet_diagnostic.IDE0028.severity = none # IDE0028: Collection initialization can be simplified
|
||||||
|
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
|
||||||
dotnet_diagnostic.IDE0049.severity = warning # Use language keywords instead of framework type names for type references (IDE0049)
|
dotnet_diagnostic.IDE0049.severity = warning # Use language keywords instead of framework type names for type references (IDE0049)
|
||||||
dotnet_diagnostic.IDE0060.severity = warning # IDE0060: Remove unused parameter
|
dotnet_diagnostic.IDE0060.severity = warning # IDE0060: Remove unused parameter
|
||||||
|
dotnet_diagnostic.IDE0200.severity = warning # IDE0200: Lambda expression can be removed
|
||||||
|
dotnet_diagnostic.IDE0270.severity = none # IDE0270: Null check can be simplified
|
||||||
|
dotnet_diagnostic.IDE0290.severity = none # Use primary constructor [Distance]csharp(IDE0290)
|
||||||
|
dotnet_diagnostic.IDE0300.severity = none # IDE0300: 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.MSTEST0037.severity = error # MSTEST0037: Use proper 'Assert' methods
|
||||||
|
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
|
||||||
dotnet_naming_rule.abstract_method_should_be_pascal_case.symbols = abstract_method
|
dotnet_naming_rule.abstract_method_should_be_pascal_case.symbols = abstract_method
|
||||||
|
|||||||
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:\MESAFIBACKLOG\06_SourceCode\MESAFIBACKLOG\Adaptation\.kanbn" "D:\5-Other-Small\Kanban\MESAFIBACKLOG"
|
||||||
|
```
|
||||||
3
Adaptation/.vscode/settings.json
vendored
3
Adaptation/.vscode/settings.json
vendored
@ -1,4 +1,7 @@
|
|||||||
{
|
{
|
||||||
|
"[markdown]": {
|
||||||
|
"editor.wordWrap": "off"
|
||||||
|
},
|
||||||
"cSpell.words": [
|
"cSpell.words": [
|
||||||
"Analyte",
|
"Analyte",
|
||||||
"CICN",
|
"CICN",
|
||||||
|
|||||||
130
Adaptation/.vscode/tasks.json
vendored
Normal file
130
Adaptation/.vscode/tasks.json
vendored
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
{
|
||||||
|
"version": "2.0.0",
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"label": "Build",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"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"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Format",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"format",
|
||||||
|
"--report",
|
||||||
|
".vscode",
|
||||||
|
"--verbosity",
|
||||||
|
"detailed",
|
||||||
|
"--severity",
|
||||||
|
"warn"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Nuget Clear",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"nuget",
|
||||||
|
"locals",
|
||||||
|
"all",
|
||||||
|
"--clear"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "MSBuild for EAF Deployment Packages",
|
||||||
|
"command": "C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"/target:Build",
|
||||||
|
"/restore:True",
|
||||||
|
"/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",
|
||||||
|
"/consoleloggerparameters:PerformanceSummary;ErrorsOnly;",
|
||||||
|
"/property:Configuration=Debug;TargetFrameworkVersion=v4.8",
|
||||||
|
"../DEP08SIHTRPLC.csproj"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Project",
|
||||||
|
"type": "shell",
|
||||||
|
"command": "code ../DEP08SIHTRPLC.csproj",
|
||||||
|
"problemMatcher": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Readme",
|
||||||
|
"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/DEP08SIHTRPLC",
|
||||||
|
"Day-Helper-2025-03-20",
|
||||||
|
"false",
|
||||||
|
"4"
|
||||||
|
],
|
||||||
|
"problemMatcher": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Git Config",
|
||||||
|
"type": "shell",
|
||||||
|
"command": "code ../.git/config",
|
||||||
|
"problemMatcher": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Kanbn Console",
|
||||||
|
"type": "npm",
|
||||||
|
"script": "kanbn.board",
|
||||||
|
"problemMatcher": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Kanbn Write Boad",
|
||||||
|
"type": "shell",
|
||||||
|
"command": "& kanbn board -j | L:/Git/kanbn2md/kanbn2md.exe >.kanbn/board.md",
|
||||||
|
"problemMatcher": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Kanbn Write json",
|
||||||
|
"type": "npm",
|
||||||
|
"script": "kanbn.board.json",
|
||||||
|
"problemMatcher": []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@ -12,7 +12,7 @@ pool:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- script: |
|
- script: |
|
||||||
set coreVersion=net6.0
|
set coreVersion=net7.0
|
||||||
echo %coreVersion%
|
echo %coreVersion%
|
||||||
echo ##vso[task.setvariable variable=CoreVersion;]%coreVersion%
|
echo ##vso[task.setvariable variable=CoreVersion;]%coreVersion%
|
||||||
echo $(CoreVersion)
|
echo $(CoreVersion)
|
||||||
@ -22,11 +22,11 @@ steps:
|
|||||||
set configuration=Debug
|
set configuration=Debug
|
||||||
echo %configuration%
|
echo %configuration%
|
||||||
echo ##vso[task.setvariable variable=Configuration;]%configuration%
|
echo ##vso[task.setvariable variable=Configuration;]%configuration%
|
||||||
echo ($Configuration)
|
echo $(Configuration)
|
||||||
displayName: Configuration
|
displayName: Configuration
|
||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
set nugetSource=https://messa017.infineon.com/v3/index.json
|
set nugetSource=https://artifactory.intra.infineon.com/artifactory/api/nuget/ngt-fi-package-main-vir/index.json;D:/vsts-agent-win-x64-2.210.1-eaf/nuget
|
||||||
echo %nugetSource%
|
echo %nugetSource%
|
||||||
echo ##vso[task.setvariable variable=NugetSource;]%nugetSource%
|
echo ##vso[task.setvariable variable=NugetSource;]%nugetSource%
|
||||||
echo $(NugetSource)
|
echo $(NugetSource)
|
||||||
@ -97,7 +97,15 @@ steps:
|
|||||||
testResultsFormat: VSTest
|
testResultsFormat: VSTest
|
||||||
testResultsFiles: "**/*.trx"
|
testResultsFiles: "**/*.trx"
|
||||||
testRunTitle: "$(GitCommitSeven)-$(Build.BuildId)-$(CoreVersion)-$(Configuration)-$(Build.Repository.Name)"
|
testRunTitle: "$(GitCommitSeven)-$(Build.BuildId)-$(CoreVersion)-$(Configuration)-$(Build.Repository.Name)"
|
||||||
searchFolder: "$(System.DefaultWorkingDirectory)"
|
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
|
- task: mspremier.CreateWorkItem.CreateWorkItem-task.CreateWorkItem@1
|
||||||
displayName: "Create work item"
|
displayName: "Create work item"
|
||||||
@ -113,7 +121,7 @@ steps:
|
|||||||
displayName: "Core Publish"
|
displayName: "Core Publish"
|
||||||
enabled: false
|
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)'
|
- 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"
|
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'
|
- 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'
|
||||||
@ -125,18 +133,18 @@ steps:
|
|||||||
- task: CopyFiles@2
|
- task: CopyFiles@2
|
||||||
displayName: 'Copy Files to: D:\Framework4.8'
|
displayName: 'Copy Files to: D:\Framework4.8'
|
||||||
inputs:
|
inputs:
|
||||||
SourceFolder: 'bin\$(Configuration)'
|
|
||||||
Contents: "*$(Build.Repository.Name)*"
|
Contents: "*$(Build.Repository.Name)*"
|
||||||
|
SourceFolder: 'bin\$(Configuration)'
|
||||||
TargetFolder: 'D:\Framework4.8\$(GitCommitSeven)-$(Build.BuildId)-$(Build.Repository.Name)-$(Configuration)'
|
TargetFolder: 'D:\Framework4.8\$(GitCommitSeven)-$(Build.BuildId)-$(Build.Repository.Name)-$(Configuration)'
|
||||||
OverWrite: true
|
OverWrite: true
|
||||||
enabled: false
|
enabled: false
|
||||||
|
|
||||||
- task: CopyFiles@2
|
- task: CopyFiles@2
|
||||||
displayName: 'Copy Files to: \\messv02ecc1.ec.local\EC_EAFRepository'
|
displayName: 'Copy Files to: Local D EAF Deployment Storage'
|
||||||
inputs:
|
inputs:
|
||||||
SourceFolder: 'bin\$(Configuration)'
|
|
||||||
Contents: "*$(Build.Repository.Name)*"
|
Contents: "*$(Build.Repository.Name)*"
|
||||||
TargetFolder: '\\messv02ecc1.ec.local\EC_EAFRepository\Staging\DeploymentStorage\Adaptation_$(Build.Repository.Name)'
|
SourceFolder: 'bin\$(Configuration)'
|
||||||
|
TargetFolder: 'D:\EAF\EAF Deployment Storage\Adaptation_$(Build.Repository.Name)'
|
||||||
OverWrite: true
|
OverWrite: true
|
||||||
enabled: false
|
enabled: false
|
||||||
|
|
||||||
|
|||||||
@ -8,10 +8,9 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ImplicitUsings>disable</ImplicitUsings>
|
<ImplicitUsings>disable</ImplicitUsings>
|
||||||
<IsPackable>false</IsPackable>
|
<IsPackable>false</IsPackable>
|
||||||
<LangVersion>10.0</LangVersion>
|
|
||||||
<Nullable>disable</Nullable>
|
<Nullable>disable</Nullable>
|
||||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<VSTestLogger>trx</VSTestLogger>
|
<VSTestLogger>trx</VSTestLogger>
|
||||||
@ -33,8 +32,11 @@
|
|||||||
<DefineConstants>Linux</DefineConstants>
|
<DefineConstants>Linux</DefineConstants>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="coverlet.collector" Version="3.2.0" />
|
<RuntimeHostConfigurationOption Include="AssemblyName" Value="DEP08SIHTRPLC" />
|
||||||
<PackageReference Include="FFMpegCore" Version="5.0.2" />
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="coverlet.collector" Version="6.0.3" />
|
||||||
|
<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>
|
||||||
<PackageReference Include="IKVM.OpenJDK.Media" Version="7.2.4630.5"><NoWarn>NU1701</NoWarn></PackageReference>
|
<PackageReference Include="IKVM.OpenJDK.Media" Version="7.2.4630.5"><NoWarn>NU1701</NoWarn></PackageReference>
|
||||||
@ -42,42 +44,40 @@
|
|||||||
<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="7.0.3" />
|
<PackageReference Include="log4net" Version="3.0.3"></PackageReference>
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="9.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="9.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="9.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration.json" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="9.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration.json" Version="9.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Configuration" Version="9.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="9.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="7.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="9.0.0" />
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
|
<PackageReference Include="Microsoft.Extensions.Logging" Version="9.0.0" />
|
||||||
<PackageReference Include="Microsoft.Win32.SystemEvents" Version="7.0.0" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
|
||||||
<PackageReference Include="MSTest.TestAdapter" Version="3.0.2" />
|
<PackageReference Include="Microsoft.Win32.SystemEvents" Version="9.0.0" />
|
||||||
<PackageReference Include="MSTest.TestFramework" Version="3.0.2" />
|
<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.2.8" />
|
<PackageReference Include="RoboSharp" Version="1.6.0" />
|
||||||
<PackageReference Include="System.Configuration.ConfigurationManager" Version="7.0.0" />
|
<PackageReference Include="System.Configuration.ConfigurationManager" Version="9.0.0" />
|
||||||
<PackageReference Include="System.Data.OleDb" Version="7.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="7.0.0" />
|
<PackageReference Include="System.Drawing.Common" Version="9.0.0" />
|
||||||
<PackageReference Include="System.Text.Json" Version="7.0.2" />
|
<PackageReference Include="System.Text.Json" Version="9.0.0" />
|
||||||
|
</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" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
<PackageReference Include="Tesseract" Version="5.2.0" />
|
<PackageReference Include="Tesseract" Version="5.2.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="Tibco.Rendezvous" Version="8.5.0" />
|
|
||||||
<PackageReference Include="Infineon.Yoda" Version="5.4.1" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="Infineon.Mesa.PDF.Text.Stripper" Version="4.8.0.1"><NoWarn>NU1701</NoWarn></PackageReference>
|
|
||||||
</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>
|
||||||
<None Include="appsettings.json">
|
<None Include="appsettings.json">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
|||||||
@ -12,7 +12,7 @@ pool:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- script: |
|
- script: |
|
||||||
set coreVersion=net6.0
|
set coreVersion=net7.0
|
||||||
echo %coreVersion%
|
echo %coreVersion%
|
||||||
echo ##vso[task.setvariable variable=CoreVersion;]%coreVersion%
|
echo ##vso[task.setvariable variable=CoreVersion;]%coreVersion%
|
||||||
echo $(CoreVersion)
|
echo $(CoreVersion)
|
||||||
@ -22,11 +22,11 @@ steps:
|
|||||||
set configuration=Release
|
set configuration=Release
|
||||||
echo %configuration%
|
echo %configuration%
|
||||||
echo ##vso[task.setvariable variable=Configuration;]%configuration%
|
echo ##vso[task.setvariable variable=Configuration;]%configuration%
|
||||||
echo ($Configuration)
|
echo $(Configuration)
|
||||||
displayName: Configuration
|
displayName: Configuration
|
||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
set nugetSource=https://messa08ec.ec.local/v3/index.json
|
set nugetSource=https://artifactory.intra.infineon.com/artifactory/api/nuget/ngt-fi-package-main-vir/index.json;D:/vsts-agent-win-x64-2.210.1-eaf/nuget
|
||||||
echo %nugetSource%
|
echo %nugetSource%
|
||||||
echo ##vso[task.setvariable variable=NugetSource;]%nugetSource%
|
echo ##vso[task.setvariable variable=NugetSource;]%nugetSource%
|
||||||
echo $(NugetSource)
|
echo $(NugetSource)
|
||||||
@ -97,7 +97,15 @@ steps:
|
|||||||
testResultsFormat: VSTest
|
testResultsFormat: VSTest
|
||||||
testResultsFiles: "**/*.trx"
|
testResultsFiles: "**/*.trx"
|
||||||
testRunTitle: "$(GitCommitSeven)-$(Build.BuildId)-$(CoreVersion)-$(Configuration)-$(Build.Repository.Name)"
|
testRunTitle: "$(GitCommitSeven)-$(Build.BuildId)-$(CoreVersion)-$(Configuration)-$(Build.Repository.Name)"
|
||||||
searchFolder: "$(System.DefaultWorkingDirectory)"
|
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
|
- task: mspremier.CreateWorkItem.CreateWorkItem-task.CreateWorkItem@1
|
||||||
displayName: "Create work item"
|
displayName: "Create work item"
|
||||||
@ -113,7 +121,7 @@ steps:
|
|||||||
displayName: "Core Publish"
|
displayName: "Core Publish"
|
||||||
enabled: false
|
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)'
|
- 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"
|
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'
|
- 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'
|
||||||
@ -125,17 +133,17 @@ steps:
|
|||||||
- task: CopyFiles@2
|
- task: CopyFiles@2
|
||||||
displayName: 'Copy Files to: D:\Framework4.8'
|
displayName: 'Copy Files to: D:\Framework4.8'
|
||||||
inputs:
|
inputs:
|
||||||
SourceFolder: 'bin\$(Configuration)'
|
|
||||||
Contents: "*$(Build.Repository.Name)*"
|
Contents: "*$(Build.Repository.Name)*"
|
||||||
|
SourceFolder: 'bin\$(Configuration)'
|
||||||
TargetFolder: 'D:\Framework4.8\$(GitCommitSeven)-$(Build.BuildId)-$(Build.Repository.Name)-$(Configuration)'
|
TargetFolder: 'D:\Framework4.8\$(GitCommitSeven)-$(Build.BuildId)-$(Build.Repository.Name)-$(Configuration)'
|
||||||
OverWrite: true
|
OverWrite: true
|
||||||
|
|
||||||
- task: CopyFiles@2
|
- task: CopyFiles@2
|
||||||
displayName: 'Copy Files to: \\messv02ecc1.ec.local\EC_EAFRepository'
|
displayName: 'Copy Files to: Local D EAF Deployment Storage'
|
||||||
inputs:
|
inputs:
|
||||||
SourceFolder: 'bin\$(Configuration)'
|
|
||||||
Contents: "*$(Build.Repository.Name)*"
|
Contents: "*$(Build.Repository.Name)*"
|
||||||
TargetFolder: '\\messv02ecc1.ec.local\EC_EAFRepository\Staging\DeploymentStorage\Adaptation_$(Build.Repository.Name)'
|
SourceFolder: 'bin\$(Configuration)'
|
||||||
|
TargetFolder: 'D:\EAF\EAF Deployment Storage\Adaptation_$(Build.Repository.Name)'
|
||||||
OverWrite: true
|
OverWrite: true
|
||||||
|
|
||||||
- script: |
|
- script: |
|
||||||
|
|||||||
@ -9,11 +9,11 @@ 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, bool isEAFHosted)
|
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
|
||||||
{
|
{
|
||||||
nameof(ZipFilesByDate) => new ZipFilesByDate.FileRead(smtp, fileParameter, cellInstanceName, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted),
|
nameof(ZipFilesByDate) => new ZipFilesByDate.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;
|
||||||
|
|||||||
@ -21,8 +21,8 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
|
|
||||||
private readonly Timer _Timer;
|
private readonly Timer _Timer;
|
||||||
|
|
||||||
public FileRead(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, 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, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted)
|
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;
|
||||||
_NullData = string.Empty;
|
_NullData = string.Empty;
|
||||||
@ -117,14 +117,7 @@ public class FileRead : Shared.FileRead, IFileRead
|
|||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Tuple<string, Test[], JsonElement[], List<FileInfo>> GetExtractResult(string reportFullPath, DateTime dateTime)
|
private Tuple<string, Test[], JsonElement[], List<FileInfo>> GetExtractResult(string reportFullPath, DateTime dateTime) => throw new Exception(string.Concat("See ", nameof(Callback)));
|
||||||
{
|
|
||||||
if (reportFullPath is null)
|
|
||||||
{ }
|
|
||||||
if (dateTime == DateTime.MinValue)
|
|
||||||
{ }
|
|
||||||
throw new Exception(string.Concat("See ", nameof(Callback)));
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool DeleteEmptyDirectories(string rootDirectory)
|
private static bool DeleteEmptyDirectories(string rootDirectory)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -18,22 +18,13 @@ public class MonIn : IMonIn, IDisposable
|
|||||||
public static MonIn GetInstance(string url = "http://moninhttp.{0}.infineon.com/input/text")
|
public static MonIn GetInstance(string url = "http://moninhttp.{0}.infineon.com/input/text")
|
||||||
{
|
{
|
||||||
MonIn instance;
|
MonIn instance;
|
||||||
if (_Instances.ContainsKey(url))
|
|
||||||
{
|
|
||||||
instance = _Instances[url];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
lock (_Instances)
|
lock (_Instances)
|
||||||
{
|
{
|
||||||
if (!_Instances.ContainsKey(url))
|
if (_Instances.TryGetValue(url, out instance))
|
||||||
{
|
{
|
||||||
instance = new MonIn(url);
|
instance = new MonIn(url);
|
||||||
_Instances.Add(url, instance);
|
_Instances.Add(url, instance);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
instance = _Instances[url];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -110,6 +110,42 @@ public class Description : IDescription, Properties.IDescription
|
|||||||
List<IDescription> IDescription.GetDescriptions(IFileRead fileRead, Logistics logistics, List<Test> tests, IProcessData iProcessData)
|
List<IDescription> IDescription.GetDescriptions(IFileRead fileRead, Logistics logistics, List<Test> tests, IProcessData iProcessData)
|
||||||
{
|
{
|
||||||
List<IDescription> results = new();
|
List<IDescription> results = new();
|
||||||
|
if (iProcessData is null || iProcessData.Details.Count == 0)
|
||||||
|
results.Add(GetDefault(fileRead, logistics));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
string nullData;
|
||||||
|
Description description;
|
||||||
|
object configDataNullData = fileRead.NullData;
|
||||||
|
if (configDataNullData is null)
|
||||||
|
nullData = string.Empty;
|
||||||
|
else
|
||||||
|
nullData = configDataNullData.ToString();
|
||||||
|
for (int i = 0; i < iProcessData.Details.Count; i++)
|
||||||
|
{
|
||||||
|
if (iProcessData.Details[i] is null)
|
||||||
|
continue;
|
||||||
|
description = new Description
|
||||||
|
{
|
||||||
|
Test = (int)tests[i],
|
||||||
|
Count = tests.Count,
|
||||||
|
Index = i,
|
||||||
|
//
|
||||||
|
EventName = fileRead.EventName,
|
||||||
|
NullData = nullData,
|
||||||
|
JobID = fileRead.CellInstanceName,
|
||||||
|
Sequence = logistics.Sequence.ToString(),
|
||||||
|
MesEntity = logistics.MesEntity,
|
||||||
|
ReportFullPath = logistics.ReportFullPath,
|
||||||
|
ProcessJobID = logistics.ProcessJobID,
|
||||||
|
MID = logistics.MID,
|
||||||
|
//
|
||||||
|
Date = DateTime.Now.ToString(GetDateFormat()),
|
||||||
|
RDS = string.Empty,
|
||||||
|
};
|
||||||
|
results.Add(description);
|
||||||
|
}
|
||||||
|
}
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -44,9 +44,9 @@ public class FileRead : Properties.IFileRead
|
|||||||
protected readonly string _CellInstanceConnectionNameBase;
|
protected readonly string _CellInstanceConnectionNameBase;
|
||||||
protected readonly Dictionary<string, List<long>> _DummyRuns;
|
protected readonly Dictionary<string, List<long>> _DummyRuns;
|
||||||
protected readonly Dictionary<string, string> _FileParameter;
|
protected readonly Dictionary<string, string> _FileParameter;
|
||||||
protected readonly Dictionary<long, List<string>> _StaticRuns;
|
|
||||||
protected readonly string _ParameterizedModelObjectDefinitionType;
|
protected readonly string _ParameterizedModelObjectDefinitionType;
|
||||||
protected readonly FileConnectorConfiguration _FileConnectorConfiguration;
|
protected readonly FileConnectorConfiguration _FileConnectorConfiguration;
|
||||||
|
protected readonly Dictionary<long, List<Metrology.WS.Results>> _StaticRuns;
|
||||||
protected readonly IList<ModelObjectParameterDefinition> _ModelObjectParameterDefinitions;
|
protected readonly IList<ModelObjectParameterDefinition> _ModelObjectParameterDefinitions;
|
||||||
|
|
||||||
bool Properties.IFileRead.IsEvent => _IsEvent;
|
bool Properties.IFileRead.IsEvent => _IsEvent;
|
||||||
@ -63,216 +63,21 @@ public class FileRead : Properties.IFileRead
|
|||||||
string Properties.IFileRead.CellInstanceConnectionName => _CellInstanceConnectionName;
|
string Properties.IFileRead.CellInstanceConnectionName => _CellInstanceConnectionName;
|
||||||
string Properties.IFileRead.ParameterizedModelObjectDefinitionType => _ParameterizedModelObjectDefinitionType;
|
string Properties.IFileRead.ParameterizedModelObjectDefinitionType => _ParameterizedModelObjectDefinitionType;
|
||||||
|
|
||||||
public FileRead(IDescription description, bool isEvent, 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, bool isEAFHosted)
|
protected static string GetTupleFile<T>(Logistics logistics, List<T> descriptions, Properties.IScopeInfo scopeInfo, string duplicateDirectory, string duplicateFile) where T : Properties.IDescription
|
||||||
{
|
|
||||||
_SMTP = smtp;
|
|
||||||
_IsEvent = isEvent;
|
|
||||||
_DummyRuns = dummyRuns;
|
|
||||||
_LastTicksDuration = 0;
|
|
||||||
_StaticRuns = staticRuns;
|
|
||||||
_IsEAFHosted = isEAFHosted;
|
|
||||||
_Description = description;
|
|
||||||
_FileParameter = fileParameter;
|
|
||||||
_ReportFullPath = string.Empty;
|
|
||||||
_CellInstanceName = cellInstanceName;
|
|
||||||
_Calendar = new CultureInfo("en-US").Calendar;
|
|
||||||
_Log = LogManager.GetLogger(typeof(FileRead));
|
|
||||||
_UseCyclicalForDescription = useCyclicalForDescription;
|
|
||||||
_CellInstanceConnectionName = cellInstanceConnectionName;
|
|
||||||
_ModelObjectParameterDefinitions = modelObjectParameters;
|
|
||||||
_FileConnectorConfiguration = fileConnectorConfiguration;
|
|
||||||
_ParameterizedModelObjectDefinitionType = parameterizedModelObjectDefinitionType;
|
|
||||||
_IsSourceTimer = fileConnectorConfiguration.SourceFileFilter.StartsWith("*Timer.txt");
|
|
||||||
string cellInstanceConnectionNameBase = cellInstanceConnectionName.Replace("-", string.Empty);
|
|
||||||
_Hyphens = cellInstanceConnectionName.Length - cellInstanceConnectionNameBase.Length;
|
|
||||||
_TracePath = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "Path.Trace");
|
|
||||||
_ExceptionSubject = string.Concat("Exception:", _CellInstanceConnectionName, _FileConnectorConfiguration?.SourceDirectoryCloaking);
|
|
||||||
string suffix;
|
|
||||||
string[] segments = _ParameterizedModelObjectDefinitionType.Split('.');
|
|
||||||
string @namespace = segments[0];
|
|
||||||
string eventNameFileRead = "FileRead";
|
|
||||||
string eventName = segments[segments.Length - 1];
|
|
||||||
bool isDuplicator = segments[0] == cellInstanceName;
|
|
||||||
_IsDuplicator = isDuplicator;
|
|
||||||
_CellInstanceConnectionNameBase = cellInstanceConnectionNameBase;
|
|
||||||
if (eventName == eventNameFileRead)
|
|
||||||
suffix = string.Empty;
|
|
||||||
else
|
|
||||||
suffix = string.Concat('_', eventName.Split(new string[] { eventNameFileRead }, StringSplitOptions.RemoveEmptyEntries)[1]);
|
|
||||||
string parameterizedModelObjectDefinitionTypeAppended = string.Concat(@namespace, suffix);
|
|
||||||
if (!isEAFHosted)
|
|
||||||
{
|
|
||||||
if (string.IsNullOrEmpty(equipmentTypeName) || equipmentTypeName != parameterizedModelObjectDefinitionTypeAppended)
|
|
||||||
throw new Exception(cellInstanceConnectionName);
|
|
||||||
if (string.IsNullOrEmpty(equipmentDictionaryName) && isEvent)
|
|
||||||
throw new Exception(cellInstanceConnectionName);
|
|
||||||
if (!string.IsNullOrEmpty(equipmentDictionaryName) && !isEvent)
|
|
||||||
throw new Exception(cellInstanceConnectionName);
|
|
||||||
// if (string.IsNullOrEmpty(equipmentDictionaryName) && !isEvent)
|
|
||||||
// throw new Exception(cellInstanceConnectionName);
|
|
||||||
// if (!string.IsNullOrEmpty(equipmentDictionaryName) && isEvent)
|
|
||||||
// throw new Exception(cellInstanceConnectionName);
|
|
||||||
}
|
|
||||||
if (isDuplicator)
|
|
||||||
_MesEntity = string.Empty;
|
|
||||||
else
|
|
||||||
_MesEntity = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, string.Concat("CellInstance.", cellInstanceName, ".Alias"));
|
|
||||||
_EventName = eventName;
|
|
||||||
_EventNameFileRead = eventNameFileRead;
|
|
||||||
_EquipmentType = parameterizedModelObjectDefinitionTypeAppended;
|
|
||||||
long breakAfterSeconds;
|
|
||||||
if (_FileConnectorConfiguration is null)
|
|
||||||
breakAfterSeconds = 360;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (_FileConnectorConfiguration.FileScanningOption == FileConnectorConfiguration.FileScanningOptionEnum.TimeBased)
|
|
||||||
breakAfterSeconds = Math.Abs(_FileConnectorConfiguration.FileHandleTimeout.Value);
|
|
||||||
else if (_FileConnectorConfiguration.FileScanningOption == FileConnectorConfiguration.FileScanningOptionEnum.FileWatcher)
|
|
||||||
breakAfterSeconds = Math.Abs(_FileConnectorConfiguration.FileScanningIntervalInSeconds.Value);
|
|
||||||
else
|
|
||||||
throw new Exception();
|
|
||||||
}
|
|
||||||
_BreakAfterSeconds = breakAfterSeconds;
|
|
||||||
UpdateLastTicksDuration(breakAfterSeconds * 10000000);
|
|
||||||
if (_IsDuplicator)
|
|
||||||
{
|
|
||||||
if (string.IsNullOrEmpty(_FileConnectorConfiguration.TargetFileLocation) || string.IsNullOrEmpty(_FileConnectorConfiguration.ErrorTargetFileLocation))
|
|
||||||
throw new Exception("_Configuration is empty?");
|
|
||||||
if (_FileConnectorConfiguration.TargetFileLocation.Contains('%') || _FileConnectorConfiguration.ErrorTargetFileLocation.Contains('%'))
|
|
||||||
throw new Exception("_Configuration is incorrect for a duplicator!");
|
|
||||||
// if (_FileConnectorConfiguration is not null)
|
|
||||||
// {
|
|
||||||
// if (string.IsNullOrEmpty(_FileConnectorConfiguration.SourceDirectoryCloaking))
|
|
||||||
// throw new Exception("SourceDirectoryCloaking is empty?");
|
|
||||||
// if (!_FileConnectorConfiguration.SourceDirectoryCloaking.StartsWith("~"))
|
|
||||||
// throw new Exception("SourceDirectoryCloaking is incorrect for a duplicator!");
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected static string GetPropertyValue(string cellInstanceConnectionName, IList<ModelObjectParameterDefinition> modelObjectParameters, string propertyName)
|
|
||||||
{
|
|
||||||
string result;
|
|
||||||
List<string> results = (from l in modelObjectParameters where l.Name == propertyName select l.Value).ToList();
|
|
||||||
if (results.Count != 1)
|
|
||||||
throw new Exception(cellInstanceConnectionName);
|
|
||||||
result = results[0];
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected static ModelObjectParameterDefinition[] GetProperties(string cellInstanceConnectionName, IList<ModelObjectParameterDefinition> modelObjectParameters, string propertyNamePrefix)
|
|
||||||
{
|
|
||||||
ModelObjectParameterDefinition[] results = (from l in modelObjectParameters where l.Name.StartsWith(propertyNamePrefix) select l).ToArray();
|
|
||||||
if (!results.Any())
|
|
||||||
throw new Exception(cellInstanceConnectionName);
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected static ModelObjectParameterDefinition[] GetProperties(string cellInstanceConnectionName, IList<ModelObjectParameterDefinition> modelObjectParameters, string propertyNamePrefix, string propertyNameSuffix)
|
|
||||||
{
|
|
||||||
ModelObjectParameterDefinition[] results = (from l in modelObjectParameters where l.Name.StartsWith(propertyNamePrefix) && l.Name.EndsWith(propertyNameSuffix) select l).ToArray();
|
|
||||||
if (!results.Any())
|
|
||||||
throw new Exception(cellInstanceConnectionName);
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void UpdateLastTicksDuration(long ticksDuration)
|
|
||||||
{
|
|
||||||
if (ticksDuration < 50000000)
|
|
||||||
ticksDuration = 50000000;
|
|
||||||
_LastTicksDuration = (long)Math.Ceiling(ticksDuration * .667);
|
|
||||||
_Log.Info($"{new TimeSpan(ticksDuration).TotalMilliseconds} TotalMillisecond(s) to process {Environment.NewLine}{_CellInstanceConnectionName}{Environment.NewLine}<{_ReportFullPath}>");
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void WaitForThread(Thread thread, List<Exception> threadExceptions)
|
|
||||||
{
|
|
||||||
if (thread is not null)
|
|
||||||
{
|
|
||||||
ThreadState threadState;
|
|
||||||
for (short i = 0; i < short.MaxValue; i++)
|
|
||||||
{
|
|
||||||
if (thread is null)
|
|
||||||
break;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
threadState = thread.ThreadState;
|
|
||||||
if (threadState is not ThreadState.Running and not ThreadState.WaitSleepJoin)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
Thread.Sleep(500);
|
|
||||||
}
|
|
||||||
lock (threadExceptions)
|
|
||||||
{
|
|
||||||
if (threadExceptions.Any())
|
|
||||||
{
|
|
||||||
foreach (Exception item in threadExceptions)
|
|
||||||
_Log.Error(string.Concat(item.Message, Environment.NewLine, Environment.NewLine, item.StackTrace));
|
|
||||||
Exception exception = threadExceptions[0];
|
|
||||||
threadExceptions.Clear();
|
|
||||||
throw exception;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void WriteAllLines(string to, string[] exceptionLines)
|
|
||||||
{
|
|
||||||
string fileName = string.Concat(to, @"\readme.txt");
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (!Directory.Exists(to))
|
|
||||||
_ = Directory.CreateDirectory(to);
|
|
||||||
File.WriteAllLines(fileName, exceptionLines);
|
|
||||||
}
|
|
||||||
catch (Exception ex) { _Log.Error(ex.Message); }
|
|
||||||
}
|
|
||||||
|
|
||||||
protected string[] Move(Tuple<string, Test[], JsonElement[], List<FileInfo>> extractResults, string to, string from, string resolvedFileLocation, Exception exception)
|
|
||||||
{
|
|
||||||
string[] results;
|
|
||||||
bool isErrorFile = exception is not null;
|
|
||||||
if (!to.EndsWith(@"\"))
|
|
||||||
_ = string.Concat(to, @"\");
|
|
||||||
if (!isErrorFile)
|
|
||||||
results = Array.Empty<string>();
|
|
||||||
else
|
|
||||||
{
|
|
||||||
results = new string[] { _Logistics.Sequence.ToString(), _Logistics.ReportFullPath, from, resolvedFileLocation, to, string.Empty, string.Empty, exception.Message, string.Empty, string.Empty, exception.StackTrace };
|
|
||||||
if (!_IsDuplicator)
|
|
||||||
WriteAllLines(to, results);
|
|
||||||
}
|
|
||||||
if (extractResults is not null && extractResults.Item4 is not null && extractResults.Item4.Any())
|
|
||||||
{
|
|
||||||
string itemFile;
|
|
||||||
List<string> directories = new();
|
|
||||||
foreach (FileInfo sourceFile in extractResults.Item4)
|
|
||||||
{
|
|
||||||
if (sourceFile.FullName != _Logistics.ReportFullPath)
|
|
||||||
{
|
|
||||||
itemFile = sourceFile.FullName.Replace(from, to);
|
|
||||||
Shared1880(itemFile, directories, sourceFile, isErrorFile);
|
|
||||||
}
|
|
||||||
else if (!isErrorFile && _Logistics is not null)
|
|
||||||
Shared1811(to, sourceFile);
|
|
||||||
}
|
|
||||||
Shared0231(directories);
|
|
||||||
}
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected static string GetTupleFile<T>(Logistics logistics, List<T> descriptions, Properties.IScopeInfo scopeInfo, string duplicateDirectory) where T : Properties.IDescription
|
|
||||||
{
|
{
|
||||||
string result;
|
string result;
|
||||||
string rds;
|
string rds;
|
||||||
|
string fileName;
|
||||||
string dateValue;
|
string dateValue;
|
||||||
string rdsPlaceholder = "%RDS%";
|
string rdsPlaceholder = "%RDS%";
|
||||||
if (!descriptions.Any() || string.IsNullOrEmpty(descriptions[0].RDS))
|
string mesEntityPlaceholder = "%MesEntity%";
|
||||||
|
if (descriptions.Count == 0 || string.IsNullOrEmpty(descriptions[0].RDS))
|
||||||
rds = logistics.MID;
|
rds = logistics.MID;
|
||||||
else
|
else
|
||||||
rds = descriptions[0].RDS;
|
rds = descriptions[0].RDS;
|
||||||
string[] segments = scopeInfo.FileName.Split(new string[] { "DateTime:" }, StringSplitOptions.RemoveEmptyEntries);
|
string[] segments = scopeInfo.FileName.Split(new string[] { "DateTime:" }, StringSplitOptions.RemoveEmptyEntries);
|
||||||
if (segments.Length == 0)
|
if (segments.Length == 0)
|
||||||
result = string.Concat(duplicateDirectory, @"\", scopeInfo.FileNameWithoutExtension.Replace(rdsPlaceholder, rds));
|
result = string.Concat(duplicateDirectory, @"\", scopeInfo.FileNameWithoutExtension.Replace(rdsPlaceholder, rds).Replace(mesEntityPlaceholder, logistics.MesEntity));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
segments = segments[1].Split('%');
|
segments = segments[1].Split('%');
|
||||||
@ -284,7 +89,11 @@ public class FileRead : Properties.IFileRead
|
|||||||
continue;
|
continue;
|
||||||
datePlaceholder = string.Concat('%', segment, '%');
|
datePlaceholder = string.Concat('%', segment, '%');
|
||||||
}
|
}
|
||||||
result = string.Concat(duplicateDirectory, @"\", scopeInfo.FileName.Replace(rdsPlaceholder, rds).Replace(datePlaceholder, dateValue));
|
fileName = scopeInfo.FileName.Replace(rdsPlaceholder, rds).Replace(mesEntityPlaceholder, logistics.MesEntity).Replace(datePlaceholder, dateValue);
|
||||||
|
if (!duplicateFile.Contains("Viewer"))
|
||||||
|
result = Path.Combine(duplicateDirectory, fileName);
|
||||||
|
else
|
||||||
|
result = Path.Combine(duplicateDirectory, $"Viewer_{fileName}");
|
||||||
}
|
}
|
||||||
if (result.Contains('%'))
|
if (result.Contains('%'))
|
||||||
throw new Exception("Placeholder exists!");
|
throw new Exception("Placeholder exists!");
|
||||||
@ -306,7 +115,7 @@ public class FileRead : Properties.IFileRead
|
|||||||
preWait = dateTime.AddMilliseconds(1234).Ticks;
|
preWait = dateTime.AddMilliseconds(1234).Ticks;
|
||||||
else
|
else
|
||||||
preWait = dateTime.AddMilliseconds(_FileConnectorConfiguration.FileHandleWaitTime.Value).Ticks;
|
preWait = dateTime.AddMilliseconds(_FileConnectorConfiguration.FileHandleWaitTime.Value).Ticks;
|
||||||
if (!collection.Any())
|
if (collection.Count == 0)
|
||||||
duplicateFiles.Add(duplicateFile);
|
duplicateFiles.Add(duplicateFile);
|
||||||
string fileName = Path.GetFileNameWithoutExtension(logistics.ReportFullPath);
|
string fileName = Path.GetFileNameWithoutExtension(logistics.ReportFullPath);
|
||||||
string successFile = string.Concat(successDirectory, @"\", Path.GetFileName(logistics.ReportFullPath));
|
string successFile = string.Concat(successDirectory, @"\", Path.GetFileName(logistics.ReportFullPath));
|
||||||
@ -317,7 +126,7 @@ public class FileRead : Properties.IFileRead
|
|||||||
else if (!scopeInfo.FileName.Contains('%'))
|
else if (!scopeInfo.FileName.Contains('%'))
|
||||||
tupleFile = string.Concat(duplicateDirectory, @"\", fileName, "_", scopeInfo.FileNameWithoutExtension, ".pdsfc");
|
tupleFile = string.Concat(duplicateDirectory, @"\", fileName, "_", scopeInfo.FileNameWithoutExtension, ".pdsfc");
|
||||||
else
|
else
|
||||||
tupleFile = GetTupleFile(logistics, descriptions, scopeInfo, duplicateDirectory);
|
tupleFile = GetTupleFile(logistics, descriptions, scopeInfo, duplicateDirectory, duplicateFile);
|
||||||
tupleFileName = Path.GetFileNameWithoutExtension(tupleFile).Split('.')[0];
|
tupleFileName = Path.GetFileNameWithoutExtension(tupleFile).Split('.')[0];
|
||||||
duplicateFiles.Add(tupleFile);
|
duplicateFiles.Add(tupleFile);
|
||||||
if (_IsEAFHosted)
|
if (_IsEAFHosted)
|
||||||
@ -378,6 +187,286 @@ public class FileRead : Properties.IFileRead
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void WaitForFileConsumption<T>(DateTime dateTime, List<T> descriptions, bool isDummyRun, string successDirectory, string duplicateDirectory, List<(Properties.IScopeInfo, string)> collection, string duplicateFile) where T : Properties.IDescription
|
||||||
|
{
|
||||||
|
if (!isDummyRun && _IsEAFHosted)
|
||||||
|
WaitForFileConsumption(_FileConnectorConfiguration.SourceDirectoryCloaking, _Logistics, dateTime, descriptions, successDirectory, duplicateDirectory, duplicateFile, collection);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
long breakAfter = DateTime.Now.AddSeconds(_FileConnectorConfiguration.FileHandleWaitTime.Value).Ticks;
|
||||||
|
for (short i = 0; i < short.MaxValue; i++)
|
||||||
|
{
|
||||||
|
if (!_IsEAFHosted || DateTime.Now.Ticks > breakAfter)
|
||||||
|
break;
|
||||||
|
Thread.Sleep(500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public FileRead(IDescription description, bool isEvent, 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<Metrology.WS.Results>> staticRuns, bool useCyclicalForDescription, bool isEAFHosted)
|
||||||
|
{
|
||||||
|
_SMTP = smtp;
|
||||||
|
_IsEvent = isEvent;
|
||||||
|
_DummyRuns = dummyRuns;
|
||||||
|
_LastTicksDuration = 0;
|
||||||
|
_StaticRuns = staticRuns;
|
||||||
|
_IsEAFHosted = isEAFHosted;
|
||||||
|
_Description = description;
|
||||||
|
_FileParameter = fileParameter;
|
||||||
|
_ReportFullPath = string.Empty;
|
||||||
|
_CellInstanceName = cellInstanceName;
|
||||||
|
_Calendar = new CultureInfo("en-US").Calendar;
|
||||||
|
_Log = LogManager.GetLogger(typeof(FileRead));
|
||||||
|
_UseCyclicalForDescription = useCyclicalForDescription;
|
||||||
|
_CellInstanceConnectionName = cellInstanceConnectionName;
|
||||||
|
_ModelObjectParameterDefinitions = modelObjectParameters;
|
||||||
|
_FileConnectorConfiguration = fileConnectorConfiguration;
|
||||||
|
_ParameterizedModelObjectDefinitionType = parameterizedModelObjectDefinitionType;
|
||||||
|
_IsSourceTimer = fileConnectorConfiguration.SourceFileFilter.StartsWith("*Timer.txt");
|
||||||
|
string cellInstanceConnectionNameBase = cellInstanceConnectionName.Replace("-", string.Empty);
|
||||||
|
_Hyphens = cellInstanceConnectionName.Length - cellInstanceConnectionNameBase.Length;
|
||||||
|
_TracePath = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "Path.Trace");
|
||||||
|
_ExceptionSubject = string.Concat("Exception:", _CellInstanceConnectionName, _FileConnectorConfiguration?.SourceDirectoryCloaking);
|
||||||
|
string suffix;
|
||||||
|
string[] segments = _ParameterizedModelObjectDefinitionType.Split('.');
|
||||||
|
string @namespace = segments[0];
|
||||||
|
string eventNameFileRead = "FileRead";
|
||||||
|
string eventName = segments[segments.Length - 1];
|
||||||
|
bool isDuplicator = segments[0] == cellInstanceName;
|
||||||
|
_IsDuplicator = isDuplicator;
|
||||||
|
_CellInstanceConnectionNameBase = cellInstanceConnectionNameBase;
|
||||||
|
if (eventName == eventNameFileRead)
|
||||||
|
suffix = string.Empty;
|
||||||
|
else
|
||||||
|
suffix = string.Concat('_', eventName.Split(new string[] { eventNameFileRead }, StringSplitOptions.RemoveEmptyEntries)[1]);
|
||||||
|
string parameterizedModelObjectDefinitionTypeAppended = string.Concat(@namespace, suffix);
|
||||||
|
if (!isEAFHosted)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(equipmentTypeName) || equipmentTypeName != parameterizedModelObjectDefinitionTypeAppended)
|
||||||
|
throw new Exception(cellInstanceConnectionName);
|
||||||
|
if (string.IsNullOrEmpty(equipmentDictionaryName) && isEvent)
|
||||||
|
throw new Exception(cellInstanceConnectionName);
|
||||||
|
if (!string.IsNullOrEmpty(equipmentDictionaryName) && !isEvent && connectionCount > 1)
|
||||||
|
throw new Exception(cellInstanceConnectionName);
|
||||||
|
// if (string.IsNullOrEmpty(equipmentDictionaryName) && !isEvent)
|
||||||
|
// throw new Exception(cellInstanceConnectionName);
|
||||||
|
// if (!string.IsNullOrEmpty(equipmentDictionaryName) && isEvent)
|
||||||
|
// throw new Exception(cellInstanceConnectionName);
|
||||||
|
}
|
||||||
|
if (isDuplicator)
|
||||||
|
_MesEntity = string.Empty;
|
||||||
|
else
|
||||||
|
_MesEntity = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, string.Concat("CellInstance.", cellInstanceName, ".Alias"));
|
||||||
|
_EventName = eventName;
|
||||||
|
_EventNameFileRead = eventNameFileRead;
|
||||||
|
_EquipmentType = parameterizedModelObjectDefinitionTypeAppended;
|
||||||
|
long breakAfterSeconds;
|
||||||
|
if (_FileConnectorConfiguration is null)
|
||||||
|
breakAfterSeconds = 360;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (_FileConnectorConfiguration.FileScanningOption == FileConnectorConfiguration.FileScanningOptionEnum.TimeBased)
|
||||||
|
breakAfterSeconds = Math.Abs(_FileConnectorConfiguration.FileHandleTimeout.Value);
|
||||||
|
else if (_FileConnectorConfiguration.FileScanningOption == FileConnectorConfiguration.FileScanningOptionEnum.FileWatcher)
|
||||||
|
breakAfterSeconds = Math.Abs(_FileConnectorConfiguration.FileScanningIntervalInSeconds.Value);
|
||||||
|
else
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
_BreakAfterSeconds = breakAfterSeconds;
|
||||||
|
UpdateLastTicksDuration(breakAfterSeconds * 10000000);
|
||||||
|
if (_IsDuplicator)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(_FileConnectorConfiguration.TargetFileLocation) || string.IsNullOrEmpty(_FileConnectorConfiguration.ErrorTargetFileLocation))
|
||||||
|
throw new Exception("_Configuration is empty?");
|
||||||
|
if (_FileConnectorConfiguration.TargetFileLocation.Contains('%') || _FileConnectorConfiguration.ErrorTargetFileLocation.Contains('%'))
|
||||||
|
throw new Exception("_Configuration is incorrect for a duplicator!");
|
||||||
|
// if (_FileConnectorConfiguration is not null)
|
||||||
|
// {
|
||||||
|
// if (string.IsNullOrEmpty(_FileConnectorConfiguration.SourceDirectoryCloaking))
|
||||||
|
// throw new Exception("SourceDirectoryCloaking is empty?");
|
||||||
|
// if (!_FileConnectorConfiguration.SourceDirectoryCloaking.StartsWith("~"))
|
||||||
|
// throw new Exception("SourceDirectoryCloaking is incorrect for a duplicator!");
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static string GetPropertyValue(string cellInstanceConnectionName, IList<ModelObjectParameterDefinition> modelObjectParameters, string propertyName)
|
||||||
|
{
|
||||||
|
string result;
|
||||||
|
List<string> results = (from l in modelObjectParameters where l.Name == propertyName select l.Value).ToList();
|
||||||
|
if (results.Count != 1)
|
||||||
|
throw new Exception(cellInstanceConnectionName);
|
||||||
|
result = results[0];
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void UpdateLastTicksDuration(long ticksDuration)
|
||||||
|
{
|
||||||
|
if (ticksDuration < 50000000)
|
||||||
|
ticksDuration = 50000000;
|
||||||
|
_LastTicksDuration = (long)Math.Ceiling(ticksDuration * .667);
|
||||||
|
_Log.Info($"{new TimeSpan(ticksDuration).TotalMilliseconds} TotalMillisecond(s) to process{Environment.NewLine}{_CellInstanceConnectionName}{Environment.NewLine}<{_ReportFullPath}>");
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static string GetParentParent(string value)
|
||||||
|
{
|
||||||
|
string result = Path.GetDirectoryName(Path.GetDirectoryName(value));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static List<string> GetDirectoryNames(string directory)
|
||||||
|
{
|
||||||
|
#nullable enable
|
||||||
|
List<string> results = new();
|
||||||
|
string? fileName;
|
||||||
|
string? checkDirectory = directory;
|
||||||
|
string? pathRoot = Path.GetPathRoot(directory);
|
||||||
|
string extension = Path.GetExtension(directory);
|
||||||
|
if (string.IsNullOrEmpty(pathRoot))
|
||||||
|
throw new NullReferenceException(nameof(pathRoot));
|
||||||
|
if (Directory.Exists(directory))
|
||||||
|
{
|
||||||
|
fileName = Path.GetFileName(directory);
|
||||||
|
if (!string.IsNullOrEmpty(fileName))
|
||||||
|
results.Add(fileName);
|
||||||
|
}
|
||||||
|
else if ((string.IsNullOrEmpty(extension) || extension.Length > 3) && !File.Exists(directory))
|
||||||
|
{
|
||||||
|
fileName = Path.GetFileName(directory);
|
||||||
|
if (!string.IsNullOrEmpty(fileName))
|
||||||
|
results.Add(fileName);
|
||||||
|
}
|
||||||
|
for (int i = 0; i < int.MaxValue; i++)
|
||||||
|
{
|
||||||
|
checkDirectory = Path.GetDirectoryName(checkDirectory);
|
||||||
|
if (string.IsNullOrEmpty(checkDirectory) || checkDirectory == pathRoot)
|
||||||
|
break;
|
||||||
|
fileName = Path.GetFileName(checkDirectory);
|
||||||
|
if (string.IsNullOrEmpty(fileName))
|
||||||
|
continue;
|
||||||
|
results.Add(fileName);
|
||||||
|
}
|
||||||
|
results.Add(pathRoot);
|
||||||
|
results.Reverse();
|
||||||
|
return results;
|
||||||
|
#nullable disable
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static string GetJobIdParentDirectory(string directory)
|
||||||
|
{
|
||||||
|
string result;
|
||||||
|
if (!string.IsNullOrEmpty(Path.GetFileName(directory)))
|
||||||
|
result = Path.GetFullPath(GetParentParent(directory));
|
||||||
|
else
|
||||||
|
result = Path.GetFullPath(GetParentParent(Path.GetDirectoryName(directory)));
|
||||||
|
if (!Directory.Exists(result))
|
||||||
|
_ = Directory.CreateDirectory(result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static string GetFileNameAfterUnderscoreSplit(string reportFullPath)
|
||||||
|
{
|
||||||
|
string result;
|
||||||
|
string[] segments = Path.GetFileNameWithoutExtension(reportFullPath).Split('_');
|
||||||
|
if (segments.Length <= 2)
|
||||||
|
result = segments[0];
|
||||||
|
else
|
||||||
|
result = string.Concat(segments[0], segments[2]);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal string[] GetInProcessDirectory(string jobIdDirectory)
|
||||||
|
{
|
||||||
|
List<string> results = new();
|
||||||
|
if (!_IsEAFHosted)
|
||||||
|
results = new string[] { jobIdDirectory }.ToList();
|
||||||
|
else
|
||||||
|
{
|
||||||
|
string[] files;
|
||||||
|
string logisticsSequence = _Logistics.Sequence.ToString();
|
||||||
|
string[] directories = Directory.GetDirectories(jobIdDirectory, $"*{logisticsSequence}*", SearchOption.TopDirectoryOnly);
|
||||||
|
foreach (string directory in directories)
|
||||||
|
{
|
||||||
|
files = Directory.GetFiles(directory, "*", SearchOption.TopDirectoryOnly);
|
||||||
|
if (files.Length == 0)
|
||||||
|
continue;
|
||||||
|
results.Add(directory);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((results is null) || results.Count != 1)
|
||||||
|
throw new Exception("Didn't find directory by logistics sequence");
|
||||||
|
return results.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static string[] GetMatches(FileConnectorConfiguration fileConnectorConfiguration)
|
||||||
|
{
|
||||||
|
string[] segments;
|
||||||
|
string[] results = null;
|
||||||
|
foreach (string subSourceFileFilter in fileConnectorConfiguration.SourceFileFilters)
|
||||||
|
{
|
||||||
|
segments = subSourceFileFilter.Split('\\');
|
||||||
|
if (fileConnectorConfiguration.IncludeSubDirectories.Value)
|
||||||
|
results = Directory.GetFiles(fileConnectorConfiguration.SourceFileLocation, segments.Last(), SearchOption.AllDirectories);
|
||||||
|
else
|
||||||
|
results = Directory.GetFiles(fileConnectorConfiguration.SourceFileLocation, segments.Last(), SearchOption.TopDirectoryOnly);
|
||||||
|
if (results.Length != 0)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static void NestExistingFiles(FileConnectorConfiguration fileConnectorConfiguration)
|
||||||
|
{
|
||||||
|
// if (!fileConnectorConfiguration.IncludeSubDirectories.Value && fileConnectorConfiguration.TriggerOnCreated is not null && fileConnectorConfiguration.TriggerOnCreated.Value)
|
||||||
|
if (!fileConnectorConfiguration.IncludeSubDirectories.Value)
|
||||||
|
{
|
||||||
|
string[] matches = GetMatches(fileConnectorConfiguration);
|
||||||
|
if (matches is not null && matches.Length > 0)
|
||||||
|
{
|
||||||
|
string fileName;
|
||||||
|
string nestedDirectory = Path.Combine(fileConnectorConfiguration.SourceFileLocation, DateTime.Now.Ticks.ToString());
|
||||||
|
if (!Directory.Exists(nestedDirectory))
|
||||||
|
_ = Directory.CreateDirectory(nestedDirectory);
|
||||||
|
foreach (string match in matches)
|
||||||
|
{
|
||||||
|
fileName = Path.GetFileName(match);
|
||||||
|
File.Move(match, Path.Combine(nestedDirectory, fileName));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static List<Properties.IDescription> GetDuplicatorDescriptions(JsonElement[] jsonElements)
|
||||||
|
{
|
||||||
|
List<Properties.IDescription> results = new();
|
||||||
|
Duplicator.Description description;
|
||||||
|
JsonSerializerOptions jsonSerializerOptions = new() { NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString };
|
||||||
|
foreach (JsonElement jsonElement in jsonElements)
|
||||||
|
{
|
||||||
|
if (jsonElement.ValueKind != JsonValueKind.Object)
|
||||||
|
throw new Exception();
|
||||||
|
description = JsonSerializer.Deserialize<Duplicator.Description>(jsonElement.ToString(), jsonSerializerOptions);
|
||||||
|
results.Add(description);
|
||||||
|
}
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static ModelObjectParameterDefinition[] GetProperties(string cellInstanceConnectionName, IList<ModelObjectParameterDefinition> modelObjectParameters, string propertyNamePrefix)
|
||||||
|
{
|
||||||
|
ModelObjectParameterDefinition[] results = (from l in modelObjectParameters where l.Name.StartsWith(propertyNamePrefix) select l).ToArray();
|
||||||
|
if (results.Length == 0)
|
||||||
|
throw new Exception(cellInstanceConnectionName);
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static ModelObjectParameterDefinition[] GetProperties(string cellInstanceConnectionName, IList<ModelObjectParameterDefinition> modelObjectParameters, string propertyNamePrefix, string propertyNameSuffix)
|
||||||
|
{
|
||||||
|
ModelObjectParameterDefinition[] results = (from l in modelObjectParameters where l.Name.StartsWith(propertyNamePrefix) && l.Name.EndsWith(propertyNameSuffix) select l).ToArray();
|
||||||
|
if (results.Length == 0)
|
||||||
|
throw new Exception(cellInstanceConnectionName);
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
protected void SetFileParameter(string key, string value)
|
protected void SetFileParameter(string key, string value)
|
||||||
{
|
{
|
||||||
if (_FileConnectorConfiguration is null || _FileConnectorConfiguration.TargetFileLocation.Contains(string.Concat("%", key, "%")) || _FileConnectorConfiguration.ErrorTargetFileLocation.Contains(string.Concat("%", key, "%")) || _FileConnectorConfiguration.TargetFileName.Contains(string.Concat("%", key, "%")) || _FileConnectorConfiguration.ErrorTargetFileName.Contains(string.Concat("%", key, "%")))
|
if (_FileConnectorConfiguration is null || _FileConnectorConfiguration.TargetFileLocation.Contains(string.Concat("%", key, "%")) || _FileConnectorConfiguration.ErrorTargetFileLocation.Contains(string.Concat("%", key, "%")) || _FileConnectorConfiguration.TargetFileName.Contains(string.Concat("%", key, "%")) || _FileConnectorConfiguration.ErrorTargetFileName.Contains(string.Concat("%", key, "%")))
|
||||||
@ -389,37 +478,16 @@ public class FileRead : Properties.IFileRead
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void SetFileParameterLotIDToLogisticsMID(bool includeLogisticsSequence = true)
|
|
||||||
{
|
|
||||||
string key;
|
|
||||||
if (!includeLogisticsSequence)
|
|
||||||
key = "LotID";
|
|
||||||
else
|
|
||||||
key = "LotIDWithLogisticsSequence";
|
|
||||||
string value = string.Concat(_Logistics.MID, "_", _Logistics.Sequence, "_", DateTime.Now.Ticks - _Logistics.Sequence);
|
|
||||||
SetFileParameter(key, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void SetFileParameterLotID(string value, bool includeLogisticsSequence = true)
|
|
||||||
{
|
|
||||||
string key;
|
|
||||||
if (!includeLogisticsSequence)
|
|
||||||
key = "LotID";
|
|
||||||
else
|
|
||||||
{
|
|
||||||
key = "LotIDWithLogisticsSequence";
|
|
||||||
value = string.Concat(value, "_", _Logistics.Sequence, "_", DateTime.Now.Ticks - _Logistics.Sequence);
|
|
||||||
}
|
|
||||||
SetFileParameter(key, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void WritePDSF(IFileRead fileRead, JsonElement[] jsonElements)
|
protected void WritePDSF(IFileRead fileRead, JsonElement[] jsonElements)
|
||||||
{
|
{
|
||||||
string directory;
|
string directory;
|
||||||
|
string day = $"{_Logistics.DateTimeFromSequence:yyyy-MM-dd}";
|
||||||
|
string weekOfYear = _Calendar.GetWeekOfYear(_Logistics.DateTimeFromSequence, CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString("00");
|
||||||
|
string weekDirectory = $"{_Logistics.DateTimeFromSequence:yyyy}_Week_{weekOfYear}";
|
||||||
if (!_CellInstanceConnectionName.StartsWith(_CellInstanceName) && _CellInstanceConnectionNameBase == _EquipmentType)
|
if (!_CellInstanceConnectionName.StartsWith(_CellInstanceName) && _CellInstanceConnectionNameBase == _EquipmentType)
|
||||||
directory = Path.Combine(_TracePath, _EquipmentType, "Target", _CellInstanceName, _CellInstanceConnectionName);
|
directory = Path.Combine(_TracePath, _EquipmentType, "Target", weekDirectory, day, _CellInstanceName, _CellInstanceConnectionName);
|
||||||
else
|
else
|
||||||
directory = Path.Combine(_TracePath, _EquipmentType, "Source", _CellInstanceName, _CellInstanceConnectionName);
|
directory = Path.Combine(_TracePath, _EquipmentType, "Source", weekDirectory, day, _CellInstanceName, _CellInstanceConnectionName);
|
||||||
if (!Directory.Exists(directory))
|
if (!Directory.Exists(directory))
|
||||||
_ = Directory.CreateDirectory(directory);
|
_ = Directory.CreateDirectory(directory);
|
||||||
string file = Path.Combine(directory, string.Concat(_Logistics.MesEntity, "_", _Logistics.Sequence, ".ipdsf"));
|
string file = Path.Combine(directory, string.Concat(_Logistics.MesEntity, "_", _Logistics.Sequence, ".ipdsf"));
|
||||||
@ -433,6 +501,37 @@ public class FileRead : Properties.IFileRead
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void WaitForThread(Thread thread, List<Exception> threadExceptions)
|
||||||
|
{
|
||||||
|
if (thread is not null)
|
||||||
|
{
|
||||||
|
ThreadState threadState;
|
||||||
|
for (short i = 0; i < short.MaxValue; i++)
|
||||||
|
{
|
||||||
|
if (thread is null)
|
||||||
|
break;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
threadState = thread.ThreadState;
|
||||||
|
if (threadState is not ThreadState.Running and not ThreadState.WaitSleepJoin)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
Thread.Sleep(500);
|
||||||
|
}
|
||||||
|
lock (threadExceptions)
|
||||||
|
{
|
||||||
|
if (threadExceptions.Count != 0)
|
||||||
|
{
|
||||||
|
foreach (Exception item in threadExceptions)
|
||||||
|
_Log.Error(string.Concat(item.Message, Environment.NewLine, Environment.NewLine, item.StackTrace));
|
||||||
|
Exception exception = threadExceptions[0];
|
||||||
|
threadExceptions.Clear();
|
||||||
|
throw exception;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected void Move(Tuple<string, Test[], JsonElement[], List<FileInfo>> extractResults)
|
protected void Move(Tuple<string, Test[], JsonElement[], List<FileInfo>> extractResults)
|
||||||
{
|
{
|
||||||
if (!_IsEAFHosted)
|
if (!_IsEAFHosted)
|
||||||
@ -451,80 +550,49 @@ public class FileRead : Properties.IFileRead
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void TriggerEvents(Tuple<string, Test[], JsonElement[], List<FileInfo>> extractResults, List<string> headerNames, Dictionary<string, string> keyValuePairs)
|
protected string[] Move(Tuple<string, Test[], JsonElement[], List<FileInfo>> extractResults, string to, string from, string resolvedFileLocation, Exception exception)
|
||||||
{
|
{
|
||||||
object value;
|
string[] results;
|
||||||
string description;
|
bool isErrorFile = exception is not null;
|
||||||
List<object[]> list;
|
if (!to.EndsWith(@"\"))
|
||||||
for (int i = 0; i < extractResults.Item3.Length; i++)
|
_ = string.Concat(to, @"\");
|
||||||
{
|
if (!isErrorFile)
|
||||||
_Log.Debug(string.Concat("TriggerEvent - {", _Logistics.ReportFullPath, "} ", i, " of ", extractResults.Item3.Length));
|
results = Array.Empty<string>();
|
||||||
foreach (JsonProperty jsonProperty in extractResults.Item3[i].EnumerateObject())
|
|
||||||
{
|
|
||||||
if (jsonProperty.Value.ValueKind != JsonValueKind.String || !keyValuePairs.ContainsKey(jsonProperty.Name))
|
|
||||||
description = string.Empty;
|
|
||||||
else
|
|
||||||
description = keyValuePairs[jsonProperty.Name].Split('|')[0];
|
|
||||||
if (!_UseCyclicalForDescription || headerNames.Contains(jsonProperty.Name))
|
|
||||||
value = jsonProperty.Value.ToString();
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
list = new List<object[]>();
|
results = new string[] { _Logistics.Sequence.ToString(), _Logistics.ReportFullPath, from, resolvedFileLocation, to, string.Empty, string.Empty, exception.Message, string.Empty, string.Empty, exception.StackTrace };
|
||||||
for (int z = 0; z < extractResults.Item3.Length; z++)
|
if (!_IsDuplicator)
|
||||||
list.Add(new object[] { z, extractResults.Item3[z].GetProperty(jsonProperty.Name).ToString() });
|
WriteAllLines(to, results);
|
||||||
value = list;
|
|
||||||
}
|
}
|
||||||
}
|
if (extractResults is not null && extractResults.Item4 is not null && extractResults.Item4.Count != 0)
|
||||||
if (_UseCyclicalForDescription)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected Tuple<string, Test[], JsonElement[], List<FileInfo>> ReExtract(IFileRead fileRead, List<string> headerNames, Dictionary<string, string> keyValuePairs)
|
|
||||||
{
|
{
|
||||||
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
string itemFile;
|
||||||
if (!Directory.Exists(_FileConnectorConfiguration.SourceFileLocation))
|
List<string> directories = new();
|
||||||
results = null;
|
foreach (FileInfo sourceFile in extractResults.Item4)
|
||||||
else
|
|
||||||
{
|
{
|
||||||
string[] segments;
|
if (sourceFile.FullName != _Logistics.ReportFullPath)
|
||||||
string[] matches = null;
|
|
||||||
foreach (string subSourceFileFilter in _FileConnectorConfiguration.SourceFileFilters)
|
|
||||||
{
|
{
|
||||||
segments = subSourceFileFilter.Split('\\');
|
itemFile = sourceFile.FullName.Replace(from, to);
|
||||||
if (_FileConnectorConfiguration.IncludeSubDirectories.Value)
|
Shared1880(itemFile, directories, sourceFile, isErrorFile);
|
||||||
matches = Directory.GetFiles(_FileConnectorConfiguration.SourceFileLocation, segments.Last(), SearchOption.AllDirectories);
|
|
||||||
else
|
|
||||||
matches = Directory.GetFiles(_FileConnectorConfiguration.SourceFileLocation, segments.Last(), SearchOption.TopDirectoryOnly);
|
|
||||||
if (matches.Any())
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
if (matches is null || !matches.Any())
|
else if (!isErrorFile && _Logistics is not null)
|
||||||
results = null;
|
Shared1811(to, sourceFile);
|
||||||
else
|
|
||||||
{
|
|
||||||
_ReportFullPath = matches[0];
|
|
||||||
results = fileRead.GetExtractResult(_ReportFullPath, _EventName);
|
|
||||||
if (!_IsEAFHosted)
|
|
||||||
TriggerEvents(results, headerNames, keyValuePairs);
|
|
||||||
}
|
}
|
||||||
|
Shared0231(directories);
|
||||||
}
|
}
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static List<Properties.IDescription> GetDuplicatorDescriptions(JsonElement[] jsonElements)
|
private void WriteAllLines(string to, string[] exceptionLines)
|
||||||
{
|
{
|
||||||
List<Properties.IDescription> results = new();
|
string fileName = string.Concat(to, @"\readme.txt");
|
||||||
Duplicator.Description description;
|
try
|
||||||
JsonSerializerOptions jsonSerializerOptions = new() { NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString };
|
|
||||||
foreach (JsonElement jsonElement in jsonElements)
|
|
||||||
{
|
{
|
||||||
if (jsonElement.ValueKind != JsonValueKind.Object)
|
if (!Directory.Exists(to))
|
||||||
throw new Exception();
|
_ = Directory.CreateDirectory(to);
|
||||||
description = JsonSerializer.Deserialize<Duplicator.Description>(jsonElement.ToString(), jsonSerializerOptions);
|
File.WriteAllLines(fileName, exceptionLines);
|
||||||
results.Add(description);
|
|
||||||
}
|
}
|
||||||
return results;
|
catch (Exception ex) { _Log.Error(ex.Message); }
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Shared1880(string itemFile, List<string> directories, FileInfo sourceFile, bool isErrorFile)
|
private void Shared1880(string itemFile, List<string> directories, FileInfo sourceFile, bool isErrorFile)
|
||||||
@ -556,6 +624,9 @@ public class FileRead : Properties.IFileRead
|
|||||||
case FileConnectorConfiguration.PostProcessingModeEnum.Delete:
|
case FileConnectorConfiguration.PostProcessingModeEnum.Delete:
|
||||||
File.Delete(sourceFile.FullName);
|
File.Delete(sourceFile.FullName);
|
||||||
break;
|
break;
|
||||||
|
case FileConnectorConfiguration.PostProcessingModeEnum.None:
|
||||||
|
File.Move(sourceFile.FullName, itemFile);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
throw new Exception();
|
throw new Exception();
|
||||||
}
|
}
|
||||||
@ -567,11 +638,12 @@ public class FileRead : Properties.IFileRead
|
|||||||
if (!_IsDuplicator && _FileConnectorConfiguration.SourceFileFilter != "*" && sourceFile.Exists && sourceFile.Length < _MinFileLength)
|
if (!_IsDuplicator && _FileConnectorConfiguration.SourceFileFilter != "*" && sourceFile.Exists && sourceFile.Length < _MinFileLength)
|
||||||
{
|
{
|
||||||
string directoryName = Path.GetFileName(to);
|
string directoryName = Path.GetFileName(to);
|
||||||
string jobIdDirectory = Path.GetDirectoryName(to);
|
string jobIdDirectory = GetJobIdDirectory(to);
|
||||||
DateTime dateTime = DateTime.Now.AddMinutes(-15);
|
DateTime dateTime = DateTime.Now.AddMinutes(-15);
|
||||||
|
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 destinationDirectory = string.Concat(jobIdDirectory, @"\_ Ignore 100 bytes\", weekDirectory, @"\", directoryName);
|
string destinationDirectory = Path.Combine(jobIdDirectory, "_ Ignore 100 bytes", weekDirectory, day, directoryName);
|
||||||
if (!Directory.Exists(destinationDirectory))
|
if (!Directory.Exists(destinationDirectory))
|
||||||
_ = Directory.CreateDirectory(destinationDirectory);
|
_ = Directory.CreateDirectory(destinationDirectory);
|
||||||
File.Move(sourceFile.FullName, string.Concat(destinationDirectory, @"\", sourceFile.Name));
|
File.Move(sourceFile.FullName, string.Concat(destinationDirectory, @"\", sourceFile.Name));
|
||||||
@ -582,13 +654,13 @@ public class FileRead : Properties.IFileRead
|
|||||||
{
|
{
|
||||||
if (!checkDirectory.Contains('_'))
|
if (!checkDirectory.Contains('_'))
|
||||||
continue;
|
continue;
|
||||||
if (Directory.GetDirectories(checkDirectory, "*", SearchOption.TopDirectoryOnly).Any())
|
if (Directory.GetDirectories(checkDirectory, "*", SearchOption.TopDirectoryOnly).Length != 0)
|
||||||
continue;
|
continue;
|
||||||
if (Directory.GetFiles(checkDirectory, "*", SearchOption.TopDirectoryOnly).Any())
|
if (Directory.GetFiles(checkDirectory, "*", SearchOption.TopDirectoryOnly).Length != 0)
|
||||||
continue;
|
continue;
|
||||||
if (Directory.GetDirectories(checkDirectory, "*", SearchOption.AllDirectories).Any())
|
if (Directory.GetDirectories(checkDirectory, "*", SearchOption.AllDirectories).Length != 0)
|
||||||
continue;
|
continue;
|
||||||
if (Directory.GetFiles(checkDirectory, "*", SearchOption.AllDirectories).Any())
|
if (Directory.GetFiles(checkDirectory, "*", SearchOption.AllDirectories).Length != 0)
|
||||||
continue;
|
continue;
|
||||||
if (new DirectoryInfo(checkDirectory).CreationTime > dateTime)
|
if (new DirectoryInfo(checkDirectory).CreationTime > dateTime)
|
||||||
continue;
|
continue;
|
||||||
@ -596,6 +668,52 @@ public class FileRead : Properties.IFileRead
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception) { throw; }
|
catch (Exception) { throw; }
|
||||||
|
DeleteEmptyTopDirectories(jobIdDirectory);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private string GetJobIdDirectory(string path)
|
||||||
|
{
|
||||||
|
string result;
|
||||||
|
List<string> directoryNames = GetDirectoryNames(path);
|
||||||
|
if (!directoryNames.Contains(_Logistics.JobID))
|
||||||
|
result = Path.GetDirectoryName(path);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result = string.Empty;
|
||||||
|
foreach (string directoryName in directoryNames)
|
||||||
|
{
|
||||||
|
result = Path.Combine(result, directoryName);
|
||||||
|
if (directoryName == _Logistics.JobID)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void DeleteEmptyTopDirectories(string rootDirectory)
|
||||||
|
{
|
||||||
|
if (Directory.Exists(rootDirectory))
|
||||||
|
{
|
||||||
|
string[] files;
|
||||||
|
string[] directories;
|
||||||
|
string[] subDirectories = Directory.GetDirectories(rootDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||||
|
foreach (string subDirectory in subDirectories)
|
||||||
|
{
|
||||||
|
files = Directory.GetFiles(subDirectory, "*", SearchOption.AllDirectories);
|
||||||
|
if (files.Length > 0)
|
||||||
|
continue;
|
||||||
|
directories = Directory.GetDirectories(subDirectory, "*", SearchOption.TopDirectoryOnly);
|
||||||
|
if (directories.Length > 0)
|
||||||
|
continue;
|
||||||
|
try
|
||||||
|
{ Directory.Delete(subDirectory); }
|
||||||
|
catch (UnauthorizedAccessException)
|
||||||
|
{
|
||||||
|
new DirectoryInfo(subDirectory).Attributes = FileAttributes.Normal;
|
||||||
|
Directory.Delete(subDirectory);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -605,72 +723,87 @@ public class FileRead : Properties.IFileRead
|
|||||||
{
|
{
|
||||||
foreach (string directory in (from l in directories orderby l.Split('\\').Length descending select l).Distinct())
|
foreach (string directory in (from l in directories orderby l.Split('\\').Length descending select l).Distinct())
|
||||||
{
|
{
|
||||||
if (Directory.Exists(directory) && !Directory.GetFiles(directory).Any())
|
if (Directory.Exists(directory) && Directory.GetFiles(directory).Length == 0)
|
||||||
Directory.Delete(directory);
|
Directory.Delete(directory);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void WaitForFileConsumption<T>(DateTime dateTime, List<T> descriptions, bool isDummyRun, string successDirectory, string duplicateDirectory, List<(Properties.IScopeInfo, string)> collection, string duplicateFile) where T : Properties.IDescription
|
protected void SetFileParameterLotID(string value, bool includeLogisticsSequence = true)
|
||||||
{
|
{
|
||||||
if (!isDummyRun && _IsEAFHosted)
|
string key;
|
||||||
WaitForFileConsumption(_FileConnectorConfiguration.SourceDirectoryCloaking, _Logistics, dateTime, descriptions, successDirectory, duplicateDirectory, duplicateFile, collection);
|
if (!includeLogisticsSequence)
|
||||||
|
key = "LotID";
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
long breakAfter = DateTime.Now.AddSeconds(_FileConnectorConfiguration.ConnectionRetryInterval.Value).Ticks;
|
key = "LotIDWithLogisticsSequence";
|
||||||
for (short i = 0; i < short.MaxValue; i++)
|
value = string.Concat(value, "_", _Logistics.Sequence, "_", DateTime.Now.Ticks - _Logistics.Sequence);
|
||||||
{
|
|
||||||
if (!_IsEAFHosted || DateTime.Now.Ticks > breakAfter)
|
|
||||||
break;
|
|
||||||
Thread.Sleep(500);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
SetFileParameter(key, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static string GetJobIdParentDirectory(string directory)
|
protected void SetFileParameterLotIDToLogisticsMID(bool includeLogisticsSequence = true)
|
||||||
{
|
{
|
||||||
string result;
|
string key;
|
||||||
if (!string.IsNullOrEmpty(Path.GetFileName(directory)))
|
if (!includeLogisticsSequence)
|
||||||
result = Path.GetFullPath(GetParentParent(directory));
|
key = "LotID";
|
||||||
else
|
else
|
||||||
result = Path.GetFullPath(GetParentParent(Path.GetDirectoryName(directory)));
|
key = "LotIDWithLogisticsSequence";
|
||||||
if (!Directory.Exists(result))
|
string value = string.Concat(_Logistics.MID, "_", _Logistics.Sequence, "_", DateTime.Now.Ticks - _Logistics.Sequence);
|
||||||
_ = Directory.CreateDirectory(result);
|
SetFileParameter(key, value);
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal string[] GetInProcessDirectory(string jobIdDirectory)
|
protected Tuple<string, Test[], JsonElement[], List<FileInfo>> ReExtract(IFileRead fileRead, List<string> headerNames, Dictionary<string, string> keyValuePairs)
|
||||||
{
|
{
|
||||||
string[] results;
|
Tuple<string, Test[], JsonElement[], List<FileInfo>> results;
|
||||||
|
if (!Directory.Exists(_FileConnectorConfiguration.SourceFileLocation))
|
||||||
|
results = null;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
string[] matches = GetMatches(_FileConnectorConfiguration);
|
||||||
|
if (matches is null || matches.Length == 0)
|
||||||
|
results = null;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_ReportFullPath = matches[0];
|
||||||
|
results = fileRead.GetExtractResult(_ReportFullPath, _EventName);
|
||||||
if (!_IsEAFHosted)
|
if (!_IsEAFHosted)
|
||||||
results = new string[] { jobIdDirectory };
|
TriggerEvents(results, headerNames, keyValuePairs);
|
||||||
else
|
}
|
||||||
{
|
|
||||||
string logisticsSequence = _Logistics.Sequence.ToString();
|
|
||||||
results = Directory.GetDirectories(jobIdDirectory, string.Concat(_Logistics.MID, '*', logisticsSequence, '*'), SearchOption.TopDirectoryOnly);
|
|
||||||
}
|
}
|
||||||
if ((results is null) || results.Length != 1)
|
|
||||||
throw new Exception("Didn't find directory by logistics sequence");
|
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static string GetFileNameAfterUnderscoreSplit(string reportFullPath)
|
protected void TriggerEvents(Tuple<string, Test[], JsonElement[], List<FileInfo>> extractResults, List<string> headerNames, Dictionary<string, string> keyValuePairs)
|
||||||
{
|
{
|
||||||
string result;
|
object value;
|
||||||
string[] segments = Path.GetFileNameWithoutExtension(reportFullPath).Split('_');
|
string segments;
|
||||||
if (segments.Length <= 2)
|
string description;
|
||||||
result = segments[0];
|
List<object[]> list;
|
||||||
|
for (int i = 0; i < extractResults.Item3.Length; i++)
|
||||||
|
{
|
||||||
|
_Log.Debug(string.Concat("TriggerEvent - {", _Logistics.ReportFullPath, "} ", i, " of ", extractResults.Item3.Length));
|
||||||
|
foreach (JsonProperty jsonProperty in extractResults.Item3[i].EnumerateObject())
|
||||||
|
{
|
||||||
|
if (jsonProperty.Value.ValueKind != JsonValueKind.String || !keyValuePairs.TryGetValue(jsonProperty.Name, out segments))
|
||||||
|
description = string.Empty;
|
||||||
|
else
|
||||||
|
description = segments.Split('|')[0];
|
||||||
|
if (!_UseCyclicalForDescription || headerNames.Contains(jsonProperty.Name))
|
||||||
|
value = jsonProperty.Value.ToString();
|
||||||
else
|
else
|
||||||
result = string.Concat(segments[0], segments[2]);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal static string GetParentParent(string value)
|
|
||||||
{
|
{
|
||||||
string result = Path.GetDirectoryName(Path.GetDirectoryName(value));
|
list = new List<object[]>();
|
||||||
return result;
|
for (int z = 0; z < extractResults.Item3.Length; z++)
|
||||||
|
list.Add(new object[] { z, extractResults.Item3[z].GetProperty(jsonProperty.Name).ToString() });
|
||||||
|
value = list;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (_UseCyclicalForDescription)
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2022-06-08 -> Shared - FileRead
|
// 2025-03-25 -> Shared - FileRead
|
||||||
@ -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,14 +87,14 @@ 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.Any() || !Logistics1[0].StartsWith("LOGISTICS_1"))
|
if (Logistics1.Count == 0 || !Logistics1[0].StartsWith("LOGISTICS_1"))
|
||||||
{
|
{
|
||||||
_NullData = null;
|
_NullData = null;
|
||||||
_JobID = "null";
|
_JobID = "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,84 +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(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");
|
{
|
||||||
|
|
||||||
multipartFormDataContent.Add(byteArrayContent, "attachment", fileName);
|
|
||||||
|
|
||||||
HttpResponseMessage httpResponseMessage = httpClient.PostAsync(requestUrl, multipartFormDataContent).Result;
|
|
||||||
|
|
||||||
if (httpResponseMessage.IsSuccessStatusCode)
|
|
||||||
return;
|
|
||||||
|
|
||||||
string resultBody = httpResponseMessage.Content.ReadAsStringAsync().Result;
|
string resultBody = httpResponseMessage.Content.ReadAsStringAsync().Result;
|
||||||
|
throw new Exception($"Attachment failed: {resultBody}");
|
||||||
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
33
Adaptation/Shared/ProcessDataStandardFormatMapping.cs
Normal file
33
Adaptation/Shared/ProcessDataStandardFormatMapping.cs
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
using System.Collections.ObjectModel;
|
||||||
|
|
||||||
|
namespace Adaptation.Shared;
|
||||||
|
|
||||||
|
public class ProcessDataStandardFormatMapping
|
||||||
|
{
|
||||||
|
|
||||||
|
public ReadOnlyCollection<string> BackfillColumns { get; private set; }
|
||||||
|
public ReadOnlyCollection<int> ColumnIndices { get; private set; }
|
||||||
|
public ReadOnlyCollection<string> IgnoreColumns { get; private set; }
|
||||||
|
public ReadOnlyCollection<string> IndexOnlyColumns { get; private set; }
|
||||||
|
public ReadOnlyDictionary<string, string> KeyValuePairs { get; private set; }
|
||||||
|
public ReadOnlyCollection<string> NewColumnNames { get; private set; }
|
||||||
|
public ReadOnlyCollection<string> OldColumnNames { get; private set; }
|
||||||
|
|
||||||
|
public ProcessDataStandardFormatMapping(ReadOnlyCollection<string> backfillColumns,
|
||||||
|
ReadOnlyCollection<int> columnIndices,
|
||||||
|
ReadOnlyCollection<string> ignoreColumns,
|
||||||
|
ReadOnlyCollection<string> indexOnlyColumns,
|
||||||
|
ReadOnlyDictionary<string, string> keyValuePairs,
|
||||||
|
ReadOnlyCollection<string> newColumnNames,
|
||||||
|
ReadOnlyCollection<string> oldColumnNames)
|
||||||
|
{
|
||||||
|
BackfillColumns = backfillColumns;
|
||||||
|
ColumnIndices = columnIndices;
|
||||||
|
IgnoreColumns = ignoreColumns;
|
||||||
|
IndexOnlyColumns = indexOnlyColumns;
|
||||||
|
KeyValuePairs = keyValuePairs;
|
||||||
|
NewColumnNames = newColumnNames;
|
||||||
|
OldColumnNames = oldColumnNames;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -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,
|
||||||
@ -21,7 +22,7 @@ public enum Test
|
|||||||
Denton = 9,
|
Denton = 9,
|
||||||
DiffusionLength = 45,
|
DiffusionLength = 45,
|
||||||
GRATXTCenter = 51,
|
GRATXTCenter = 51,
|
||||||
GRATXTEdge = 52, //Largest
|
GRATXTEdge = 52,
|
||||||
GrowthRateXML = 50,
|
GrowthRateXML = 50,
|
||||||
Hall = 10,
|
Hall = 10,
|
||||||
HgCV = 23,
|
HgCV = 23,
|
||||||
@ -38,6 +39,7 @@ public enum Test
|
|||||||
RPMPLRatio = 17,
|
RPMPLRatio = 17,
|
||||||
RPMXY = 15,
|
RPMXY = 15,
|
||||||
SP1 = 8,
|
SP1 = 8,
|
||||||
|
SRP2100 = 53,
|
||||||
Tencor = 7,
|
Tencor = 7,
|
||||||
UV = 35,
|
UV = 35,
|
||||||
VerificationLehighton = 14,
|
VerificationLehighton = 14,
|
||||||
|
|||||||
@ -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 DEP08SIHTRPLC : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static DEP08SIHTRPLC EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
static DEP08SIHTRPLC() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||||
|
|
||||||
|
public DEP08SIHTRPLC() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public DEP08SIHTRPLC(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new DEP08SIHTRPLC(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__DEP08SIHTRPLC__ZipFilesByDate()
|
||||||
|
{
|
||||||
|
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"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
#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_60_0;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class DEP08SIHTRPLC : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static DEP08SIHTRPLC EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
static DEP08SIHTRPLC() => DummyRoot = @"\\mesfs.infineon.com\EC_Characterization_Si\Dummy";
|
||||||
|
|
||||||
|
public DEP08SIHTRPLC() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public DEP08SIHTRPLC(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new DEP08SIHTRPLC(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__DEP08SIHTRPLC__ZipFilesByDate()
|
||||||
|
{
|
||||||
|
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"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
#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 DEP08SIHTRPLC : EAFLoggingUnitTesting
|
|||||||
EAFLoggingUnitTesting?.Dispose();
|
EAFLoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
@ -59,3 +60,4 @@ public class DEP08SIHTRPLC : EAFLoggingUnitTesting
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
@ -0,0 +1,63 @@
|
|||||||
|
#if v2_52_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.Staging.v2_52_0;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class DEP08SIHTRPLC : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static DEP08SIHTRPLC EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
public DEP08SIHTRPLC() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public DEP08SIHTRPLC(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new DEP08SIHTRPLC(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 Staging__v2_52_0__DEP08SIHTRPLC__ZipFilesByDate()
|
||||||
|
{
|
||||||
|
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"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@ -0,0 +1,61 @@
|
|||||||
|
#if v2_56_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.Staging.v2_56_0;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class DEP08SIHTRPLC : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static DEP08SIHTRPLC EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
public DEP08SIHTRPLC() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public DEP08SIHTRPLC(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new DEP08SIHTRPLC(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();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Ignore]
|
||||||
|
[TestMethod]
|
||||||
|
public void Staging__v2_56_0__DEP08SIHTRPLC__ZipFilesByDate()
|
||||||
|
{
|
||||||
|
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"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@ -0,0 +1,63 @@
|
|||||||
|
#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.Staging.v2_57_0;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class DEP08SIHTRPLC : EAFLoggingUnitTesting
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
internal static string DummyRoot { get; private set; }
|
||||||
|
internal static DEP08SIHTRPLC EAFLoggingUnitTesting { get; private set; }
|
||||||
|
|
||||||
|
public DEP08SIHTRPLC() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
if (EAFLoggingUnitTesting is null)
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
|
||||||
|
public DEP08SIHTRPLC(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
EAFLoggingUnitTesting ??= new DEP08SIHTRPLC(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 Staging__v2_57_0__DEP08SIHTRPLC__ZipFilesByDate()
|
||||||
|
{
|
||||||
|
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"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
#if v2_59_0
|
||||||
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
|
||||||
|
namespace Adaptation._Tests.Extract.Production.v2_59_0;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class DEP08SIHTRPLC
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
private static CreateSelfDescription.Production.v2_59_0.DEP08SIHTRPLC _DEP08SIHTRPLC;
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
CreateSelfDescription.Production.v2_59_0.DEP08SIHTRPLC.ClassInitialize(testContext);
|
||||||
|
_DEP08SIHTRPLC = CreateSelfDescription.Production.v2_59_0.DEP08SIHTRPLC.EAFLoggingUnitTesting;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_59_0__DEP08SIHTRPLC__ZipFilesByDate() => _DEP08SIHTRPLC.Production__v2_59_0__DEP08SIHTRPLC__ZipFilesByDate();
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
#if true
|
||||||
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
|
||||||
|
namespace Adaptation._Tests.Extract.Production.v2_60_0;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class DEP08SIHTRPLC
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
private static CreateSelfDescription.Production.v2_60_0.DEP08SIHTRPLC _DEP08SIHTRPLC;
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
CreateSelfDescription.Production.v2_60_0.DEP08SIHTRPLC.ClassInitialize(testContext);
|
||||||
|
_DEP08SIHTRPLC = CreateSelfDescription.Production.v2_60_0.DEP08SIHTRPLC.EAFLoggingUnitTesting;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Production__v2_60_0__DEP08SIHTRPLC__ZipFilesByDate() => _DEP08SIHTRPLC.Production__v2_60_0__DEP08SIHTRPLC__ZipFilesByDate();
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
#if v2_43_0
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
|
||||||
namespace Adaptation._Tests.Extract.Staging.v2_43_0;
|
namespace Adaptation._Tests.Extract.Staging.v2_43_0;
|
||||||
@ -18,10 +19,11 @@ public class DEP08SIHTRPLC
|
|||||||
_DEP08SIHTRPLC = CreateSelfDescription.Staging.v2_43_0.DEP08SIHTRPLC.EAFLoggingUnitTesting;
|
_DEP08SIHTRPLC = CreateSelfDescription.Staging.v2_43_0.DEP08SIHTRPLC.EAFLoggingUnitTesting;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if true
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging__v2_43_0__DEP08SIHTRPLC__ZipFilesByDate() => _DEP08SIHTRPLC.Staging__v2_43_0__DEP08SIHTRPLC__ZipFilesByDate();
|
public void Staging__v2_43_0__DEP08SIHTRPLC__ZipFilesByDate() => _DEP08SIHTRPLC.Staging__v2_43_0__DEP08SIHTRPLC__ZipFilesByDate();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
29
Adaptation/_Tests/Extract/Staging/v2.52.0/DEP08SIHTRPLC.cs
Normal file
29
Adaptation/_Tests/Extract/Staging/v2.52.0/DEP08SIHTRPLC.cs
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
#if v2_52_0
|
||||||
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
|
||||||
|
namespace Adaptation._Tests.Extract.Staging.v2_52_0;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class DEP08SIHTRPLC
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
private static CreateSelfDescription.Staging.v2_52_0.DEP08SIHTRPLC _DEP08SIHTRPLC;
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
CreateSelfDescription.Staging.v2_52_0.DEP08SIHTRPLC.ClassInitialize(testContext);
|
||||||
|
_DEP08SIHTRPLC = CreateSelfDescription.Staging.v2_52_0.DEP08SIHTRPLC.EAFLoggingUnitTesting;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Staging__v2_52_0__DEP08SIHTRPLC__ZipFilesByDate() => _DEP08SIHTRPLC.Staging__v2_52_0__DEP08SIHTRPLC__ZipFilesByDate();
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
27
Adaptation/_Tests/Extract/Staging/v2.56.0/DEP08SIHTRPLC.cs
Normal file
27
Adaptation/_Tests/Extract/Staging/v2.56.0/DEP08SIHTRPLC.cs
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
#if v2_56_0
|
||||||
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
|
||||||
|
namespace Adaptation._Tests.Extract.Staging.v2_56_0;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class DEP08SIHTRPLC
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
private static CreateSelfDescription.Staging.v2_56_0.DEP08SIHTRPLC _DEP08SIHTRPLC;
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
CreateSelfDescription.Staging.v2_56_0.DEP08SIHTRPLC.ClassInitialize(testContext);
|
||||||
|
_DEP08SIHTRPLC = CreateSelfDescription.Staging.v2_56_0.DEP08SIHTRPLC.EAFLoggingUnitTesting;
|
||||||
|
}
|
||||||
|
|
||||||
|
[Ignore]
|
||||||
|
[TestMethod]
|
||||||
|
public void Staging__v2_56_0__DEP08SIHTRPLC__ZipFilesByDate() => _DEP08SIHTRPLC.Staging__v2_56_0__DEP08SIHTRPLC__ZipFilesByDate();
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
29
Adaptation/_Tests/Extract/Staging/v2.57.0/DEP08SIHTRPLC.cs
Normal file
29
Adaptation/_Tests/Extract/Staging/v2.57.0/DEP08SIHTRPLC.cs
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
#if v2_57_0
|
||||||
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
|
||||||
|
namespace Adaptation._Tests.Extract.Staging.v2_57_0;
|
||||||
|
|
||||||
|
[TestClass]
|
||||||
|
public class DEP08SIHTRPLC
|
||||||
|
{
|
||||||
|
|
||||||
|
#pragma warning disable CA2254
|
||||||
|
#pragma warning disable IDE0060
|
||||||
|
|
||||||
|
private static CreateSelfDescription.Staging.v2_57_0.DEP08SIHTRPLC _DEP08SIHTRPLC;
|
||||||
|
|
||||||
|
[ClassInitialize]
|
||||||
|
public static void ClassInitialize(TestContext testContext)
|
||||||
|
{
|
||||||
|
CreateSelfDescription.Staging.v2_57_0.DEP08SIHTRPLC.ClassInitialize(testContext);
|
||||||
|
_DEP08SIHTRPLC = CreateSelfDescription.Staging.v2_57_0.DEP08SIHTRPLC.EAFLoggingUnitTesting;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
[Ignore]
|
||||||
|
#endif
|
||||||
|
[TestMethod]
|
||||||
|
public void Staging__v2_57_0__DEP08SIHTRPLC__ZipFilesByDate() => _DEP08SIHTRPLC.Staging__v2_57_0__DEP08SIHTRPLC__ZipFilesByDate();
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
File diff suppressed because it is too large
Load Diff
@ -2,7 +2,6 @@ using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
@ -74,7 +73,7 @@ public class UnitTesting
|
|||||||
if (string.IsNullOrEmpty(result))
|
if (string.IsNullOrEmpty(result))
|
||||||
break;
|
break;
|
||||||
checkFiles = Directory.GetFiles(result, "*.Tests.*proj", SearchOption.TopDirectoryOnly);
|
checkFiles = Directory.GetFiles(result, "*.Tests.*proj", SearchOption.TopDirectoryOnly);
|
||||||
if (checkFiles.Any())
|
if (checkFiles.Length != 0)
|
||||||
break;
|
break;
|
||||||
result = Path.GetDirectoryName(result);
|
result = Path.GetDirectoryName(result);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,8 +2,10 @@ using Adaptation._Tests.Shared;
|
|||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
@ -38,35 +40,65 @@ public class DEP08SIHTRPLC : LoggingUnitTesting, IDisposable
|
|||||||
LoggingUnitTesting?.Dispose();
|
LoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void NonThrowTryCatch()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{ throw new Exception(); }
|
||||||
|
catch (Exception) { }
|
||||||
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void TestDateTime()
|
public void TestDateTime()
|
||||||
{
|
{
|
||||||
DateTime dateTime = DateTime.Now;
|
DateTime dateTime = DateTime.Now;
|
||||||
Assert.IsTrue(dateTime.ToString("M/d/yyyy h:mm:ss tt") == dateTime.ToString());
|
Assert.AreEqual(dateTime.ToString(), dateTime.ToString("M/d/yyyy h:mm:ss tt"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging()
|
public void Production()
|
||||||
{
|
{
|
||||||
MethodBase methodBase = new StackFrame().GetMethod();
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
StringBuilder results = new();
|
StringBuilder results = new();
|
||||||
(string cellInstanceName, string cellInstanceVersionName)[] collection = new (string, string)[]
|
(string cellInstanceName, string cellInstanceVersionName)[] collection = new (string, string)[]
|
||||||
{
|
{
|
||||||
new("DEP08SIHTRPLC", "v2.47.5"),
|
new("DEP08SIHTRPLC", "v2.60.0"),
|
||||||
};
|
};
|
||||||
string staging = "http://mestsa07ec.ec.local:9003/CellInstanceServiceV2";
|
string production = "http://messa08ec.infineon.com:9003/CellInstanceServiceV2";
|
||||||
Shared.PasteSpecialXml.EAF.XML.API.CellInstance.CellInstanceVersion cellInstanceVersion;
|
Shared.PasteSpecialXml.EAF.XML.API.CellInstance.CellInstanceVersion cellInstanceVersion;
|
||||||
LoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
LoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||||
foreach ((string cellInstanceName, string cellInstanceVersionName) in collection)
|
foreach ((string cellInstanceName, string cellInstanceVersionName) in collection)
|
||||||
{
|
{
|
||||||
cellInstanceVersion = AdaptationTesting.GetCellInstanceVersion($"{staging}/{cellInstanceName}/{cellInstanceVersionName}/configuration");
|
cellInstanceVersion = AdaptationTesting.GetCellInstanceVersion($"{production}/{cellInstanceName}/{cellInstanceVersionName}/configuration");
|
||||||
_ = results.AppendLine($"{cellInstanceName}\t{cellInstanceVersionName}\t{cellInstanceVersion.EdaConnection.PortNumber}");
|
_ = results.AppendLine($"{cellInstanceName}\t{cellInstanceVersionName}\t{cellInstanceVersion.EdaConnection.PortNumber}");
|
||||||
}
|
}
|
||||||
File.WriteAllText($"D:/Tmp/{methodBase.Module.Name}-{methodBase.ReflectedType.Name}-{methodBase.Name}.tsv", results.ToString());
|
string sourceDirectory = "D:/Tmp/cellInstanceVersion.EdaConnection.PortNumber";
|
||||||
|
if (!Directory.Exists(sourceDirectory))
|
||||||
|
_ = Directory.CreateDirectory(sourceDirectory);
|
||||||
|
File.WriteAllText(Path.Combine(sourceDirectory, $"{methodBase.Module.Name}-{methodBase.ReflectedType.Name}-{methodBase.Name}.tsv"), results.ToString());
|
||||||
LoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
LoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void CellInstanceVersionEdaConnectionPortNumber()
|
||||||
|
{
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
string sourceDirectory = "D:/Tmp/cellInstanceVersion.EdaConnection.PortNumber";
|
||||||
|
if (Directory.Exists(sourceDirectory))
|
||||||
|
{
|
||||||
|
string destinationDirectory = Path.Combine(sourceDirectory, "All");
|
||||||
|
if (!Directory.Exists(destinationDirectory))
|
||||||
|
_ = Directory.CreateDirectory(destinationDirectory);
|
||||||
|
List<string> lines = new();
|
||||||
|
string[] files = Directory.GetFiles(sourceDirectory, "*.tsv", SearchOption.TopDirectoryOnly);
|
||||||
|
foreach (string file in files)
|
||||||
|
lines.AddRange(File.ReadAllLines(file));
|
||||||
|
File.WriteAllLines(Path.Combine(destinationDirectory, $"{DateTime.Now.Ticks}.tsv"), lines.Distinct().OrderBy(l => l));
|
||||||
|
}
|
||||||
|
LoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
|
NonThrowTryCatch();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -2,8 +2,10 @@ using Adaptation._Tests.Shared;
|
|||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
@ -38,18 +40,25 @@ public class PLC : LoggingUnitTesting, IDisposable
|
|||||||
LoggingUnitTesting?.Dispose();
|
LoggingUnitTesting?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void NonThrowTryCatch()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{ throw new Exception(); }
|
||||||
|
catch (Exception) { }
|
||||||
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void TestDateTime()
|
public void TestDateTime()
|
||||||
{
|
{
|
||||||
DateTime dateTime = DateTime.Now;
|
DateTime dateTime = DateTime.Now;
|
||||||
Assert.IsTrue(dateTime.ToString("M/d/yyyy h:mm:ss tt") == dateTime.ToString());
|
Assert.AreEqual(dateTime.ToString(), dateTime.ToString("M/d/yyyy h:mm:ss tt"));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
[Ignore]
|
[Ignore]
|
||||||
#endif
|
#endif
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void Staging()
|
public void Production()
|
||||||
{
|
{
|
||||||
MethodBase methodBase = new StackFrame().GetMethod();
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
StringBuilder results = new();
|
StringBuilder results = new();
|
||||||
@ -61,16 +70,39 @@ public class PLC : LoggingUnitTesting, IDisposable
|
|||||||
new("R73-PLC", "v2.19.0"),
|
new("R73-PLC", "v2.19.0"),
|
||||||
new("R74-PLC", "v2.19.0"),
|
new("R74-PLC", "v2.19.0"),
|
||||||
};
|
};
|
||||||
string staging = "http://mestsa07ec.ec.local:9003/CellInstanceServiceV2";
|
string production = "http://messa08ec.infineon.com:9003/CellInstanceServiceV2";
|
||||||
Shared.PasteSpecialXml.EAF.XML.API.CellInstance.CellInstanceVersion cellInstanceVersion;
|
Shared.PasteSpecialXml.EAF.XML.API.CellInstance.CellInstanceVersion cellInstanceVersion;
|
||||||
LoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
LoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Getting configuration"));
|
||||||
foreach ((string cellInstanceName, string cellInstanceVersionName) in collection)
|
foreach ((string cellInstanceName, string cellInstanceVersionName) in collection)
|
||||||
{
|
{
|
||||||
cellInstanceVersion = AdaptationTesting.GetCellInstanceVersion($"{staging}/{cellInstanceName}/{cellInstanceVersionName}/configuration");
|
cellInstanceVersion = AdaptationTesting.GetCellInstanceVersion($"{production}/{cellInstanceName}/{cellInstanceVersionName}/configuration");
|
||||||
_ = results.AppendLine($"{cellInstanceName}\t{cellInstanceVersionName}\t{cellInstanceVersion.EdaConnection.PortNumber}");
|
_ = results.AppendLine($"{cellInstanceName}\t{cellInstanceVersionName}\t{cellInstanceVersion.EdaConnection.PortNumber}");
|
||||||
}
|
}
|
||||||
File.WriteAllText($"D:/Tmp/{methodBase.Module.Name}-{methodBase.ReflectedType.Name}-{methodBase.Name}.tsv", results.ToString());
|
string sourceDirectory = "D:/Tmp/cellInstanceVersion.EdaConnection.PortNumber";
|
||||||
|
if (!Directory.Exists(sourceDirectory))
|
||||||
|
_ = Directory.CreateDirectory(sourceDirectory);
|
||||||
|
File.WriteAllText(Path.Combine(sourceDirectory, $"{methodBase.Module.Name}-{methodBase.ReflectedType.Name}-{methodBase.Name}.tsv"), results.ToString());
|
||||||
LoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
LoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void CellInstanceVersionEdaConnectionPortNumber()
|
||||||
|
{
|
||||||
|
MethodBase methodBase = new StackFrame().GetMethod();
|
||||||
|
string sourceDirectory = "D:/Tmp/cellInstanceVersion.EdaConnection.PortNumber";
|
||||||
|
if (Directory.Exists(sourceDirectory))
|
||||||
|
{
|
||||||
|
string destinationDirectory = Path.Combine(sourceDirectory, "All");
|
||||||
|
if (!Directory.Exists(destinationDirectory))
|
||||||
|
_ = Directory.CreateDirectory(destinationDirectory);
|
||||||
|
List<string> lines = new();
|
||||||
|
string[] files = Directory.GetFiles(sourceDirectory, "*.tsv", SearchOption.TopDirectoryOnly);
|
||||||
|
foreach (string file in files)
|
||||||
|
lines.AddRange(File.ReadAllLines(file));
|
||||||
|
File.WriteAllLines(Path.Combine(destinationDirectory, $"{DateTime.Now.Ticks}.tsv"), lines.Distinct().OrderBy(l => l));
|
||||||
|
}
|
||||||
|
LoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, " - Exit"));
|
||||||
|
NonThrowTryCatch();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -45,7 +45,7 @@
|
|||||||
"Password": "tVyC7uPHtScZR8NLInSaxQ=="
|
"Password": "tVyC7uPHtScZR8NLInSaxQ=="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Use": true,
|
"Use": false,
|
||||||
"Letter": "i",
|
"Letter": "i",
|
||||||
"Share": "\\\\messdv002.na.infineon.com\\Candela",
|
"Share": "\\\\messdv002.na.infineon.com\\Candela",
|
||||||
"User": "INFINEON\\MESGaNEAF",
|
"User": "INFINEON\\MESGaNEAF",
|
||||||
@ -115,14 +115,14 @@
|
|||||||
"Password": "rzXkXdHKetDfsukhZKW0yA=="
|
"Password": "rzXkXdHKetDfsukhZKW0yA=="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Use": true,
|
"Use": false,
|
||||||
"Letter": "s",
|
"Letter": "s",
|
||||||
"Share": "\\\\messv02ecc1.ec.local\\EC_EAFRepository",
|
"Share": "\\\\messv02ecc1.ec.local\\EC_EAFRepository",
|
||||||
"User": "EC\\ECMESEAF",
|
"User": "EC\\ECMESEAF",
|
||||||
"Password": "CUGygiPwahy4U3j+6KqqoMZ08STyVDR1rKm6MwPpt00="
|
"Password": "CUGygiPwahy4U3j+6KqqoMZ08STyVDR1rKm6MwPpt00="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Use": true,
|
"Use": false,
|
||||||
"Letter": "t",
|
"Letter": "t",
|
||||||
"Share": "\\\\messv02ecc1.ec.local\\EC_EDA",
|
"Share": "\\\\messv02ecc1.ec.local\\EC_EDA",
|
||||||
"User": "EC\\ECEDASvc",
|
"User": "EC\\ECEDASvc",
|
||||||
|
|||||||
@ -45,7 +45,7 @@
|
|||||||
"Password": "tVyC7uPHtScZR8NLInSaxQ=="
|
"Password": "tVyC7uPHtScZR8NLInSaxQ=="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Use": true,
|
"Use": false,
|
||||||
"Letter": "i",
|
"Letter": "i",
|
||||||
"Share": "\\\\messdv002.na.infineon.com\\Candela",
|
"Share": "\\\\messdv002.na.infineon.com\\Candela",
|
||||||
"User": "INFINEON\\MESGaNEAF",
|
"User": "INFINEON\\MESGaNEAF",
|
||||||
@ -115,14 +115,14 @@
|
|||||||
"Password": "rzXkXdHKetDfsukhZKW0yA=="
|
"Password": "rzXkXdHKetDfsukhZKW0yA=="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Use": true,
|
"Use": false,
|
||||||
"Letter": "s",
|
"Letter": "s",
|
||||||
"Share": "\\\\messv02ecc1.ec.local\\EC_EAFRepository",
|
"Share": "\\\\messv02ecc1.ec.local\\EC_EAFRepository",
|
||||||
"User": "EC\\ECMESEAF",
|
"User": "EC\\ECMESEAF",
|
||||||
"Password": "CUGygiPwahy4U3j+6KqqoMZ08STyVDR1rKm6MwPpt00="
|
"Password": "CUGygiPwahy4U3j+6KqqoMZ08STyVDR1rKm6MwPpt00="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Use": true,
|
"Use": false,
|
||||||
"Letter": "t",
|
"Letter": "t",
|
||||||
"Share": "\\\\messv02ecc1.ec.local\\EC_EDA",
|
"Share": "\\\\messv02ecc1.ec.local\\EC_EDA",
|
||||||
"User": "EC\\ECEDASvc",
|
"User": "EC\\ECEDASvc",
|
||||||
|
|||||||
@ -4,14 +4,8 @@
|
|||||||
"BA-Extract.Staging.v2_43_0-DEP08SIHTRPLC": "dotnet test --runtime win-x64 --no-build --filter \"FullyQualifiedName~Adaptation._Tests.Extract.Staging.v2_43_0 & ClassName~DEP08SIHTRPLC\" -- TestRunParameters.Parameter(name=\\\"WaitFor\\\", value=\\\"Debugger.IsAttached\\\")",
|
"BA-Extract.Staging.v2_43_0-DEP08SIHTRPLC": "dotnet test --runtime win-x64 --no-build --filter \"FullyQualifiedName~Adaptation._Tests.Extract.Staging.v2_43_0 & ClassName~DEP08SIHTRPLC\" -- TestRunParameters.Parameter(name=\\\"WaitFor\\\", value=\\\"Debugger.IsAttached\\\")",
|
||||||
"BB-Extract.Staging.v2_43_0-DEP08SIHTRPLC-Staging__v2_43_0__DEP08SIHTRPLC__ZipFilesByDate": "dotnet test --runtime win-x64 --no-build --filter \"FullyQualifiedName~Adaptation._Tests.Extract.Staging.v2_43_0 & ClassName~DEP08SIHTRPLC & Name~Staging__v2_43_0__DEP08SIHTRPLC__ZipFilesByDate\" -- TestRunParameters.Parameter(name=\\\"WaitFor\\\", value=\\\"Debugger.IsAttached\\\")",
|
"BB-Extract.Staging.v2_43_0-DEP08SIHTRPLC-Staging__v2_43_0__DEP08SIHTRPLC__ZipFilesByDate": "dotnet test --runtime win-x64 --no-build --filter \"FullyQualifiedName~Adaptation._Tests.Extract.Staging.v2_43_0 & ClassName~DEP08SIHTRPLC & Name~Staging__v2_43_0__DEP08SIHTRPLC__ZipFilesByDate\" -- TestRunParameters.Parameter(name=\\\"WaitFor\\\", value=\\\"Debugger.IsAttached\\\")",
|
||||||
"Alpha": "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
|
"Alpha": "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
|
||||||
"nuget-clear": "dotnet nuget locals all --clear",
|
"kanbn.board": "kanbn board",
|
||||||
"build": "dotnet build --runtime win-x64 --self-contained",
|
"kanbn.board.json": "kanbn board -j > .kanbn/board.json",
|
||||||
"build-Package-Management": "dotnet build --runtime win-x64 --self-contained --source https://packagemanagement.eu.infineon.com:4430/api/v2/",
|
|
||||||
"build-nuget-And-Package-Management": "dotnet build --runtime win-x64 --self-contained --source https://api.nuget.org/v3/index.json --source https://packagemanagement.eu.infineon.com:4430/api/v2/",
|
|
||||||
"build-All-Sources": "dotnet build --runtime win-x64 --self-contained --source https://api.nuget.org/v3/index.json --source https://packagemanagement.eu.infineon.com:4430/api/v2/ --source https://tfs.intra.infineon.com/tfs/ManufacturingIT/_packaging/eaf/nuget/v3/index.json --source http://192.168.0.73:5002/v3/index.json",
|
|
||||||
"dotnet-format": "dotnet format --report .vscode --verbosity detailed --severity warn",
|
|
||||||
"MSBuild": "\"C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe\" /target:Build /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 /detailedsummary /consoleloggerparameters:PerformanceSummary;ErrorsOnly; /property:Configuration=Debug;TargetFrameworkVersion=v4.8 ../DEP08SIHTRPLC.csproj",
|
|
||||||
"pull": "git pull",
|
|
||||||
"garbage-collect": "git gc"
|
"garbage-collect": "git gc"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -39,6 +39,12 @@
|
|||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(TargetFrameworkVersion)' == 'v4.8' ">
|
||||||
|
<DefineConstants>NETFRAMEWORK;NET20;NET35;NET40;NET45;NET451;NET452;NET46;NET461;NET462;NET47;NET471;NET472;NET48;$(DefineConstants)</DefineConstants>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<RuntimeHostConfigurationOption Include="AssemblyName" Value="DEP08SIHTRPLC" />
|
||||||
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
@ -123,6 +129,7 @@
|
|||||||
<Compile Include="Adaptation\Shared\Metrology\WS.Results.cs" />
|
<Compile Include="Adaptation\Shared\Metrology\WS.Results.cs" />
|
||||||
<Compile Include="Adaptation\Shared\ParameterType.cs" />
|
<Compile Include="Adaptation\Shared\ParameterType.cs" />
|
||||||
<Compile Include="Adaptation\Shared\ProcessDataStandardFormat.cs" />
|
<Compile Include="Adaptation\Shared\ProcessDataStandardFormat.cs" />
|
||||||
|
<Compile Include="Adaptation\Shared\ProcessDataStandardFormatMapping.cs" />
|
||||||
<Compile Include="Adaptation\Shared\Properties\IDescription.cs" />
|
<Compile Include="Adaptation\Shared\Properties\IDescription.cs" />
|
||||||
<Compile Include="Adaptation\Shared\Properties\IFileRead.cs" />
|
<Compile Include="Adaptation\Shared\Properties\IFileRead.cs" />
|
||||||
<Compile Include="Adaptation\Shared\Properties\ILogistics.cs" />
|
<Compile Include="Adaptation\Shared\Properties\ILogistics.cs" />
|
||||||
@ -144,13 +151,13 @@
|
|||||||
<Version>4.7.0</Version>
|
<Version>4.7.0</Version>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Infineon.EAF.Runtime">
|
<PackageReference Include="Infineon.EAF.Runtime">
|
||||||
<Version>2.47.0</Version>
|
<Version>2.60.0</Version>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Instances">
|
<PackageReference Include="Instances">
|
||||||
<Version>1.6.1</Version>
|
<Version>1.6.1</Version>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="System.Text.Json">
|
<PackageReference Include="System.Text.Json">
|
||||||
<Version>6.0.3</Version>
|
<Version>8.0.5</Version>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Tesseract">
|
<PackageReference Include="Tesseract">
|
||||||
<Version>4.1.1</Version>
|
<Version>4.1.1</Version>
|
||||||
|
|||||||
@ -37,7 +37,7 @@ public partial class FileRead : FileReaderHandler, ISMTP
|
|||||||
private FilePathGenerator _FilePathGeneratorForTarget;
|
private FilePathGenerator _FilePathGeneratorForTarget;
|
||||||
private readonly List<EquipmentParameter> _EquipmentParameters;
|
private readonly List<EquipmentParameter> _EquipmentParameters;
|
||||||
private static readonly Dictionary<string, List<long>> _DummyRuns;
|
private static readonly Dictionary<string, List<long>> _DummyRuns;
|
||||||
private static readonly Dictionary<long, List<string>> _StaticRuns;
|
private static readonly Dictionary<long, List<Adaptation.Shared.Metrology.WS.Results>> _StaticRuns;
|
||||||
|
|
||||||
static FileRead()
|
static FileRead()
|
||||||
{
|
{
|
||||||
@ -165,7 +165,7 @@ public partial class FileRead : FileReaderHandler, ISMTP
|
|||||||
Equipment.SelfDescriptionBuilder.AddParameterTypeDefinition(structuredType);
|
Equipment.SelfDescriptionBuilder.AddParameterTypeDefinition(structuredType);
|
||||||
}
|
}
|
||||||
if (!parameterTypeDefinitions.ContainsKey(jsonProperty.Value.ValueKind))
|
if (!parameterTypeDefinitions.ContainsKey(jsonProperty.Value.ValueKind))
|
||||||
throw new Exception(string.Concat('{', jsonProperty.Value.ValueKind, "} is not mapped!"));
|
throw new Exception(string.Concat('<', jsonProperty.Name, "> {", jsonProperty.Value.ValueKind, "} is not mapped!"));
|
||||||
}
|
}
|
||||||
foreach (JsonProperty jsonProperty in jsonProperties)
|
foreach (JsonProperty jsonProperty in jsonProperties)
|
||||||
{
|
{
|
||||||
@ -197,7 +197,7 @@ public partial class FileRead : FileReaderHandler, ISMTP
|
|||||||
FileConnectorConfiguration fileConnectorConfiguration = Mapper.Map(Configuration);
|
FileConnectorConfiguration fileConnectorConfiguration = Mapper.Map(Configuration);
|
||||||
string parameterizedModelObjectDefinitionType = methodBase.DeclaringType.FullName;
|
string parameterizedModelObjectDefinitionType = methodBase.DeclaringType.FullName;
|
||||||
IList<ModelObjectParameterDefinition> modelObjectParameters = Mapper.Map(ConfiguredParameters);
|
IList<ModelObjectParameterDefinition> modelObjectParameters = Mapper.Map(ConfiguredParameters);
|
||||||
_FileRead = CellInstanceConnectionName.Get(this, FileParameter, cellInstanceName, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, _DummyRuns, _StaticRuns, _UseCyclicalForDescription, isEAFHosted: true);
|
_FileRead = CellInstanceConnectionName.Get(this, FileParameter, cellInstanceName, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, _DummyRuns, _StaticRuns, _UseCyclicalForDescription, connectionCount: null);
|
||||||
if (_FileRead.IsEvent)
|
if (_FileRead.IsEvent)
|
||||||
AddParameterRangeAndEvent();
|
AddParameterRangeAndEvent();
|
||||||
}
|
}
|
||||||
@ -338,7 +338,7 @@ public partial class FileRead : FileReaderHandler, ISMTP
|
|||||||
if (modelObjectParameterDefinitionJsonElement.ValueKind != JsonValueKind.Array)
|
if (modelObjectParameterDefinitionJsonElement.ValueKind != JsonValueKind.Array)
|
||||||
throw new Exception();
|
throw new Exception();
|
||||||
IList<ModelObjectParameterDefinition> modelObjectParameters = JsonSerializer.Deserialize<IList<ModelObjectParameterDefinition>>(modelObjectParameterDefinitionJsonElement.ToString(), jsonSerializerOptions);
|
IList<ModelObjectParameterDefinition> modelObjectParameters = JsonSerializer.Deserialize<IList<ModelObjectParameterDefinition>>(modelObjectParameterDefinitionJsonElement.ToString(), jsonSerializerOptions);
|
||||||
_FileRead = CellInstanceConnectionName.Get(this, FileParameter, cellInstanceName, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, _DummyRuns, _StaticRuns, _UseCyclicalForDescription, isEAFHosted: false);
|
_FileRead = CellInstanceConnectionName.Get(this, FileParameter, cellInstanceName, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, _DummyRuns, _StaticRuns, _UseCyclicalForDescription, connectionCount: null);
|
||||||
results = _FileRead.ReExtract();
|
results = _FileRead.ReExtract();
|
||||||
if (results?.Item2 is null)
|
if (results?.Item2 is null)
|
||||||
throw new Exception();
|
throw new Exception();
|
||||||
|
|||||||
@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
|||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("2.47.5.0")]
|
[assembly: AssemblyVersion("2.60.0.0")]
|
||||||
[assembly: AssemblyFileVersion("2.47.5.0")]
|
[assembly: AssemblyFileVersion("2.60.0.0")]
|
||||||
|
|||||||
Reference in New Issue
Block a user