diff --git a/.groovy b/.groovy
new file mode 100644
index 0000000..dd33f0d
--- /dev/null
+++ b/.groovy
@@ -0,0 +1,172 @@
+#!/usr/bin/env groovy
+/* groovylint-disable CompileStatic, ConsecutiveStringConcatenation, DuplicateNumberLiteral, DuplicateStringLiteral, LineLength, NestedBlockDepth, NoDef, VariableTypeRequired */
+import groovy.transform.Field
+
+@Field String _DDrive = 'D:/'
+@Field String _AssemblyName = '...'
+@Field String _TargetLocation = '...'
+@Field String _GitCommitSeven = '...'
+@Field String _GitName = 'DEP08SIASM'
+@Field String _TestProjectDirectory = 'Adaptation'
+@Field String _AgentStaging = 'mestsa07ec-ecmeseaf'
+@Field String _DDriveNet = "${_DDrive}Framework4.8"
+@Field String _AgentProduction = 'messa08ec-ecmeseaf'
+@Field String _AgentDevelopment = 'mestsa003-mesedasvc'
+@Field String _ProgramFilesDotnet = 'C:/Program Files/dotnet/dotnet.exe'
+@Field String _ProgramFilesMSBuild = 'C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe'
+
+pipeline {
+ agent {
+ label env.JENKINS_ENVIRONMENT == 'Development' ? _AgentDevelopment : env.JENKINS_ENVIRONMENT == 'Staging' ? _AgentStaging : env.JENKINS_ENVIRONMENT == 'Production' ? _AgentProduction : 'Else'
+ }
+ parameters {
+ string(name: 'GIT_SERVER', defaultValue: env.JENKINS_ENVIRONMENT == 'Development' ? 'mestsa003.infineon.com' : 'mestsa07ec.ec.local', description: 'git server')
+ string(name: 'DEFAULT_FILE_SERVER', defaultValue: env.JENKINS_ENVIRONMENT == 'Development' ? 'messv02ecc1_ec_local' : 'messv02ecc1.ec.local', description: 'Default file server...')
+ }
+ stages {
+ stage('Git') {
+ steps {
+ bat(returnStatus: true, script: 'git init')
+ bat(returnStatus: true, script: 'git remote add origin \\\\' + params.GIT_SERVER + '\\Git\\' + _GitName + '.git')
+ bat(returnStatus: true, script: 'git pull origin master')
+ }
+ }
+ stage('Setup') {
+ steps {
+ script {
+ _AssemblyName = "${env.JOB_NAME}"
+ _GitCommitSeven = '1234567'
+ // _GitCommitSeven = env.GIT_COMMIT.substring(0, 7)
+ def files = findFiles(glob: '*.csproj')
+ if (files.length != 1) {
+ error("Build failed because couldn't find a *.csproj file")
+ }
+ echo """
+ ${files[0].name}
+ ${files[0].path}
+ ${files[0].directory}
+ ${files[0].length}
+ ${files[0].lastModified}
+ """
+ _AssemblyName = files[0].name.split('[.]csproj')[0]
+ _TargetLocation = "\\\\${params.DEFAULT_FILE_SERVER}\\EC_EAFRepository\\${env.JENKINS_ENVIRONMENT}\\DeploymentStorage\\Adaptation_${_AssemblyName}"
+ }
+ }
+ }
+ stage('Info') {
+ steps {
+ echo "_AssemblyName ${_AssemblyName}" // ...
+ echo "BUILD_NUMBER ${env.BUILD_NUMBER}" // 11
+ echo "DEFAULT_FILE_SERVER ${params.DEFAULT_FILE_SERVER}" // 11
+ echo "GIT_BRANCH ${env.GIT_BRANCH}" // origin/master
+ echo "GIT_COMMIT ${env.GIT_COMMIT}" // 73b814069f2cf0173a62a8228815a9bc9ba93c41
+ echo "GIT_SERVER ${params.GIT_SERVER}" // ...
+ echo "GIT_URL ${env.GIT_URL}" // D:\ProgramData\Git\....git
+ echo "JENKINS_ENVIRONMENT ${env.JENKINS_ENVIRONMENT}" // 11
+ echo "JENKINS_URL ${env.JENKINS_URL}" // http://localhost:8080/
+ echo "JOB_NAME ${env.JOB_NAME}" // ...
+ echo "WORKSPACE ${env.WORKSPACE}" // D:\.jenkins\_\...
+ }
+ }
+ // stage('Restore') {
+ // steps {
+ // bat(returnStatus: true, script: 'dotnet --info')
+ // }
+ // }
+ stage('Safe storage of app secrets') {
+ steps {
+ dir(_TestProjectDirectory) {
+ bat(returnStatus: true, script: '"' + _ProgramFilesDotnet + '" ' +
+ 'user-secrets init')
+ bat(returnStatus: true, script: '"' + _ProgramFilesDotnet + '" ' +
+ 'user-secrets set "BuildNumber" "' + env.BUILD_NUMBER + '"')
+ bat(returnStatus: true, script: '"' + _ProgramFilesDotnet + '" ' +
+ 'user-secrets set "GitCommitSeven" "' + _GitCommitSeven + '"')
+ bat(returnStatus: true, script: '"' + _ProgramFilesDotnet + '" ' +
+ 'user-secrets set "Server" "' + params.DEFAULT_FILE_SERVER + '"')
+ }
+ }
+ }
+ stage('Core Build') {
+ steps {
+ echo "Build number is ${currentBuild.number}"
+ dir(_TestProjectDirectory) {
+ bat(returnStatus: true, script: '"' + _ProgramFilesDotnet + '" ' +
+ 'build --runtime win-x64 --self-contained --verbosity quiet')
+ }
+ }
+ }
+ // stage('Test') {
+ // options {
+ // timeout(time: 10, unit: 'MINUTES')
+ // }
+ // steps {
+ // dir(_TestProjectDirectory) {
+ // bat('dotnet --info')
+ // }
+ // }
+ // }
+ stage('Framework Build') {
+ steps {
+ echo "Build number is ${currentBuild.number}"
+ bat(returnStatus: true, script: '"' + _ProgramFilesMSBuild + '" ' +
+ '/target:Restore ' +
+ '/detailedsummary ' +
+ '/consoleloggerparameters:PerformanceSummary;ErrorsOnly; ' +
+ '/property:Configuration=Debug;TargetFrameworkVersion=v4.8 ' +
+ _AssemblyName + '.csproj')
+ bat(returnStatus: true, script: '"' + _ProgramFilesMSBuild + '" ' +
+ '/target:Build ' +
+ '/detailedsummary ' +
+ '/consoleloggerparameters:PerformanceSummary;ErrorsOnly; ' +
+ '/property:Configuration=Debug;TargetFrameworkVersion=v4.8 ' +
+ _AssemblyName + '.csproj')
+ }
+ }
+ stage('Commit Id') {
+ steps {
+ dir('bin/Debug') {
+ writeFile file: "${_AssemblyName}.txt", text: "${env.GIT_COMMIT}-${env.BUILD_NUMBER}-${env.GIT_URL}"
+ }
+ }
+ }
+ stage('Package') {
+ steps {
+ fileOperations([fileZipOperation(folderPath: 'bin/Debug', outputFolderPath: "${_DDriveNet}/${_GitCommitSeven}-${env.BUILD_NUMBER}-${env.JOB_NAME}-Debug")])
+ fileOperations([fileCopyOperation(excludes: '', flattenFiles: true, includes: "${_AssemblyName}*", renameFiles: false, sourceCaptureExpression: '', targetLocation: "${_DDriveNet}/${_GitCommitSeven}-${env.BUILD_NUMBER}-${env.JOB_NAME}-Debug", targetNameExpression: '')])
+ }
+ }
+ // stage('Force Fail') {
+ // steps {
+ // error("Build failed because of this and that..")
+ // }
+ // }
+ stage('Copy Files to: file-share') {
+ steps {
+ dir('bin/Debug') {
+ fileOperations([fileCopyOperation(excludes: '', flattenFiles: true, includes: "${_AssemblyName}*.txt", renameFiles: false, sourceCaptureExpression: '', targetLocation: _TargetLocation, targetNameExpression: '')])
+ fileOperations([fileCopyOperation(excludes: '', flattenFiles: true, includes: "${_AssemblyName}*.dll", renameFiles: false, sourceCaptureExpression: '', targetLocation: _TargetLocation, targetNameExpression: '')])
+ fileOperations([fileCopyOperation(excludes: '', flattenFiles: true, includes: "${_AssemblyName}*.exe", renameFiles: false, sourceCaptureExpression: '', targetLocation: _TargetLocation, targetNameExpression: '')])
+ fileOperations([fileCopyOperation(excludes: '', flattenFiles: true, includes: "${_AssemblyName}*.pdb", renameFiles: false, sourceCaptureExpression: '', targetLocation: _TargetLocation, targetNameExpression: '')])
+ }
+ }
+ }
+ }
+ post {
+ always {
+ dir('bin') {
+ deleteDir()
+ }
+ dir('obj') {
+ deleteDir()
+ }
+ dir(_TestProjectDirectory + '/bin') {
+ deleteDir()
+ }
+ dir(_TestProjectDirectory + '/obj') {
+ deleteDir()
+ }
+ // cleanWs()
+ }
+ }
+}
diff --git a/Adaptation/.editorconfig b/Adaptation/.editorconfig
index a3ebdb2..2220133 100644
--- a/Adaptation/.editorconfig
+++ b/Adaptation/.editorconfig
@@ -1,137 +1,10 @@
-# Remove the line below if you want to inherit .editorconfig settings from higher directories
-root = true
-
-# C# files
[*.cs]
-
-#### Core EditorConfig Options ####
-
-# Indentation and spacing
-indent_size = 4
-indent_style = space
-tab_width = 4
-
-# New line preferences
-end_of_line = crlf
-insert_final_newline = false
-
-#### .NET Coding Conventions ####
-
-# Organize usings
-dotnet_separate_import_directive_groups = false
-dotnet_sort_system_directives_first = false
-file_header_template = unset
-
-# this. and Me. preferences
-dotnet_style_qualification_for_event = false:error
-dotnet_style_qualification_for_field = false
-dotnet_style_qualification_for_method = false:error
-dotnet_style_qualification_for_property = false:error
-
-# Language keywords vs BCL types preferences
-dotnet_style_predefined_type_for_locals_parameters_members = true
-dotnet_style_predefined_type_for_member_access = true
-
-# Parentheses preferences
-dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity
-dotnet_style_parentheses_in_other_binary_operators = always_for_clarity
-dotnet_style_parentheses_in_other_operators = never_if_unnecessary
-dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity
-
-# Modifier preferences
-dotnet_style_require_accessibility_modifiers = for_non_interface_members
-
-# Expression-level preferences
-dotnet_style_coalesce_expression = true
-dotnet_style_collection_initializer = true:warning
-dotnet_style_explicit_tuple_names = true:warning
-dotnet_style_namespace_match_folder = true
-dotnet_style_null_propagation = true:warning
-dotnet_style_object_initializer = true:warning
-dotnet_style_operator_placement_when_wrapping = beginning_of_line
-dotnet_style_prefer_auto_properties = true:warning
-dotnet_style_prefer_compound_assignment = true:warning
-dotnet_style_prefer_conditional_expression_over_assignment = false
-dotnet_style_prefer_conditional_expression_over_return = false
-dotnet_style_prefer_inferred_anonymous_type_member_names = true:warning
-dotnet_style_prefer_inferred_tuple_names = true:warning
-dotnet_style_prefer_is_null_check_over_reference_equality_method = true:warning
-dotnet_style_prefer_simplified_boolean_expressions = true:warning
-dotnet_style_prefer_simplified_interpolation = true
-
-# Field preferences
-dotnet_style_readonly_field = true:warning
-
-# Parameter preferences
-dotnet_code_quality_unused_parameters = all
-
-# Suppression preferences
-dotnet_remove_unnecessary_suppression_exclusions = 0
-
-# New line preferences
-dotnet_style_allow_multiple_blank_lines_experimental = false:warning
-dotnet_style_allow_statement_immediately_after_block_experimental = true
-
-#### C# Coding Conventions ####
-
-# var preferences
-csharp_style_var_elsewhere = false:warning
-csharp_style_var_for_built_in_types = false:warning
-csharp_style_var_when_type_is_apparent = false:warning
-
-# Expression-bodied members
-csharp_style_expression_bodied_accessors = when_on_single_line:warning
-csharp_style_expression_bodied_constructors = when_on_single_line:warning
-csharp_style_expression_bodied_indexers = when_on_single_line:warning
-csharp_style_expression_bodied_lambdas = when_on_single_line:warning
-csharp_style_expression_bodied_local_functions = when_on_single_line:warning
-csharp_style_expression_bodied_methods = when_on_single_line:warning
-csharp_style_expression_bodied_operators = when_on_single_line:warning
-csharp_style_expression_bodied_properties = when_on_single_line:warning
-
-# Pattern matching preferences
-csharp_style_pattern_matching_over_as_with_null_check = true:warning
-csharp_style_pattern_matching_over_is_with_cast_check = true:warning
-csharp_style_prefer_not_pattern = true:warning
-csharp_style_prefer_pattern_matching = true:warning
-csharp_style_prefer_switch_expression = true:warning
-
-# Null-checking preferences
-csharp_style_conditional_delegate_call = true
-
-# Modifier preferences
-csharp_prefer_static_local_function = true:warning
-csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async
-
-# Code-block preferences
-csharp_prefer_braces = false
-csharp_prefer_simple_using_statement = true:warning
-csharp_style_namespace_declarations = file_scoped:warning
-
-# Expression-level preferences
-csharp_prefer_simple_default_expression = true:warning
-csharp_style_deconstructed_variable_declaration = false
-csharp_style_implicit_object_creation_when_type_is_apparent = true:warning
-csharp_style_inlined_variable_declaration = false
-csharp_style_pattern_local_over_anonymous_function = true:warning
-csharp_style_prefer_index_operator = false:warning
-csharp_style_prefer_null_check_over_type_check = true
-csharp_style_prefer_range_operator = false:warning
-csharp_style_throw_expression = true
-csharp_style_unused_value_assignment_preference = discard_variable:warning
-csharp_style_unused_value_expression_statement_preference = discard_variable:warning
-
-# 'using' directive preferences
-csharp_using_directive_placement = outside_namespace
-
-# New line preferences
-csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = true
-csharp_style_allow_blank_lines_between_consecutive_braces_experimental = true
-csharp_style_allow_embedded_statements_on_same_line_experimental = true
-
-#### C# Formatting Rules ####
-
-# New line preferences
+csharp_indent_block_contents = true
+csharp_indent_braces = false
+csharp_indent_case_contents = true
+csharp_indent_case_contents_when_block = true
+csharp_indent_labels = one_less_than_current
+csharp_indent_switch_labels = true
csharp_new_line_before_catch = true
csharp_new_line_before_else = true
csharp_new_line_before_finally = true
@@ -139,16 +12,13 @@ csharp_new_line_before_members_in_anonymous_types = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_open_brace = all
csharp_new_line_between_query_expression_clauses = true
-
-# Indentation preferences
-csharp_indent_block_contents = true
-csharp_indent_braces = false
-csharp_indent_case_contents = true
-csharp_indent_case_contents_when_block = true
-csharp_indent_labels = one_less_than_current
-csharp_indent_switch_labels = true
-
-# Space preferences
+csharp_prefer_braces = false
+csharp_prefer_simple_default_expression = true:warning
+csharp_prefer_simple_using_statement = true:warning
+csharp_prefer_static_local_function = true:warning
+csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async
+csharp_preserve_single_line_blocks = true
+csharp_preserve_single_line_statements = false
csharp_space_after_cast = false
csharp_space_after_colon_in_inheritance_clause = true
csharp_space_after_comma = true
@@ -171,166 +41,203 @@ csharp_space_between_method_declaration_name_and_open_parenthesis = false
csharp_space_between_method_declaration_parameter_list_parentheses = false
csharp_space_between_parentheses = false
csharp_space_between_square_brackets = false
-
-# Wrapping preferences
-csharp_preserve_single_line_blocks = true
-csharp_preserve_single_line_statements = false
-
-#### Naming styles ####
-
-# Naming rules
-
-dotnet_naming_rule.interface_should_be_begins_with_i.severity = warning
-dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
-dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
-
-dotnet_naming_rule.types_should_be_pascal_case.severity = warning
-dotnet_naming_rule.types_should_be_pascal_case.symbols = types
-dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
-
-dotnet_naming_rule.private_or_internal_field_should_be_private_of_internal_field.severity = warning
-dotnet_naming_rule.private_or_internal_field_should_be_private_of_internal_field.symbols = private_or_internal_field
-dotnet_naming_rule.private_or_internal_field_should_be_private_of_internal_field.style = private_of_internal_field
-
-dotnet_naming_rule.enum_should_be_pascal_case.severity = warning
-dotnet_naming_rule.enum_should_be_pascal_case.symbols = enum
-dotnet_naming_rule.enum_should_be_pascal_case.style = pascal_case
-
-dotnet_naming_rule.public_or_protected_field_should_be_private_of_internal_field.severity = warning
-dotnet_naming_rule.public_or_protected_field_should_be_private_of_internal_field.symbols = public_or_protected_field
-dotnet_naming_rule.public_or_protected_field_should_be_private_of_internal_field.style = private_of_internal_field
-
-dotnet_naming_rule.class_should_be_pascal_case.severity = warning
-dotnet_naming_rule.class_should_be_pascal_case.symbols = class
-dotnet_naming_rule.class_should_be_pascal_case.style = pascal_case
-
-dotnet_naming_rule.method_should_be_pascal_case.severity = warning
-dotnet_naming_rule.method_should_be_pascal_case.symbols = method
-dotnet_naming_rule.method_should_be_pascal_case.style = pascal_case
-
-dotnet_naming_rule.private_or_internal_static_field_should_be_private_of_internal_field.severity = warning
-dotnet_naming_rule.private_or_internal_static_field_should_be_private_of_internal_field.symbols = private_or_internal_static_field
-dotnet_naming_rule.private_or_internal_static_field_should_be_private_of_internal_field.style = private_of_internal_field
-
-dotnet_naming_rule.static_field_should_be_pascal_case.severity = warning
-dotnet_naming_rule.static_field_should_be_pascal_case.symbols = static_field
-dotnet_naming_rule.static_field_should_be_pascal_case.style = pascal_case
-
-dotnet_naming_rule.property_should_be_pascal_case.severity = warning
-dotnet_naming_rule.property_should_be_pascal_case.symbols = property
-dotnet_naming_rule.property_should_be_pascal_case.style = pascal_case
-
-dotnet_naming_rule.static_method_should_be_pascal_case.severity = warning
-dotnet_naming_rule.static_method_should_be_pascal_case.symbols = static_method
-dotnet_naming_rule.static_method_should_be_pascal_case.style = pascal_case
-
+csharp_style_allow_blank_line_after_colon_in_constructor_initializer_experimental = true
+csharp_style_allow_blank_lines_between_consecutive_braces_experimental = true
+csharp_style_allow_embedded_statements_on_same_line_experimental = true
+csharp_style_conditional_delegate_call = true
+csharp_style_deconstructed_variable_declaration = false
+csharp_style_expression_bodied_accessors = when_on_single_line:warning
+csharp_style_expression_bodied_constructors = when_on_single_line:warning
+csharp_style_expression_bodied_indexers = when_on_single_line:warning
+csharp_style_expression_bodied_lambdas = when_on_single_line:warning
+csharp_style_expression_bodied_local_functions = when_on_single_line:warning
+csharp_style_expression_bodied_methods = when_on_single_line:warning
+csharp_style_expression_bodied_operators = when_on_single_line:warning
+csharp_style_expression_bodied_properties = when_on_single_line:warning
+csharp_style_implicit_object_creation_when_type_is_apparent = true:warning
+csharp_style_inlined_variable_declaration = false
+csharp_style_namespace_declarations = file_scoped:warning
+csharp_style_pattern_local_over_anonymous_function = true:warning
+csharp_style_pattern_matching_over_as_with_null_check = true:warning
+csharp_style_pattern_matching_over_is_with_cast_check = true:warning
+csharp_style_prefer_index_operator = false:warning
+csharp_style_prefer_not_pattern = true:warning
+csharp_style_prefer_null_check_over_type_check = true
+csharp_style_prefer_pattern_matching = true:warning
+csharp_style_prefer_range_operator = false:warning
+csharp_style_prefer_switch_expression = true:warning
+csharp_style_throw_expression = true
+csharp_style_unused_value_assignment_preference = discard_variable:warning
+csharp_style_unused_value_expression_statement_preference = discard_variable:warning
+csharp_style_var_elsewhere = false:warning
+csharp_style_var_for_built_in_types = false:warning
+csharp_style_var_when_type_is_apparent = false:warning
+csharp_using_directive_placement = outside_namespace
+dotnet_code_quality_unused_parameters = all
+dotnet_code_quality_unused_parameters = non_public # IDE0060: Remove unused parameter
+dotnet_code_quality.CAXXXX.api_surface = private, internal
+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.CA1834.severity = warning # CA1834: Consider using 'StringBuilder.Append(char)' when applicable
+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.IDE0005.severity = warning # Using directive is unnecessary
+dotnet_diagnostic.IDE0047.severity = warning # IDE0047: Parentheses can be removed
+dotnet_diagnostic.IDE0060.severity = warning # IDE0060: Remove unused parameter
dotnet_naming_rule.abstract_method_should_be_pascal_case.severity = warning
-dotnet_naming_rule.abstract_method_should_be_pascal_case.symbols = abstract_method
dotnet_naming_rule.abstract_method_should_be_pascal_case.style = pascal_case
-
-dotnet_naming_rule.private_method_should_be_pascal_case.severity = warning
-dotnet_naming_rule.private_method_should_be_pascal_case.symbols = private_method
-dotnet_naming_rule.private_method_should_be_pascal_case.style = pascal_case
-
-dotnet_naming_rule.event_should_be_pascal_case.severity = warning
-dotnet_naming_rule.event_should_be_pascal_case.symbols = event
-dotnet_naming_rule.event_should_be_pascal_case.style = pascal_case
-
+dotnet_naming_rule.abstract_method_should_be_pascal_case.symbols = abstract_method
+dotnet_naming_rule.class_should_be_pascal_case.severity = warning
+dotnet_naming_rule.class_should_be_pascal_case.style = pascal_case
+dotnet_naming_rule.class_should_be_pascal_case.symbols = class
dotnet_naming_rule.delegate_should_be_pascal_case.severity = warning
-dotnet_naming_rule.delegate_should_be_pascal_case.symbols = delegate
dotnet_naming_rule.delegate_should_be_pascal_case.style = pascal_case
-
-dotnet_naming_rule.struct_should_be_pascal_case.severity = warning
-dotnet_naming_rule.struct_should_be_pascal_case.symbols = struct
-dotnet_naming_rule.struct_should_be_pascal_case.style = pascal_case
-
+dotnet_naming_rule.delegate_should_be_pascal_case.symbols = delegate
+dotnet_naming_rule.enum_should_be_pascal_case.severity = warning
+dotnet_naming_rule.enum_should_be_pascal_case.style = pascal_case
+dotnet_naming_rule.enum_should_be_pascal_case.symbols = enum
+dotnet_naming_rule.event_should_be_pascal_case.severity = warning
+dotnet_naming_rule.event_should_be_pascal_case.style = pascal_case
+dotnet_naming_rule.event_should_be_pascal_case.symbols = event
+dotnet_naming_rule.interface_should_be_begins_with_i.severity = warning
+dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
+dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
+dotnet_naming_rule.method_should_be_pascal_case.severity = warning
+dotnet_naming_rule.method_should_be_pascal_case.style = pascal_case
+dotnet_naming_rule.method_should_be_pascal_case.symbols = method
dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = warning
-dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
-
-# Symbol specifications
-
-dotnet_naming_symbols.class.applicable_kinds = class
-dotnet_naming_symbols.class.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
-dotnet_naming_symbols.class.required_modifiers =
-
-dotnet_naming_symbols.interface.applicable_kinds = interface
-dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
-dotnet_naming_symbols.interface.required_modifiers =
-
-dotnet_naming_symbols.struct.applicable_kinds = struct
-dotnet_naming_symbols.struct.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
-dotnet_naming_symbols.struct.required_modifiers =
-
-dotnet_naming_symbols.enum.applicable_kinds = enum
-dotnet_naming_symbols.enum.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
-dotnet_naming_symbols.enum.required_modifiers =
-
-dotnet_naming_symbols.delegate.applicable_kinds = delegate
-dotnet_naming_symbols.delegate.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
-dotnet_naming_symbols.delegate.required_modifiers =
-
-dotnet_naming_symbols.event.applicable_kinds = event
-dotnet_naming_symbols.event.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
-dotnet_naming_symbols.event.required_modifiers =
-
-dotnet_naming_symbols.method.applicable_kinds = method
-dotnet_naming_symbols.method.applicable_accessibilities = public
-dotnet_naming_symbols.method.required_modifiers =
-
-dotnet_naming_symbols.private_method.applicable_kinds = method
-dotnet_naming_symbols.private_method.applicable_accessibilities = private
-dotnet_naming_symbols.private_method.required_modifiers =
-
-dotnet_naming_symbols.abstract_method.applicable_kinds = method
-dotnet_naming_symbols.abstract_method.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
-dotnet_naming_symbols.abstract_method.required_modifiers = abstract
-
-dotnet_naming_symbols.static_method.applicable_kinds = method
-dotnet_naming_symbols.static_method.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
-dotnet_naming_symbols.static_method.required_modifiers = static
-
-dotnet_naming_symbols.property.applicable_kinds = property
-dotnet_naming_symbols.property.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
-dotnet_naming_symbols.property.required_modifiers =
-
-dotnet_naming_symbols.public_or_protected_field.applicable_kinds = field
-dotnet_naming_symbols.public_or_protected_field.applicable_accessibilities = public, protected
-dotnet_naming_symbols.public_or_protected_field.required_modifiers =
-
-dotnet_naming_symbols.static_field.applicable_kinds = field
-dotnet_naming_symbols.static_field.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
-dotnet_naming_symbols.static_field.required_modifiers = static
-
-dotnet_naming_symbols.private_or_internal_field.applicable_kinds = field
-dotnet_naming_symbols.private_or_internal_field.applicable_accessibilities = internal, private, private_protected
-dotnet_naming_symbols.private_or_internal_field.required_modifiers =
-
-dotnet_naming_symbols.private_or_internal_static_field.applicable_kinds = field
-dotnet_naming_symbols.private_or_internal_static_field.applicable_accessibilities = internal, private, private_protected
-dotnet_naming_symbols.private_or_internal_static_field.required_modifiers = static
-
-dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
-dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
-dotnet_naming_symbols.types.required_modifiers =
-
-dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
-dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
-dotnet_naming_symbols.non_field_members.required_modifiers =
-
-# Naming styles
-
-dotnet_naming_style.pascal_case.required_prefix =
-dotnet_naming_style.pascal_case.required_suffix =
-dotnet_naming_style.pascal_case.word_separator =
-dotnet_naming_style.pascal_case.capitalization = pascal_case
-
+dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
+dotnet_naming_rule.private_method_should_be_pascal_case.severity = warning
+dotnet_naming_rule.private_method_should_be_pascal_case.style = pascal_case
+dotnet_naming_rule.private_method_should_be_pascal_case.symbols = private_method
+dotnet_naming_rule.private_or_internal_field_should_be_private_of_internal_field.severity = warning
+dotnet_naming_rule.private_or_internal_field_should_be_private_of_internal_field.style = private_of_internal_field
+dotnet_naming_rule.private_or_internal_field_should_be_private_of_internal_field.symbols = private_or_internal_field
+dotnet_naming_rule.private_or_internal_static_field_should_be_private_of_internal_field.severity = warning
+dotnet_naming_rule.private_or_internal_static_field_should_be_private_of_internal_field.style = private_of_internal_field
+dotnet_naming_rule.private_or_internal_static_field_should_be_private_of_internal_field.symbols = private_or_internal_static_field
+dotnet_naming_rule.property_should_be_pascal_case.severity = warning
+dotnet_naming_rule.property_should_be_pascal_case.style = pascal_case
+dotnet_naming_rule.property_should_be_pascal_case.symbols = property
+dotnet_naming_rule.public_or_protected_field_should_be_private_of_internal_field.severity = warning
+dotnet_naming_rule.public_or_protected_field_should_be_private_of_internal_field.style = private_of_internal_field
+dotnet_naming_rule.public_or_protected_field_should_be_private_of_internal_field.symbols = public_or_protected_field
+dotnet_naming_rule.static_field_should_be_pascal_case.severity = warning
+dotnet_naming_rule.static_field_should_be_pascal_case.style = pascal_case
+dotnet_naming_rule.static_field_should_be_pascal_case.symbols = static_field
+dotnet_naming_rule.static_method_should_be_pascal_case.severity = warning
+dotnet_naming_rule.static_method_should_be_pascal_case.style = pascal_case
+dotnet_naming_rule.static_method_should_be_pascal_case.symbols = static_method
+dotnet_naming_rule.struct_should_be_pascal_case.severity = warning
+dotnet_naming_rule.struct_should_be_pascal_case.style = pascal_case
+dotnet_naming_rule.struct_should_be_pascal_case.symbols = struct
+dotnet_naming_rule.types_should_be_pascal_case.severity = warning
+dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
+dotnet_naming_rule.types_should_be_pascal_case.symbols = types
+dotnet_naming_style.begins_with_i.capitalization = pascal_case
dotnet_naming_style.begins_with_i.required_prefix = I
dotnet_naming_style.begins_with_i.required_suffix =
dotnet_naming_style.begins_with_i.word_separator =
-dotnet_naming_style.begins_with_i.capitalization = pascal_case
-
+dotnet_naming_style.pascal_case.capitalization = pascal_case
+dotnet_naming_style.pascal_case.required_prefix =
+dotnet_naming_style.pascal_case.required_suffix =
+dotnet_naming_style.pascal_case.word_separator =
+dotnet_naming_style.private_of_internal_field.capitalization = pascal_case
dotnet_naming_style.private_of_internal_field.required_prefix = _
dotnet_naming_style.private_of_internal_field.required_suffix =
dotnet_naming_style.private_of_internal_field.word_separator =
-dotnet_naming_style.private_of_internal_field.capitalization = pascal_case
+dotnet_naming_symbols.abstract_method.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
+dotnet_naming_symbols.abstract_method.applicable_kinds = method
+dotnet_naming_symbols.abstract_method.required_modifiers = abstract
+dotnet_naming_symbols.class.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
+dotnet_naming_symbols.class.applicable_kinds = class
+dotnet_naming_symbols.class.required_modifiers =
+dotnet_naming_symbols.delegate.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
+dotnet_naming_symbols.delegate.applicable_kinds = delegate
+dotnet_naming_symbols.delegate.required_modifiers =
+dotnet_naming_symbols.enum.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
+dotnet_naming_symbols.enum.applicable_kinds = enum
+dotnet_naming_symbols.enum.required_modifiers =
+dotnet_naming_symbols.event.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
+dotnet_naming_symbols.event.applicable_kinds = event
+dotnet_naming_symbols.event.required_modifiers =
+dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
+dotnet_naming_symbols.interface.applicable_kinds = interface
+dotnet_naming_symbols.interface.required_modifiers =
+dotnet_naming_symbols.method.applicable_accessibilities = public
+dotnet_naming_symbols.method.applicable_kinds = method
+dotnet_naming_symbols.method.required_modifiers =
+dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
+dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
+dotnet_naming_symbols.non_field_members.required_modifiers =
+dotnet_naming_symbols.private_method.applicable_accessibilities = private
+dotnet_naming_symbols.private_method.applicable_kinds = method
+dotnet_naming_symbols.private_method.required_modifiers =
+dotnet_naming_symbols.private_or_internal_field.applicable_accessibilities = internal, private, private_protected
+dotnet_naming_symbols.private_or_internal_field.applicable_kinds = field
+dotnet_naming_symbols.private_or_internal_field.required_modifiers =
+dotnet_naming_symbols.private_or_internal_static_field.applicable_accessibilities = internal, private, private_protected
+dotnet_naming_symbols.private_or_internal_static_field.applicable_kinds = field
+dotnet_naming_symbols.private_or_internal_static_field.required_modifiers = static
+dotnet_naming_symbols.property.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
+dotnet_naming_symbols.property.applicable_kinds = property
+dotnet_naming_symbols.property.required_modifiers =
+dotnet_naming_symbols.public_or_protected_field.applicable_accessibilities = public, protected
+dotnet_naming_symbols.public_or_protected_field.applicable_kinds = field
+dotnet_naming_symbols.public_or_protected_field.required_modifiers =
+dotnet_naming_symbols.static_field.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
+dotnet_naming_symbols.static_field.applicable_kinds = field
+dotnet_naming_symbols.static_field.required_modifiers = static
+dotnet_naming_symbols.static_method.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
+dotnet_naming_symbols.static_method.applicable_kinds = method
+dotnet_naming_symbols.static_method.required_modifiers = static
+dotnet_naming_symbols.struct.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
+dotnet_naming_symbols.struct.applicable_kinds = struct
+dotnet_naming_symbols.struct.required_modifiers =
+dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
+dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
+dotnet_naming_symbols.types.required_modifiers =
+dotnet_remove_unnecessary_suppression_exclusions = 0
+dotnet_separate_import_directive_groups = false
+dotnet_sort_system_directives_first = false
+dotnet_style_allow_multiple_blank_lines_experimental = false:warning
+dotnet_style_allow_statement_immediately_after_block_experimental = true
+dotnet_style_coalesce_expression = true
+dotnet_style_collection_initializer = true:warning
+dotnet_style_explicit_tuple_names = true:warning
+dotnet_style_namespace_match_folder = true
+dotnet_style_null_propagation = true:warning
+dotnet_style_object_initializer = true:warning
+dotnet_style_operator_placement_when_wrapping = beginning_of_line
+dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity
+dotnet_style_parentheses_in_other_binary_operators = always_for_clarity
+dotnet_style_parentheses_in_other_operators = never_if_unnecessary
+dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity
+dotnet_style_predefined_type_for_locals_parameters_members = true
+dotnet_style_predefined_type_for_member_access = true
+dotnet_style_prefer_auto_properties = true:warning
+dotnet_style_prefer_compound_assignment = true:warning
+dotnet_style_prefer_conditional_expression_over_assignment = false
+dotnet_style_prefer_conditional_expression_over_return = false
+dotnet_style_prefer_inferred_anonymous_type_member_names = true:warning
+dotnet_style_prefer_inferred_tuple_names = true:warning
+dotnet_style_prefer_is_null_check_over_reference_equality_method = true:warning
+dotnet_style_prefer_simplified_boolean_expressions = true:warning
+dotnet_style_prefer_simplified_interpolation = true
+dotnet_style_qualification_for_event = false:error
+dotnet_style_qualification_for_field = false
+dotnet_style_qualification_for_method = false:error
+dotnet_style_qualification_for_property = false:error
+dotnet_style_readonly_field = true:warning
+dotnet_style_require_accessibility_modifiers = for_non_interface_members
+end_of_line = crlf
+file_header_template = unset
+indent_size = 4
+indent_style = space
+insert_final_newline = false
+root = true
+tab_width = 4
+# https://docs.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1822
+# https://github.com/dotnet/aspnetcore/blob/main/.editorconfig
+# https://github.com/dotnet/project-system/blob/main/.editorconfig
\ No newline at end of file
diff --git a/Adaptation/.vscode/settings.json b/Adaptation/.vscode/settings.json
index bbb2c04..94fe746 100644
--- a/Adaptation/.vscode/settings.json
+++ b/Adaptation/.vscode/settings.json
@@ -71,5 +71,6 @@
"titleBar.inactiveBackground": "#5684ce99",
"titleBar.inactiveForeground": "#e7e7e799"
},
- "peacock.color": "#5684ce"
+ "peacock.color": "#5684ce",
+ "cSpell.enabled": false
}
\ No newline at end of file
diff --git a/Adaptation/DEP08SIASM.Tests.csproj b/Adaptation/DEP08SIASM.Tests.csproj
index c6e6656..83f39da 100644
--- a/Adaptation/DEP08SIASM.Tests.csproj
+++ b/Adaptation/DEP08SIASM.Tests.csproj
@@ -6,22 +6,13 @@
SAK
- enable
+ disable
+ false
10.0
disable
- Exe
win-x64
net6.0
-
- Infineon.Mesa.EAF.DEP08SIASM
- false
- 6.0.0.0
- Mike Phares
- Phares
- true
- snupkg
-
trx
../../../../DEP08SIASM/05_TestResults/TestResults
@@ -43,35 +34,38 @@
-
+
-
+
-
-
+
+
-
-
+
+
-
+
-
-
-
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
-
-
+
+
diff --git a/Adaptation/Eaf/Management/ConfigurationData/CellAutomation/ModelObjectParameterDefinition.cs b/Adaptation/Eaf/Management/ConfigurationData/CellAutomation/ModelObjectParameterDefinition.cs
index 5c0bd65..5742acc 100644
--- a/Adaptation/Eaf/Management/ConfigurationData/CellAutomation/ModelObjectParameterDefinition.cs
+++ b/Adaptation/Eaf/Management/ConfigurationData/CellAutomation/ModelObjectParameterDefinition.cs
@@ -2,7 +2,7 @@
namespace Adaptation.Eaf.Management.ConfigurationData.CellAutomation;
-[System.Runtime.Serialization.DataContractAttribute(IsReference = true)]
+[System.Runtime.Serialization.DataContract(IsReference = true)]
public class ModelObjectParameterDefinition : IConfigurationObject
{
@@ -12,15 +12,15 @@ public class ModelObjectParameterDefinition : IConfigurationObject
public ModelObjectParameterDefinition(string name, ModelObjectParameterType valueType, object defaultValue) { }
public ModelObjectParameterDefinition(string name, Type enumType, object defaultValue) { }
- [System.Runtime.Serialization.DataMemberAttribute]
+ [System.Runtime.Serialization.DataMember]
public virtual long Id { get; set; }
- [System.Runtime.Serialization.DataMemberAttribute]
+ [System.Runtime.Serialization.DataMember]
public virtual string Name { get; set; }
- [System.Runtime.Serialization.DataMemberAttribute]
+ [System.Runtime.Serialization.DataMember]
public virtual string Value { get; set; }
- [System.Runtime.Serialization.DataMemberAttribute]
+ [System.Runtime.Serialization.DataMember]
public virtual ModelObjectParameterType ValueType { get; set; }
- [System.Runtime.Serialization.DataMemberAttribute]
+ [System.Runtime.Serialization.DataMember]
public virtual string EnumType { get; set; }
public virtual ModelObjectParameterDefinition Clone() => null;
diff --git a/Adaptation/Eaf/Management/ConfigurationData/Semiconductor/CellInstances/SecsConnectionConfiguration.cs b/Adaptation/Eaf/Management/ConfigurationData/Semiconductor/CellInstances/SecsConnectionConfiguration.cs
index bea5a40..b8c1bd3 100644
--- a/Adaptation/Eaf/Management/ConfigurationData/Semiconductor/CellInstances/SecsConnectionConfiguration.cs
+++ b/Adaptation/Eaf/Management/ConfigurationData/Semiconductor/CellInstances/SecsConnectionConfiguration.cs
@@ -3,41 +3,41 @@ using System;
namespace Adaptation.Eaf.Management.ConfigurationData.Semiconductor.CellInstances;
-[System.Runtime.Serialization.DataContractAttribute]
+[System.Runtime.Serialization.DataContract]
public class SecsConnectionConfiguration
{
public SecsConnectionConfiguration() { }
- [System.Runtime.Serialization.DataMemberAttribute]
+ [System.Runtime.Serialization.DataMember]
public virtual TimeSpan T6HsmsControlMessage { get; set; }
- [System.Runtime.Serialization.DataMemberAttribute]
+ [System.Runtime.Serialization.DataMember]
public virtual TimeSpan T5ConnectionSeperation { get; set; }
- [System.Runtime.Serialization.DataMemberAttribute]
+ [System.Runtime.Serialization.DataMember]
public virtual TimeSpan T4InterBlock { get; set; }
- [System.Runtime.Serialization.DataMemberAttribute]
+ [System.Runtime.Serialization.DataMember]
public virtual TimeSpan T3MessageReply { get; set; }
- [System.Runtime.Serialization.DataMemberAttribute]
+ [System.Runtime.Serialization.DataMember]
public virtual TimeSpan T2Protocol { get; set; }
- [System.Runtime.Serialization.DataMemberAttribute]
+ [System.Runtime.Serialization.DataMember]
public virtual TimeSpan T1InterCharacter { get; set; }
- [System.Runtime.Serialization.DataMemberAttribute]
+ [System.Runtime.Serialization.DataMember]
public virtual SerialBaudRate? BaudRate { get; set; }
- [System.Runtime.Serialization.DataMemberAttribute]
+ [System.Runtime.Serialization.DataMember]
public virtual SecsTransportType? PortType { get; set; }
- [System.Runtime.Serialization.DataMemberAttribute]
+ [System.Runtime.Serialization.DataMember]
public virtual long? Port { get; set; }
- [System.Runtime.Serialization.DataMemberAttribute]
+ [System.Runtime.Serialization.DataMember]
public virtual TimeSpan LinkTestTimer { get; set; }
- [System.Runtime.Serialization.DataMemberAttribute]
+ [System.Runtime.Serialization.DataMember]
public virtual string Host { get; set; }
- [System.Runtime.Serialization.DataMemberAttribute]
+ [System.Runtime.Serialization.DataMember]
public virtual long? DeviceId { get; set; }
- [System.Runtime.Serialization.DataMemberAttribute]
+ [System.Runtime.Serialization.DataMember]
public virtual HsmsSessionMode? SessionMode { get; set; }
- [System.Runtime.Serialization.DataMemberAttribute]
+ [System.Runtime.Serialization.DataMember]
public virtual HsmsConnectionMode? ConnectionMode { get; set; }
- [System.Runtime.Serialization.DataMemberAttribute]
+ [System.Runtime.Serialization.DataMember]
public virtual TimeSpan T7ConnectionIdle { get; set; }
- [System.Runtime.Serialization.DataMemberAttribute]
+ [System.Runtime.Serialization.DataMember]
public virtual TimeSpan T8NetworkIntercharacter { get; set; }
}
\ No newline at end of file
diff --git a/Adaptation/FileHandlers/Archive/FileRead.cs b/Adaptation/FileHandlers/Archive/FileRead.cs
deleted file mode 100644
index a502d10..0000000
--- a/Adaptation/FileHandlers/Archive/FileRead.cs
+++ /dev/null
@@ -1,139 +0,0 @@
-using Adaptation.Eaf.Management.ConfigurationData.CellAutomation;
-using Adaptation.Ifx.Eaf.EquipmentConnector.File.Configuration;
-using Adaptation.Shared;
-using Adaptation.Shared.Duplicator;
-using Adaptation.Shared.Methods;
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.IO;
-using System.Linq;
-using System.Text.Json;
-
-namespace Adaptation.FileHandlers.Archive;
-
-public class FileRead : Shared.FileRead, IFileRead
-{
-
- public FileRead(ISMTP smtp, Dictionary fileParameter, string cellInstanceName, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList modelObjectParameters, string equipmentDictionaryName, Dictionary> dummyRuns, bool useCyclicalForDescription, bool isEAFHosted) :
- base(new Description(), false, smtp, fileParameter, cellInstanceName, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, useCyclicalForDescription, isEAFHosted)
- {
- _MinFileLength = 10;
- _NullData = string.Empty;
- _Logistics = new Logistics(this);
- if (_FileParameter is null)
- throw new Exception(cellInstanceConnectionName);
- if (_ModelObjectParameterDefinitions is null)
- throw new Exception(cellInstanceConnectionName);
- if (!_IsDuplicator)
- throw new Exception(cellInstanceConnectionName);
- }
-
- void IFileRead.Move(Tuple> extractResults, Exception exception) => Move(extractResults, exception);
-
- void IFileRead.WaitForThread() => WaitForThread(thread: null, threadExceptions: null);
-
- string IFileRead.GetEventDescription()
- {
- string result = _Description.GetEventDescription();
- return result;
- }
-
- List IFileRead.GetHeaderNames()
- {
- List results = _Description.GetHeaderNames();
- return results;
- }
-
- string[] IFileRead.Move(Tuple> extractResults, string to, string from, string resolvedFileLocation, Exception exception)
- {
- string[] results = Move(extractResults, to, from, resolvedFileLocation, exception);
- return results;
- }
-
- JsonProperty[] IFileRead.GetDefault()
- {
- JsonProperty[] results = _Description.GetDefault(this, _Logistics);
- return results;
- }
-
- Dictionary IFileRead.GetDisplayNamesJsonElement()
- {
- Dictionary results = _Description.GetDisplayNamesJsonElement(this);
- return results;
- }
-
- List IFileRead.GetDescriptions(IFileRead fileRead, List tests, IProcessData processData)
- {
- List results = _Description.GetDescriptions(fileRead, _Logistics, tests, processData);
- return results;
- }
-
- Tuple> IFileRead.GetExtractResult(string reportFullPath, string eventName)
- {
- Tuple> results;
- if (string.IsNullOrEmpty(eventName))
- throw new Exception();
- _ReportFullPath = reportFullPath;
- DateTime dateTime = DateTime.Now;
- results = GetExtractResult(reportFullPath, dateTime);
- if (results.Item3 is null)
- results = new Tuple>(results.Item1, Array.Empty(), JsonSerializer.Deserialize("[]"), results.Item4);
- if (results.Item3.Length > 0 && _IsEAFHosted)
- WritePDSF(this, results.Item3);
- UpdateLastTicksDuration(DateTime.Now.Ticks - dateTime.Ticks);
- return results;
- }
-
- Tuple> IFileRead.ReExtract()
- {
- Tuple> results;
- List headerNames = _Description.GetHeaderNames();
- Dictionary keyValuePairs = _Description.GetDisplayNamesJsonElement(this);
- results = ReExtract(this, headerNames, keyValuePairs);
- return results;
- }
-
- void IFileRead.CheckTests(Test[] tests, bool extra)
- {
- if (_Description is not Description)
- throw new Exception();
- }
-
- private void MoveArchive(DateTime dateTime)
- {
- if (dateTime == DateTime.MinValue)
- { }
- string logisticsSequence = _Logistics.Sequence.ToString();
- string weekOfYear = _Calendar.GetWeekOfYear(_Logistics.DateTimeFromSequence, CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString("00");
- string weekDirectory = string.Concat(_Logistics.DateTimeFromSequence.ToString("yyyy"), "_Week_", weekOfYear, @"\", _Logistics.DateTimeFromSequence.ToString("yyyy-MM-dd"));
- string jobIdDirectory = string.Concat(_FileConnectorConfiguration.TargetFileLocation, @"\", _Logistics.JobID);
- if (!Directory.Exists(jobIdDirectory))
- _ = Directory.CreateDirectory(jobIdDirectory);
- //string destinationArchiveDirectory = string.Concat(jobIdDirectory, @"\!Archive\", weekDirectory);
- string destinationArchiveDirectory = string.Concat(Path.GetDirectoryName(_FileConnectorConfiguration.TargetFileLocation), @"\Archive\", _Logistics.JobID, @"\", weekDirectory);
- if (!Directory.Exists(destinationArchiveDirectory))
- _ = Directory.CreateDirectory(destinationArchiveDirectory);
- string[] matchDirectories = new string[] { GetDirectoriesRecursively(jobIdDirectory, logisticsSequence).FirstOrDefault() };
- if ((matchDirectories is null) || matchDirectories.Length != 1)
- throw new Exception("Didn't find directory by logistics sequence");
- string sourceDirectory = Path.GetDirectoryName(matchDirectories[0]);
- destinationArchiveDirectory = string.Concat(destinationArchiveDirectory, @"\", Path.GetFileName(sourceDirectory));
- Directory.Move(sourceDirectory, destinationArchiveDirectory);
- }
-
- private Tuple> GetExtractResult(string reportFullPath, DateTime dateTime)
- {
- Tuple> results;
- Tuple pdsf = ProcessDataStandardFormat.GetLogisticsColumnsAndBody(reportFullPath);
- _Logistics = new Logistics(reportFullPath, pdsf.Item1);
- SetFileParameterLotIDToLogisticsMID();
- JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(pdsf);
- List descriptions = GetDuplicatorDescriptions(jsonElements);
- Tuple>> tuple = GetTuple(this, descriptions, extra: false);
- MoveArchive(dateTime);
- results = new Tuple>(pdsf.Item1, tuple.Item1, jsonElements, new List());
- return results;
- }
-
-}
\ No newline at end of file
diff --git a/Adaptation/FileHandlers/CellInstanceConnectionName.cs b/Adaptation/FileHandlers/CellInstanceConnectionName.cs
index 9f22f4b..8b09867 100644
--- a/Adaptation/FileHandlers/CellInstanceConnectionName.cs
+++ b/Adaptation/FileHandlers/CellInstanceConnectionName.cs
@@ -9,31 +9,15 @@ namespace Adaptation.FileHandlers;
public class CellInstanceConnectionName
{
- internal static IFileRead Get(ISMTP smtp, Dictionary fileParameter, string cellInstanceName, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList modelObjectParameters, string equipmentDictionaryName, Dictionary> dummyRuns, bool useCyclicalForDescription, bool isEAFHosted)
+ internal static IFileRead Get(ISMTP smtp, Dictionary fileParameter, string cellInstanceName, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList modelObjectParameters, string equipmentDictionaryName, Dictionary> dummyRuns, Dictionary> staticRuns, bool useCyclicalForDescription, bool isEAFHosted)
{
- IFileRead result;
- bool isDuplicator = cellInstanceConnectionName.StartsWith(cellInstanceName);
- if (isDuplicator)
+ IFileRead result = cellInstanceConnectionName switch
{
- string cellInstanceConnectionNameBase = cellInstanceConnectionName.Replace("-", string.Empty);
- int hyphens = cellInstanceConnectionName.Length - cellInstanceConnectionNameBase.Length;
- result = hyphens switch
- {
- (int)DEP08SIASM.Hyphen.IsArchive => new Archive.FileRead(smtp, fileParameter, cellInstanceName, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, useCyclicalForDescription, isEAFHosted),
- (int)DEP08SIASM.Hyphen.IsDummy => new Dummy.FileRead(smtp, fileParameter, cellInstanceName, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, useCyclicalForDescription, isEAFHosted),
- (int)DEP08SIASM.Hyphen.IsXToArchive => new ToArchive.FileRead(smtp, fileParameter, cellInstanceName, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, useCyclicalForDescription, isEAFHosted),
- _ => new DEP08SIASM.FileRead(smtp, fileParameter, cellInstanceName, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, useCyclicalForDescription, isEAFHosted)
- };
- }
- else
- {
- result = cellInstanceConnectionName switch
- {
- nameof(DownloadJpegFile) => new DownloadJpegFile.FileRead(smtp, fileParameter, cellInstanceName, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, useCyclicalForDescription, isEAFHosted),
- nameof(jpeg) => new jpeg.FileRead(smtp, fileParameter, cellInstanceName, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, useCyclicalForDescription, isEAFHosted),
- _ => throw new Exception(),
- };
- }
+ nameof(DownloadJpegFile) => new DownloadJpegFile.FileRead(smtp, fileParameter, cellInstanceName, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted),
+ nameof(jpeg) => new jpeg.FileRead(smtp, fileParameter, cellInstanceName, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted),
+ nameof(OpenInsight) => new OpenInsight.FileRead(smtp, fileParameter, cellInstanceName, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted),
+ _ => throw new Exception($"\"{cellInstanceConnectionName}\" not mapped")
+ };
return result;
}
diff --git a/Adaptation/FileHandlers/DEP08SIASM/FileRead.cs b/Adaptation/FileHandlers/DEP08SIASM/FileRead.cs
deleted file mode 100644
index f0f43bc..0000000
--- a/Adaptation/FileHandlers/DEP08SIASM/FileRead.cs
+++ /dev/null
@@ -1,278 +0,0 @@
-using Adaptation.Eaf.Management.ConfigurationData.CellAutomation;
-using Adaptation.Ifx.Eaf.EquipmentConnector.File.Configuration;
-using Adaptation.Shared;
-using Adaptation.Shared.Deposition;
-using Adaptation.Shared.Duplicator;
-using Adaptation.Shared.Methods;
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Globalization;
-using System.IO;
-using System.Linq;
-using System.Net;
-using System.Net.Http;
-using System.Reflection;
-using System.Text.Json;
-using System.Text.Json.Serialization;
-using System.Threading;
-
-namespace Adaptation.FileHandlers.DEP08SIASM;
-
-public class FileRead : Shared.FileRead, IFileRead
-{
-
- private readonly bool _IsXToAPC;
- private readonly bool _IsXToIQSSi;
- private readonly string _MemoryPath;
- private readonly HttpClient _HttpClient;
- private readonly bool _IsXToOpenInsight;
- private readonly bool _IsXToOpenInsightMetrologyViewer;
- private readonly Dictionary _CellNames;
- private readonly bool _IsXToOpenInsightMetrologyViewerAttachments;
-
- public FileRead(ISMTP smtp, Dictionary fileParameter, string cellInstanceName, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList modelObjectParameters, string equipmentDictionaryName, Dictionary> dummyRuns, bool useCyclicalForDescription, bool isEAFHosted) :
- base(new Description(), false, smtp, fileParameter, cellInstanceName, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, useCyclicalForDescription, isEAFHosted)
- {
- _MinFileLength = 10;
- _NullData = string.Empty;
- _Logistics = new Logistics(this);
- if (_FileParameter is null)
- throw new Exception(cellInstanceConnectionName);
- if (_ModelObjectParameterDefinitions is null)
- throw new Exception(cellInstanceConnectionName);
- if (!_IsDuplicator)
- throw new Exception(cellInstanceConnectionName);
- _IsXToAPC = _Hyphens == (int)Hyphen.IsXToAPC;
- _CellNames = new Dictionary();
- _IsXToIQSSi = _Hyphens == (int)Hyphen.IsXToIQSSi;
- _IsXToOpenInsight = _Hyphens == (int)Hyphen.IsXToOpenInsight;
- _IsXToOpenInsightMetrologyViewer = _Hyphens == (int)Hyphen.IsXToOpenInsightMetrologyViewer;
- _MemoryPath = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "Path.Memory");
- _IsXToOpenInsightMetrologyViewerAttachments = _Hyphens == (int)Hyphen.IsXToOpenInsightMetrologyViewerAttachments;
- ModelObjectParameterDefinition[] cellInstanceCollection = GetProperties(cellInstanceConnectionName, modelObjectParameters, "CellInstance.", ".Path");
- foreach (ModelObjectParameterDefinition modelObjectParameterDefinition in cellInstanceCollection)
- _CellNames.Add(modelObjectParameterDefinition.Name.Split('.')[1], modelObjectParameterDefinition.Value);
- if (_IsXToOpenInsight)
- {
- _HttpClient = new();
- string openInsightCommonGatewayInterfaceReactorStatesStatus = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "OpenInsight.CommonGatewayInterface.ReactorStates.Status");
- _HttpClient.BaseAddress = new(openInsightCommonGatewayInterfaceReactorStatesStatus);
- }
- }
-
- void IFileRead.Move(Tuple> extractResults, Exception exception) => Move(extractResults, exception);
-
- void IFileRead.WaitForThread() => WaitForThread(thread: null, threadExceptions: null);
-
- string IFileRead.GetEventDescription()
- {
- string result = _Description.GetEventDescription();
- return result;
- }
-
- List IFileRead.GetHeaderNames()
- {
- List results = _Description.GetHeaderNames();
- return results;
- }
-
- string[] IFileRead.Move(Tuple> extractResults, string to, string from, string resolvedFileLocation, Exception exception)
- {
- string[] results = Move(extractResults, to, from, resolvedFileLocation, exception);
- return results;
- }
-
- JsonProperty[] IFileRead.GetDefault()
- {
- JsonProperty[] results = _Description.GetDefault(this, _Logistics);
- return results;
- }
-
- Dictionary IFileRead.GetDisplayNamesJsonElement()
- {
- Dictionary results = _Description.GetDisplayNamesJsonElement(this);
- return results;
- }
-
- List IFileRead.GetDescriptions(IFileRead fileRead, List tests, IProcessData processData)
- {
- List results = _Description.GetDescriptions(fileRead, _Logistics, tests, processData);
- return results;
- }
-
- Tuple> IFileRead.GetExtractResult(string reportFullPath, string eventName)
- {
- Tuple> results;
- if (string.IsNullOrEmpty(eventName))
- throw new Exception();
- _ReportFullPath = reportFullPath;
- DateTime dateTime = DateTime.Now;
- results = GetExtractResult(reportFullPath, dateTime);
- if (results.Item3 is null)
- results = new Tuple>(results.Item1, Array.Empty(), JsonSerializer.Deserialize("[]"), results.Item4);
- if (results.Item3.Length > 0 && _IsEAFHosted)
- WritePDSF(this, results.Item3);
- UpdateLastTicksDuration(DateTime.Now.Ticks - dateTime.Ticks);
- return results;
- }
-
- Tuple> IFileRead.ReExtract()
- {
- Tuple> results;
- List headerNames = _Description.GetHeaderNames();
- Dictionary keyValuePairs = _Description.GetDisplayNamesJsonElement(this);
- results = ReExtract(this, headerNames, keyValuePairs);
- return results;
- }
-
- void IFileRead.CheckTests(Test[] tests, bool extra)
- {
- if (_Description is not Description)
- throw new Exception();
- }
-
- protected static List GetDescriptions(JsonElement[] jsonElements)
- {
- List results = new();
- jpeg.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(jsonElement.ToString(), jsonSerializerOptions);
- results.Add(description);
- }
- return results;
- }
-
- private Tuple> GetExtractResult(string reportFullPath, DateTime dateTime)
- {
- Tuple> results;
- string duplicateDirectory;
- Tuple pdsf = ProcessDataStandardFormat.GetLogisticsColumnsAndBody(reportFullPath);
- _Logistics = new Logistics(reportFullPath, pdsf.Item1);
- SetFileParameterLotIDToLogisticsMID();
- JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(pdsf);
- List descriptions = GetDescriptions(jsonElements);
- Tuple>> tuple = GetTuple(this, from l in descriptions select (Shared.Properties.IDescription)l, extra: false);
- results = new Tuple>(pdsf.Item1, tuple.Item1, jsonElements, new List());
- bool isDummyRun = _DummyRuns.Any() && _DummyRuns.ContainsKey(_Logistics.JobID) && _DummyRuns[_Logistics.JobID].Any() && (from l in _DummyRuns[_Logistics.JobID] where l == _Logistics.Sequence select 1).Any();
- if (isDummyRun)
- {
- try
- { File.SetLastWriteTime(reportFullPath, dateTime); }
- catch (Exception) { }
- }
- string[] segments = Path.GetFileNameWithoutExtension(reportFullPath).Split('_');
- if (_IsXToIQSSi)
- duplicateDirectory = string.Concat(_FileConnectorConfiguration.TargetFileLocation, @"\All");
- else if (!_IsXToOpenInsight)
- duplicateDirectory = string.Concat(_FileConnectorConfiguration.TargetFileLocation, @"\", segments[0]);
- else
- duplicateDirectory = string.Concat(Path.GetDirectoryName(Path.GetDirectoryName(_FileConnectorConfiguration.TargetFileLocation)), @"\Data");
- if (segments.Length > 2)
- duplicateDirectory = string.Concat(duplicateDirectory, @"-", segments[2]);
- if (!Directory.Exists(duplicateDirectory))
- _ = Directory.CreateDirectory(duplicateDirectory);
- if (isDummyRun || _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
- {
- if (!Directory.Exists(duplicateDirectory))
- _ = Directory.CreateDirectory(duplicateDirectory);
- string successDirectory;
- if (!_IsXToAPC)
- successDirectory = string.Empty;
- else
- {
- successDirectory = string.Concat(Path.GetDirectoryName(_FileConnectorConfiguration.TargetFileLocation), @"\ViewerPath");
- if (!Directory.Exists(successDirectory))
- _ = Directory.CreateDirectory(successDirectory);
- }
- List> tuples = new();
- string duplicateFile = string.Concat(duplicateDirectory, @"\", Path.GetFileName(reportFullPath));
- string weekOfYear = _Calendar.GetWeekOfYear(_Logistics.DateTimeFromSequence, CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString("00");
- string weekDirectory = string.Concat(_Logistics.DateTimeFromSequence.ToString("yyyy"), "_Week_", weekOfYear, @"\", _Logistics.DateTimeFromSequence.ToString("yyyy-MM-dd"));
- string logisticsSequenceMemoryDirectory = string.Concat(_MemoryPath, @"\", _EquipmentType, @"\Source\", weekDirectory, @"\", _Logistics.Sequence);
- if (!Directory.Exists(logisticsSequenceMemoryDirectory))
- _ = Directory.CreateDirectory(logisticsSequenceMemoryDirectory);
- if (_IsXToAPC)
- {
- if (!isDummyRun && _IsEAFHosted)
- File.Copy(reportFullPath, duplicateFile, overwrite: true);
- }
- else
- {
- if (_IsXToOpenInsightMetrologyViewer)
- _Log.Debug("Not sure if this data should post to OI Metrology Viewer?");
- else if (!_IsXToOpenInsight)
- throw new Exception($"Only {nameof(_IsXToOpenInsight)} is codded!");
- else if (_IsXToOpenInsight)
- {
- if (_HttpClient is null)
- throw new Exception($"{nameof(_HttpClient)} is null!");
- if (!isDummyRun && _IsEAFHosted)
- ProcessData.PutOpenInsightCommonGatewayInterfaceReactorStatesStatus(this, _Logistics, _HttpClient, descriptions, logisticsSequenceMemoryDirectory);
- }
- else
- throw new Exception();
- }
- }
- if (_IsXToOpenInsightMetrologyViewerAttachments)
- {
- string destinationDirectory;
- //string destinationDirectory = WriteScopeInfo(_ProgressPath, _Logistics, dateTime, duplicateDirectory, tuples);
- FileInfo fileInfo = new(reportFullPath);
- string logisticsSequence = _Logistics.Sequence.ToString();
- if (fileInfo.Exists && fileInfo.LastWriteTime < fileInfo.CreationTime)
- File.SetLastWriteTime(reportFullPath, fileInfo.CreationTime);
- string jobIdDirectory = string.Concat(Path.GetDirectoryName(Path.GetDirectoryName(_FileConnectorConfiguration.TargetFileLocation)), @"\", _Logistics.JobID);
- if (!Directory.Exists(jobIdDirectory))
- _ = Directory.CreateDirectory(jobIdDirectory);
- string[] matchDirectories;
- if (!_IsEAFHosted)
- matchDirectories = new string[] { Path.GetDirectoryName(Path.GetDirectoryName(reportFullPath)) };
- else
- matchDirectories = Directory.GetDirectories(jobIdDirectory, string.Concat(_Logistics.MID, '*', logisticsSequence, '*'), SearchOption.TopDirectoryOnly);
- if ((matchDirectories is null) || matchDirectories.Length != 1)
- throw new Exception("Didn't find directory by logistics sequence");
- destinationDirectory = matchDirectories[0];
- if (isDummyRun)
- Shared0607(reportFullPath, duplicateDirectory, logisticsSequence, destinationDirectory);
- else
- {
- var wsRequest = new { _Logistics, descriptions };
- JsonSerializerOptions jsonSerializerOptions = new() { WriteIndented = true };
- string json = JsonSerializer.Serialize(wsRequest, wsRequest.GetType(), jsonSerializerOptions);
- if (_IsEAFHosted)
- Shared1277(reportFullPath, destinationDirectory, logisticsSequence, jobIdDirectory, json);
- else
- {
- string jsonFileName = Path.ChangeExtension(reportFullPath, ".json");
- string historicalText = File.ReadAllText(jsonFileName);
- if (json != historicalText)
- throw new Exception("File doesn't match historical!");
- }
- string[] inProcessDirectorySegments;
- string[] inProcessDirectories = Directory.GetDirectories(jobIdDirectory, "*_*_*", SearchOption.TopDirectoryOnly);
- foreach (string inProcessDirectory in inProcessDirectories)
- {
- inProcessDirectorySegments = Path.GetFileName(inProcessDirectory).Split('_');
- if (inProcessDirectorySegments.Length != 3)
- continue;
- if (!long.TryParse(inProcessDirectorySegments[1], out long ticks))
- continue;
- if (ticks > _Logistics.Sequence)
- continue;
- if (Directory.GetDirectories(inProcessDirectory).Any())
- continue;
- if (Directory.GetFiles(inProcessDirectory).Any())
- continue;
- Directory.Delete(inProcessDirectory);
- }
- }
- }
- return results;
- }
-
-}
\ No newline at end of file
diff --git a/Adaptation/FileHandlers/DEP08SIASM/Hyphen.cs b/Adaptation/FileHandlers/DEP08SIASM/Hyphen.cs
deleted file mode 100644
index 1063c83..0000000
--- a/Adaptation/FileHandlers/DEP08SIASM/Hyphen.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-namespace Adaptation.FileHandlers.DEP08SIASM;
-
-public enum Hyphen
-{
- IsXToOpenInsightMetrologyViewer,
- IsXToIQSSi,
- IsXToOpenInsight,
- IsXToOpenInsightMetrologyViewerAttachments,
- IsXToAPC,
- IsXToSPaCe,
- IsXToArchive,
- IsArchive,
- IsDummy,
- IsNaEDA
-}
\ No newline at end of file
diff --git a/Adaptation/FileHandlers/DEP08SIASM/ProcessData.cs b/Adaptation/FileHandlers/DEP08SIASM/ProcessData.cs
deleted file mode 100644
index 5966374..0000000
--- a/Adaptation/FileHandlers/DEP08SIASM/ProcessData.cs
+++ /dev/null
@@ -1,65 +0,0 @@
-using Adaptation.Shared;
-using Adaptation.Shared.Properties;
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Net.Http;
-using System.Text;
-
-namespace Adaptation.FileHandlers.DEP08SIASM;
-
-public class ProcessData
-{
-
- internal static List> HyphenTuples => new()
- {
- new Tuple(0, Hyphen.IsNaEDA, @"\EC_EDA\Staging\Traces\~\Source"),
- new Tuple(15, Hyphen.IsXToOpenInsightMetrologyViewer, @"\EC_EAFLog\TracesMES\~\Source"),
- new Tuple(-361, Hyphen.IsXToIQSSi, @"\EC_SPC_Si\Traces\~\PollPath"),
- new Tuple(362, Hyphen.IsXToOpenInsight, @"\\messa01ec.ec.local\APPS\Metrology\~\Source"),
- new Tuple(-363, Hyphen.IsXToOpenInsightMetrologyViewerAttachments, @"\EC_Characterization_Si\In Process\~\Source"),
- new Tuple(-3604, Hyphen.IsXToAPC, @"\EC_APC\Staging\Traces\~\PollPath"),
- new Tuple(-365, Hyphen.IsXToSPaCe, @"\EC_SPC_Si\Traces\~\Source"),
- new Tuple(1806, Hyphen.IsXToArchive, @"\EC_EAFLog\TracesArchive\~\Source"),
- new Tuple(367, Hyphen.IsArchive, @"\EC_Characterization_Si\Processed")
- // new Tuple(1808, Hyphen.IsDummy
- };
-
- internal static string GetLines(IFileRead fileRead, Logistics logistics, List descriptions)
- {
- StringBuilder result = new();
- if (fileRead is null)
- { }
- if (logistics is null)
- { }
- if (descriptions is null)
- { }
- return result.ToString();
- }
-
- internal static async void PutOpenInsightCommonGatewayInterfaceReactorStatesStatus(IFileRead fileRead, Logistics logistics, HttpClient httpClient, List descriptions, string logisticsSequenceMemoryDirectory)
- {
- HttpContent httpContent = null;
- string status = descriptions[0].MID;
- string reactorNumber = logistics.MesEntity.Substring(1);
- string statusDateTime = logistics.DateTimeFromSequence.ToString("MM-dd-yyyy HH:mm:ss");
- string contentFile = Path.Combine(logisticsSequenceMemoryDirectory, $"{logistics.DateTimeFromSequence.Ticks}.txt");
- Uri uri = new($"{httpClient.BaseAddress.OriginalString}reactno={reactorNumber}&status={status}&statusdtm={statusDateTime}");
- try
- {
- HttpResponseMessage httpResponseMessage = await httpClient.PutAsync(uri, httpContent);
- if (httpResponseMessage.StatusCode is not System.Net.HttpStatusCode.OK)
- File.WriteAllText(contentFile, "Failed!");
- else
- {
- string content = await httpResponseMessage.Content.ReadAsStringAsync();
- File.WriteAllText(contentFile, content);
- }
- }
- catch (Exception ex)
- {
- File.WriteAllText(contentFile, $"{ex.Message}{Environment.NewLine}{ex.StackTrace}{Environment.NewLine}{fileRead.CellInstanceConnectionName}");
- }
- }
-
-}
\ No newline at end of file
diff --git a/Adaptation/FileHandlers/DownloadJpegFile/FileRead.cs b/Adaptation/FileHandlers/DownloadJpegFile/FileRead.cs
index ec08683..d60dca1 100644
--- a/Adaptation/FileHandlers/DownloadJpegFile/FileRead.cs
+++ b/Adaptation/FileHandlers/DownloadJpegFile/FileRead.cs
@@ -8,7 +8,6 @@ using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
-using System.Reflection;
using System.Text.Json;
using System.Threading;
@@ -21,12 +20,12 @@ public class FileRead : Shared.FileRead, IFileRead
private readonly string _FFmpegFileName;
private readonly string _StaticFileServer;
- public FileRead(ISMTP smtp, Dictionary fileParameter, string cellInstanceName, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList modelObjectParameters, string equipmentDictionaryName, Dictionary> dummyRuns, bool useCyclicalForDescription, bool isEAFHosted) :
- base(new Description(), false, smtp, fileParameter, cellInstanceName, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, useCyclicalForDescription, isEAFHosted)
+ public FileRead(ISMTP smtp, Dictionary fileParameter, string cellInstanceName, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList modelObjectParameters, string equipmentDictionaryName, Dictionary> dummyRuns, Dictionary> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) :
+ base(new Description(), false, smtp, fileParameter, cellInstanceName, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted)
{
_MinFileLength = 10;
_NullData = string.Empty;
- _Logistics = new Logistics(this);
+ _Logistics = new(this);
if (_FileParameter is null)
throw new Exception(cellInstanceConnectionName);
if (_ModelObjectParameterDefinitions is null)
@@ -34,9 +33,8 @@ public class FileRead : Shared.FileRead, IFileRead
if (_IsDuplicator)
throw new Exception(cellInstanceConnectionName);
_StaticFileServer = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, string.Concat("CellInstance.", cellInstanceName, ".StaticFileServer"));
- string entryAssemblyLocationDirectory = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
- string ffmpegFileName = Path.Combine(entryAssemblyLocationDirectory, "ffmpeg.dll");
- _FFmpegFileName = Path.Combine(entryAssemblyLocationDirectory, "ffmpeg.exe");
+ string ffmpegFileName = Path.Combine(AppContext.BaseDirectory, "ffmpeg.dll");
+ _FFmpegFileName = Path.Combine(AppContext.BaseDirectory, "ffmpeg.exe");
if (File.Exists(ffmpegFileName) && !File.Exists(_FFmpegFileName))
File.Copy(ffmpegFileName, _FFmpegFileName);
if (!Debugger.IsAttached && fileConnectorConfiguration.PreProcessingMode != FileConnectorConfiguration.PreProcessingModeEnum.Process)
@@ -48,7 +46,7 @@ public class FileRead : Shared.FileRead, IFileRead
}
}
- void IFileRead.Move(Tuple> extractResults, Exception exception) => Move(extractResults, exception);
+ void IFileRead.Move(Tuple> extractResults, Exception exception) => Move(extractResults);
void IFileRead.WaitForThread() => WaitForThread(thread: null, threadExceptions: null);
@@ -113,8 +111,6 @@ public class FileRead : Shared.FileRead, IFileRead
return results;
}
- void IFileRead.CheckTests(Test[] tests, bool extra) => throw new Exception(string.Concat("Not ", nameof(_IsDuplicator)));
-
private Tuple> GetExtractResult(string reportFullPath, DateTime dateTime)
{
if (reportFullPath is null)
diff --git a/Adaptation/FileHandlers/Dummy/FileRead.cs b/Adaptation/FileHandlers/Dummy/FileRead.cs
deleted file mode 100644
index 6ef5f81..0000000
--- a/Adaptation/FileHandlers/Dummy/FileRead.cs
+++ /dev/null
@@ -1,292 +0,0 @@
-using Adaptation.Eaf.Management.ConfigurationData.CellAutomation;
-using Adaptation.Ifx.Eaf.EquipmentConnector.File.Configuration;
-using Adaptation.Shared;
-using Adaptation.Shared.Duplicator;
-using Adaptation.Shared.Methods;
-using Infineon.Monitoring.MonA;
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Globalization;
-using System.IO;
-using System.IO.Compression;
-using System.Linq;
-using System.Text.Json;
-using System.Threading;
-
-namespace Adaptation.FileHandlers.Dummy;
-
-public class FileRead : Shared.FileRead, IFileRead
-{
-
- private readonly Timer _Timer;
- private int _LastDummyRunIndex;
- private readonly string[] _CellNames;
-
- public FileRead(ISMTP smtp, Dictionary fileParameter, string cellInstanceName, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList modelObjectParameters, string equipmentDictionaryName, Dictionary> dummyRuns, bool useCyclicalForDescription, bool isEAFHosted) :
- base(new Description(), false, smtp, fileParameter, cellInstanceName, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, useCyclicalForDescription, isEAFHosted)
- {
- _MinFileLength = 10;
- _NullData = string.Empty;
- _Logistics = new Logistics(this);
- if (_FileParameter is null)
- throw new Exception(cellInstanceConnectionName);
- if (_ModelObjectParameterDefinitions is null)
- throw new Exception(cellInstanceConnectionName);
- if (!_IsDuplicator)
- throw new Exception(cellInstanceConnectionName);
- _LastDummyRunIndex = -1;
- List cellNames = new();
- _Timer = new Timer(Callback, null, Timeout.Infinite, Timeout.Infinite);
- ModelObjectParameterDefinition[] cellInstanceCollection = GetProperties(cellInstanceConnectionName, modelObjectParameters, "CellInstance.", ".Alias");
- foreach (ModelObjectParameterDefinition modelObjectParameterDefinition in cellInstanceCollection)
- cellNames.Add(modelObjectParameterDefinition.Name.Split('.')[1]);
- _CellNames = cellNames.ToArray();
- if (Debugger.IsAttached || fileConnectorConfiguration.PreProcessingMode == FileConnectorConfiguration.PreProcessingModeEnum.Process)
- Callback(null);
- else
- {
- TimeSpan timeSpan = new(DateTime.Now.AddSeconds(_FileConnectorConfiguration.FileScanningIntervalInSeconds.Value).Ticks - DateTime.Now.Ticks);
- _ = _Timer.Change((long)timeSpan.TotalMilliseconds, Timeout.Infinite);
- }
- }
-
- void IFileRead.Move(Tuple> extractResults, Exception exception) => Move(extractResults, exception);
-
- void IFileRead.WaitForThread() => WaitForThread(thread: null, threadExceptions: null);
-
- string IFileRead.GetEventDescription()
- {
- string result = _Description.GetEventDescription();
- return result;
- }
-
- List IFileRead.GetHeaderNames()
- {
- List results = _Description.GetHeaderNames();
- return results;
- }
-
- string[] IFileRead.Move(Tuple> extractResults, string to, string from, string resolvedFileLocation, Exception exception)
- {
- string[] results = Move(extractResults, to, from, resolvedFileLocation, exception);
- return results;
- }
-
- JsonProperty[] IFileRead.GetDefault()
- {
- JsonProperty[] results = _Description.GetDefault(this, _Logistics);
- return results;
- }
-
- Dictionary IFileRead.GetDisplayNamesJsonElement()
- {
- Dictionary results = _Description.GetDisplayNamesJsonElement(this);
- return results;
- }
-
- List IFileRead.GetDescriptions(IFileRead fileRead, List tests, IProcessData processData)
- {
- List results = _Description.GetDescriptions(fileRead, _Logistics, tests, processData);
- return results;
- }
-
- Tuple> IFileRead.GetExtractResult(string reportFullPath, string eventName) => throw new Exception(string.Concat("See ", nameof(CallbackFileExists)));
-
- Tuple> IFileRead.ReExtract() => throw new Exception(string.Concat("See ", nameof(CallbackFileExists)));
-
- void IFileRead.CheckTests(Test[] tests, bool extra)
- {
- if (_Description is not Description)
- throw new Exception();
- }
-
- private void CallbackInProcessCleared(string sourceArchiveFile, string traceDummyFile, string targetFileLocation, string monARessource, string inProcessDirectory, long sequence, bool warning)
- {
- const string site = "sjc";
- string stateName = string.Concat("Dummy_", _EventName);
- const string monInURL = "http://moninhttp.sjc.infineon.com/input/text";
- MonIn monIn = MonIn.GetInstance(monInURL);
- try
- {
- if (warning)
- {
- File.AppendAllLines(traceDummyFile, new string[] { site, monARessource, stateName, State.Warning.ToString() });
- _ = monIn.SendStatus(site, monARessource, stateName, State.Warning);
- for (int i = 1; i < 12; i++)
- Thread.Sleep(500);
- }
- ZipFile.ExtractToDirectory(sourceArchiveFile, inProcessDirectory);
- string[] files = Directory.GetFiles(inProcessDirectory, "*", SearchOption.TopDirectoryOnly);
- if (files.Length > 250)
- throw new Exception("Safety net!");
- foreach (string file in files)
- File.SetLastWriteTime(file, new DateTime(sequence));
- if (!_FileConnectorConfiguration.IncludeSubDirectories.Value)
- {
- foreach (string file in files)
- File.Move(file, Path.Combine(targetFileLocation, Path.GetFileName(file)));
- }
- else
- {
- string[] directories = Directory.GetDirectories(inProcessDirectory, "*", SearchOption.AllDirectories);
- foreach (string directory in directories)
- _ = Directory.CreateDirectory(string.Concat(targetFileLocation, directory.Substring(inProcessDirectory.Length)));
- foreach (string file in files)
- File.Move(file, string.Concat(targetFileLocation, file.Substring(inProcessDirectory.Length)));
- }
- File.AppendAllLines(traceDummyFile, new string[] { site, monARessource, stateName, State.Ok.ToString() });
- _ = monIn.SendStatus(site, monARessource, stateName, State.Ok);
- }
- catch (Exception exception)
- {
- string subject = string.Concat("Exception:", _CellInstanceConnectionName);
- string body = string.Concat(exception.Message, Environment.NewLine, Environment.NewLine, exception.StackTrace);
- try
- { _SMTP.SendHighPriorityEmailMessage(subject, body); }
- catch (Exception) { }
- File.AppendAllLines(traceDummyFile, new string[] { site, monARessource, stateName, State.Critical.ToString(), exception.Message, exception.StackTrace });
- _ = monIn.SendStatus(site, monARessource, stateName, State.Critical);
- }
- }
-
- private void CallbackFileExists(string sourceArchiveFile, string traceDummyFile, string targetFileLocation, string monARessource, long sequence)
- {
- string[] files;
- bool warning = false;
- if (!_DummyRuns.ContainsKey(monARessource))
- _DummyRuns.Add(monARessource, new List());
- if (!_DummyRuns[monARessource].Contains(sequence))
- _DummyRuns[monARessource].Add(sequence);
- File.AppendAllLines(traceDummyFile, new string[] { sourceArchiveFile });
- string inProcessDirectory = Path.Combine(_ProgressPath, "Dummy In-Process", sequence.ToString());
- if (!Directory.Exists(inProcessDirectory))
- _ = Directory.CreateDirectory(inProcessDirectory);
- files = Directory.GetFiles(inProcessDirectory, "*", SearchOption.AllDirectories);
- if (files.Any())
- {
- if (files.Length > 250)
- throw new Exception("Safety net!");
- try
- {
- foreach (string file in files)
- File.Delete(file);
- }
- catch (Exception) { }
- }
- if (_FileConnectorConfiguration.IncludeSubDirectories.Value)
- files = Directory.GetFiles(targetFileLocation, "*", SearchOption.AllDirectories);
- else
- files = Directory.GetFiles(targetFileLocation, "*", SearchOption.TopDirectoryOnly);
- foreach (string file in files)
- {
- if (new FileInfo(file).LastWriteTime.Ticks == sequence)
- {
- warning = true;
- break;
- }
- }
- CallbackInProcessCleared(sourceArchiveFile, traceDummyFile, targetFileLocation, monARessource, inProcessDirectory, sequence, warning);
- }
-
- private string GetCellName(string pathSegment)
- {
- string result = string.Empty;
- foreach (string cellName in _CellNames)
- {
- if (pathSegment.ToLower().Contains(cellName.ToLower()))
- {
- result = cellName;
- break;
- }
- }
- if (string.IsNullOrEmpty(result))
- {
- int count;
- List<(string CellName, int Count)> cellNames = new();
- foreach (string cellName in _CellNames)
- {
- count = 0;
- foreach (char @char in cellName.ToLower())
- count += pathSegment.Length - pathSegment.ToLower().Replace(@char.ToString(), string.Empty).Length;
- cellNames.Add(new(cellName, count));
- }
- result = (from l in cellNames orderby l.CellName.Length, l.Count descending select l.CellName).First();
- }
- return result;
- }
-
- private void Callback(object state)
- {
- try
- {
- string sourceParentDirectory;
- string targetParentDirectory;
- DateTime dateTime = DateTime.Now;
- if (!string.IsNullOrEmpty(Path.GetFileName(_FileConnectorConfiguration.SourceFileLocation)))
- sourceParentDirectory = Path.GetDirectoryName(_FileConnectorConfiguration.SourceFileLocation);
- else
- sourceParentDirectory = Path.GetDirectoryName(Path.GetDirectoryName(_FileConnectorConfiguration.SourceFileLocation));
- if (!string.IsNullOrEmpty(Path.GetFileName(_FileConnectorConfiguration.TargetFileLocation)))
- targetParentDirectory = Path.GetDirectoryName(_FileConnectorConfiguration.TargetFileLocation);
- else
- targetParentDirectory = Path.GetDirectoryName(Path.GetDirectoryName(_FileConnectorConfiguration.TargetFileLocation));
- if (sourceParentDirectory != targetParentDirectory)
- throw new Exception("Target and source must have the same parent for Si Dummy FileConnectorConfiguration!");
- bool check = dateTime.Hour > 7 && dateTime.Hour < 18 && dateTime.DayOfWeek != DayOfWeek.Sunday && dateTime.DayOfWeek != DayOfWeek.Saturday;
- if (!_IsEAFHosted || check)
- {
- string monARessource;
- string sourceFileFilter;
- string sourceArchiveFile;
- string weekOfYear = _Calendar.GetWeekOfYear(dateTime, CalendarWeekRule.FirstDay, DayOfWeek.Sunday).ToString("00");
- string traceDummyDirectory = Path.Combine(Path.GetPathRoot(_TracePath), "TracesDummy", _CellInstanceName, "Source", $"{dateTime:yyyy}___Week_{weekOfYear}");
- if (!Directory.Exists(traceDummyDirectory))
- _ = Directory.CreateDirectory(traceDummyDirectory);
- string traceDummyFile = Path.Combine(traceDummyDirectory, $"{dateTime.Ticks} - {_CellInstanceName}.txt");
- File.AppendAllText(traceDummyFile, string.Empty);
- for (int i = 0; i < _FileConnectorConfiguration.SourceFileFilters.Count; i++)
- {
- _LastDummyRunIndex += 1;
- if (_LastDummyRunIndex >= _FileConnectorConfiguration.SourceFileFilters.Count)
- _LastDummyRunIndex = 0;
- sourceFileFilter = _FileConnectorConfiguration.SourceFileFilters[_LastDummyRunIndex];
- sourceArchiveFile = Path.Combine(_FileConnectorConfiguration.SourceFileLocation, sourceFileFilter);
- if (File.Exists(sourceArchiveFile))
- {
- if (!long.TryParse(Path.GetFileNameWithoutExtension(sourceArchiveFile).Replace("x", string.Empty), out long sequence))
- throw new Exception("Invalid file name for source archive file!");
- monARessource = GetCellName(sourceArchiveFile);
- if (string.IsNullOrEmpty(monARessource))
- throw new Exception("Could not determine which cell archive file is associated with!");
- if (_IsEAFHosted)
- CallbackFileExists(sourceArchiveFile, traceDummyFile, _FileConnectorConfiguration.TargetFileLocation, monARessource, sequence);
- break;
- }
- }
- }
- }
- catch (Exception exception)
- {
- string subject = string.Concat("Exception:", _CellInstanceConnectionName);
- string body = string.Concat(exception.Message, Environment.NewLine, Environment.NewLine, exception.StackTrace);
- try
- { _SMTP.SendHighPriorityEmailMessage(subject, body); }
- catch (Exception) { }
- }
- try
- {
- TimeSpan timeSpan = new(DateTime.Now.AddSeconds(_FileConnectorConfiguration.FileScanningIntervalInSeconds.Value).Ticks - DateTime.Now.Ticks);
- _ = _Timer.Change((long)timeSpan.TotalMilliseconds, Timeout.Infinite);
- }
- catch (Exception exception)
- {
- string subject = string.Concat("Exception:", _CellInstanceConnectionName);
- string body = string.Concat(exception.Message, Environment.NewLine, Environment.NewLine, exception.StackTrace);
- try
- { _SMTP.SendHighPriorityEmailMessage(subject, body); }
- catch (Exception) { }
- }
- }
-
-}
\ No newline at end of file
diff --git a/Adaptation/FileHandlers/OpenInsight/CommonGatewayInterface.cs b/Adaptation/FileHandlers/OpenInsight/CommonGatewayInterface.cs
new file mode 100644
index 0000000..b7f3449
--- /dev/null
+++ b/Adaptation/FileHandlers/OpenInsight/CommonGatewayInterface.cs
@@ -0,0 +1,38 @@
+using Adaptation.Shared;
+using Adaptation.Shared.Methods;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Net.Http;
+
+namespace Adaptation.FileHandlers.OpenInsight;
+
+public class CommonGatewayInterface
+{
+
+ internal static async void PutReactorStatesStatus(IFileRead fileRead, Logistics logistics, HttpClient httpClient, List descriptions, string logisticsSequenceMemoryDirectory)
+ {
+ HttpContent httpContent = null;
+ string status = descriptions[0].MID;
+ string reactorNumber = logistics.MesEntity.Substring(1);
+ string statusDateTime = logistics.DateTimeFromSequence.ToString("MM-dd-yyyy HH:mm:ss");
+ string contentFile = Path.Combine(logisticsSequenceMemoryDirectory, $"{logistics.DateTimeFromSequence.Ticks}.txt");
+ Uri uri = new($"{httpClient.BaseAddress.OriginalString}reactno={reactorNumber}&status={status}&statusdtm={statusDateTime}");
+ try
+ {
+ HttpResponseMessage httpResponseMessage = await httpClient.PutAsync(uri, httpContent);
+ if (httpResponseMessage.StatusCode is not System.Net.HttpStatusCode.OK)
+ File.WriteAllText(contentFile, "Failed!");
+ else
+ {
+ string content = await httpResponseMessage.Content.ReadAsStringAsync();
+ File.WriteAllText(contentFile, content);
+ }
+ }
+ catch (Exception ex)
+ {
+ File.WriteAllText(contentFile, $"{ex.Message}{Environment.NewLine}{ex.StackTrace}{Environment.NewLine}{fileRead.CellInstanceConnectionName}");
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/Adaptation/FileHandlers/ToArchive/FileRead.cs b/Adaptation/FileHandlers/OpenInsight/FileRead.cs
similarity index 67%
rename from Adaptation/FileHandlers/ToArchive/FileRead.cs
rename to Adaptation/FileHandlers/OpenInsight/FileRead.cs
index 18646a2..6ffe427 100644
--- a/Adaptation/FileHandlers/ToArchive/FileRead.cs
+++ b/Adaptation/FileHandlers/OpenInsight/FileRead.cs
@@ -5,26 +5,36 @@ using Adaptation.Shared.Duplicator;
using Adaptation.Shared.Methods;
using System;
using System.Collections.Generic;
+using System.Globalization;
using System.IO;
+using System.Linq;
+using System.Net.Http;
using System.Text.Json;
-namespace Adaptation.FileHandlers.ToArchive;
+namespace Adaptation.FileHandlers.OpenInsight;
public class FileRead : Shared.FileRead, IFileRead
{
- public FileRead(ISMTP smtp, Dictionary fileParameter, string cellInstanceName, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList modelObjectParameters, string equipmentDictionaryName, Dictionary> dummyRuns, bool useCyclicalForDescription, bool isEAFHosted) :
- base(new Description(), false, smtp, fileParameter, cellInstanceName, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, useCyclicalForDescription, isEAFHosted)
+ private readonly string _MemoryPath;
+ private readonly HttpClient _HttpClient;
+
+ public FileRead(ISMTP smtp, Dictionary fileParameter, string cellInstanceName, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList modelObjectParameters, string equipmentDictionaryName, Dictionary> dummyRuns, Dictionary> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) :
+ base(new Description(), false, smtp, fileParameter, cellInstanceName, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted)
{
_MinFileLength = 10;
_NullData = string.Empty;
- _Logistics = new Logistics(this);
+ _Logistics = new(this);
if (_FileParameter is null)
throw new Exception(cellInstanceConnectionName);
if (_ModelObjectParameterDefinitions is null)
throw new Exception(cellInstanceConnectionName);
if (!_IsDuplicator)
throw new Exception(cellInstanceConnectionName);
+ _MemoryPath = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "Path.Memory");
+ _HttpClient = new();
+ string openInsightCommonGatewayInterfaceReactorStatesStatus = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "OpenInsight.CommonGatewayInterface.ReactorStates.Status");
+ _HttpClient.BaseAddress = new(openInsightCommonGatewayInterfaceReactorStatesStatus);
}
void IFileRead.Move(Tuple> extractResults, Exception exception)
@@ -36,7 +46,7 @@ public class FileRead : Shared.FileRead, IFileRead
if (fileInfo.Exists && fileInfo.LastWriteTime < fileInfo.CreationTime)
File.SetLastWriteTime(_Logistics.ReportFullPath, fileInfo.CreationTime);
}
- Move(extractResults, exception);
+ Move(extractResults);
}
void IFileRead.WaitForThread() => WaitForThread(thread: null, threadExceptions: null);
@@ -102,20 +112,32 @@ public class FileRead : Shared.FileRead, IFileRead
return results;
}
- void IFileRead.CheckTests(Test[] tests, bool extra)
+ private void SendData(DateTime dateTime, List descriptions)
{
- if (_Description is not Description)
- throw new Exception();
+ if (dateTime == DateTime.MinValue)
+ { }
+ 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 logisticsSequenceMemoryDirectory = Path.Combine(_MemoryPath, _EquipmentType, "Source", weekDirectory, _Logistics.Sequence.ToString());
+ if (!Directory.Exists(logisticsSequenceMemoryDirectory))
+ _ = Directory.CreateDirectory(logisticsSequenceMemoryDirectory);
+ if (_HttpClient is null)
+ throw new Exception($"{nameof(_HttpClient)} is null!");
+ CommonGatewayInterface.PutReactorStatesStatus(this, _Logistics, _HttpClient, descriptions, logisticsSequenceMemoryDirectory);
}
private Tuple> GetExtractResult(string reportFullPath, DateTime dateTime)
{
- if (dateTime == DateTime.MinValue)
- { }
- Tuple> results = new(string.Empty, null, null, new List());
+ Tuple> results;
Tuple pdsf = ProcessDataStandardFormat.GetLogisticsColumnsAndBody(reportFullPath);
_Logistics = new Logistics(reportFullPath, pdsf.Item1);
SetFileParameterLotIDToLogisticsMID();
+ JsonElement[] jsonElements = ProcessDataStandardFormat.GetArray(pdsf);
+ List descriptions = jpeg.ProcessData.GetDescriptions(jsonElements);
+ Test[] tests = (from l in descriptions select (Test)l.Test).ToArray();
+ if (_IsEAFHosted && _FileConnectorConfiguration.FileScanningIntervalInSeconds > 0)
+ SendData(dateTime, descriptions);
+ results = new Tuple>(pdsf.Item1, tests, jsonElements, new List());
return results;
}
diff --git a/Adaptation/FileHandlers/jpeg/FileRead.cs b/Adaptation/FileHandlers/jpeg/FileRead.cs
index 57b5bac..2fc6745 100644
--- a/Adaptation/FileHandlers/jpeg/FileRead.cs
+++ b/Adaptation/FileHandlers/jpeg/FileRead.cs
@@ -7,7 +7,6 @@ using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
-using System.Reflection;
using System.Text.Json;
using System.Text.RegularExpressions;
@@ -20,20 +19,21 @@ public class FileRead : Shared.FileRead, IFileRead
protected string _LastText;
protected readonly int _EndX;
protected readonly int _EndY;
+ protected readonly Size _Size;
protected readonly int _StartX;
protected readonly int _StartY;
protected string _TessDataDirectory;
protected List _PreviousTotalDeltaCollection;
protected readonly Dictionary _Reactors;
- protected readonly List<(string, Color[])> _ColorCollections;
+ protected readonly List> _ColorCollections;
- public FileRead(ISMTP smtp, Dictionary fileParameter, string cellInstanceName, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList modelObjectParameters, string equipmentDictionaryName, Dictionary> dummyRuns, bool useCyclicalForDescription, bool isEAFHosted) :
- base(new Description(), true, smtp, fileParameter, cellInstanceName, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, useCyclicalForDescription, isEAFHosted)
+ public FileRead(ISMTP smtp, Dictionary fileParameter, string cellInstanceName, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList modelObjectParameters, string equipmentDictionaryName, Dictionary> dummyRuns, Dictionary> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) :
+ base(new Description(), true, smtp, fileParameter, cellInstanceName, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted)
{
_MinFileLength = 36790;
_NullData = string.Empty;
_LastText = string.Empty;
- _Logistics = new Logistics(this);
+ _Logistics = new(this);
if (_FileParameter is null)
throw new Exception(cellInstanceConnectionName);
if (_ModelObjectParameterDefinitions is null)
@@ -42,33 +42,27 @@ public class FileRead : Shared.FileRead, IFileRead
throw new Exception(cellInstanceConnectionName);
_LastChange = DateTime.Now.AddDays(-1).Ticks;
_Reactors = new Dictionary();
- string reactor = string.Concat("Reactor.", cellInstanceName);
- ModelObjectParameterDefinition[] reactors = GetProperties(cellInstanceConnectionName, modelObjectParameters, "Reactor.");
- reactors = (from l in reactors where l.Name.EndsWith(".FilePrefix") select l).ToArray();
- if (!reactors.Any())
- throw new Exception(cellInstanceConnectionName);
- foreach (ModelObjectParameterDefinition modelObjectParameterDefinition in reactors)
- _Reactors.Add(modelObjectParameterDefinition.Name.Split('.')[1], modelObjectParameterDefinition.Value);
- string entryAssemblyLocationDirectory = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
- string x86 = Path.Combine(entryAssemblyLocationDirectory, "x86");
+ string alias = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, string.Concat("CellInstance.", cellInstanceName, ".Alias"));
+ _Reactors.Add(alias, alias);
+ string x86 = Path.Combine(AppContext.BaseDirectory, "x86");
if (!Directory.Exists(x86))
_ = Directory.CreateDirectory(x86);
- _TessDataDirectory = Path.Combine(entryAssemblyLocationDirectory, "tessdata");
+ _TessDataDirectory = Path.Combine(AppContext.BaseDirectory, "tessdata");
if (!Directory.Exists(_TessDataDirectory))
_ = Directory.CreateDirectory(_TessDataDirectory);
- string pdfttfSource = Path.Combine(entryAssemblyLocationDirectory, "pdf.ttf");
+ string pdfttfSource = Path.Combine(AppContext.BaseDirectory, "pdf.ttf");
string pdfttfDestination = Path.Combine(_TessDataDirectory, Path.GetFileName(pdfttfSource));
if (File.Exists(pdfttfSource) && !File.Exists(pdfttfDestination))
File.Copy(pdfttfSource, pdfttfDestination);
- string tesseract41dllSource = Path.Combine(entryAssemblyLocationDirectory, "tesseract41.dll");
+ string tesseract41dllSource = Path.Combine(AppContext.BaseDirectory, "tesseract41.dll");
string tesseract41dllDestination = Path.Combine(x86, Path.GetFileName(tesseract41dllSource));
if (File.Exists(tesseract41dllSource) && !File.Exists(tesseract41dllDestination))
File.Copy(tesseract41dllSource, tesseract41dllDestination);
- string engtraineddataSource = Path.Combine(entryAssemblyLocationDirectory, "eng.traineddata");
+ string engtraineddataSource = Path.Combine(AppContext.BaseDirectory, "eng.traineddata");
string engtraineddataDestination = Path.Combine(_TessDataDirectory, Path.GetFileName(engtraineddataSource));
if (File.Exists(engtraineddataSource) && !File.Exists(engtraineddataDestination))
File.Copy(engtraineddataSource, engtraineddataDestination);
- string leptonica1800dllSource = Path.Combine(entryAssemblyLocationDirectory, "leptonica-1.80.0.dll");
+ string leptonica1800dllSource = Path.Combine(AppContext.BaseDirectory, "leptonica-1.80.0.dll");
string leptonica1800dllDestination = Path.Combine(x86, Path.GetFileName(leptonica1800dllSource));
if (File.Exists(leptonica1800dllSource) && !File.Exists(leptonica1800dllDestination))
File.Copy(leptonica1800dllSource, leptonica1800dllDestination);
@@ -81,12 +75,18 @@ public class FileRead : Shared.FileRead, IFileRead
_StartY = int.Parse(startY);
_EndX = int.Parse(endX);
_EndY = int.Parse(endY);
+ _ColorCollections = new();
_PreviousTotalDeltaCollection = new();
string masterImageDirectory = GetPropertyValue(cellInstanceConnectionName, modelObjectParameters, "Path.Memory.Master.Images");
- _ColorCollections = ProcessData.GetColorCollections(_StartX, _StartY, _EndX, _EndY, masterImageDirectory);
+ List<(string File, Size Size, Color[] Colors)> colorCollections = ProcessData.GetColorCollections(_StartX, _StartY, _EndX, _EndY, masterImageDirectory);
+ int[] distinctSizes = (from l in colorCollections select l.Size.Width * l.Size.Height).Distinct().ToArray();
+ if (distinctSizes.Length != 1)
+ throw new Exception($"All Master Images must be the same size{Environment.NewLine}{string.Join(Environment.NewLine, distinctSizes)}");
+ _Size = colorCollections[0].Size;
+ _ColorCollections.AddRange(from l in colorCollections select new Tuple(l.File, l.Colors));
}
- void IFileRead.Move(Tuple> extractResults, Exception exception) => Move(extractResults, exception);
+ void IFileRead.Move(Tuple> extractResults, Exception exception) => Move(extractResults);
void IFileRead.WaitForThread() => WaitForThread(thread: null, threadExceptions: null);
@@ -151,25 +151,22 @@ public class FileRead : Shared.FileRead, IFileRead
return results;
}
- void IFileRead.CheckTests(Test[] tests, bool extra) => throw new Exception(string.Concat("Not ", nameof(_IsDuplicator)));
-
private Tuple> GetExtractResult(string reportFullPath, DateTime dateTime)
{
Tuple> results = new(string.Empty, null, null, new List());
_Logistics = new Logistics(this, reportFullPath, useSplitForMID: true);
SetFileParameterLotIDToLogisticsMID();
- if (reportFullPath.Length < _MinFileLength)
- results.Item4.Add(new FileInfo(reportFullPath));
+ if (_Logistics.FileInfo.Length < _MinFileLength)
+ results.Item4.Add(_Logistics.FileInfo);
else
{
- IProcessData iProcessData = new ProcessData(this, _Logistics, results.Item4, _StartX, _StartY, _EndX, _EndY, _ColorCollections);
+ IProcessData iProcessData = new ProcessData(this, _Logistics, results.Item4, _StartX, _StartY, _EndX, _EndY, _Size, _ColorCollections);
if (iProcessData is not ProcessData processData)
throw new Exception(string.Concat("A) No Data - ", dateTime.Ticks));
- string mid = processData.Text;
- mid = Regex.Replace(mid, @"[\\,\/,\:,\*,\?,\"",\<,\>,\|]", "_").Split('\r')[0].Split('\n')[0];
- _Logistics.MID = mid;
+ string mid = Regex.Replace(processData.Text, @"[\\,\/,\:,\*,\?,\"",\<,\>,\|]", "_").Split('\r')[0].Split('\n')[0];
SetFileParameterLotID(mid);
- _Logistics.ProcessJobID = iProcessData.GetCurrentReactor(this, _Logistics, _Reactors);
+ string processJobID = iProcessData.GetCurrentReactor(this, _Logistics, _Reactors);
+ _Logistics.Update(mid, processJobID);
if (!iProcessData.Details.Any())
throw new Exception(string.Concat("B) No Data - ", dateTime.Ticks));
if (processData.Text == _LastText && _LastChange > DateTime.Now.AddMinutes(-30).Ticks)
diff --git a/Adaptation/FileHandlers/jpeg/ProcessData.cs b/Adaptation/FileHandlers/jpeg/ProcessData.cs
index 6033395..4ab5ba0 100644
--- a/Adaptation/FileHandlers/jpeg/ProcessData.cs
+++ b/Adaptation/FileHandlers/jpeg/ProcessData.cs
@@ -8,6 +8,7 @@ using System.Drawing;
using System.IO;
using System.Linq;
using System.Text.Json;
+using System.Text.Json.Serialization;
namespace Adaptation.FileHandlers.jpeg;
@@ -29,7 +30,7 @@ public class ProcessData : IProcessData
List