Class: Mxrb::Compiler::DatabaseConnectorActionCompiler
- Inherits:
-
Object
- Object
- Mxrb::Compiler::DatabaseConnectorActionCompiler
- Includes:
- ModelValues
- Defined in:
- lib/mxrb/compiler/database_connector_action_compiler.rb
Overview
Mirrors Mendix's Database Connector build extension by lowering custom activities to Java calls. The mapping mirrors one cohesive external build-extension contract. rubocop:disable Metrics/AbcSize, Metrics/ClassLength, Metrics/CyclomaticComplexity, rubocop:disable Metrics/MethodLength, Metrics/PerceivedComplexity
Instance Method Summary collapse
- #compile(action) ⇒ Object
-
#initialize(source) ⇒ DatabaseConnectorActionCompiler
constructor
A new instance of DatabaseConnectorActionCompiler.
- #unconfigured_write?(action) ⇒ Boolean
Constructor Details
#initialize(source) ⇒ DatabaseConnectorActionCompiler
Returns a new instance of DatabaseConnectorActionCompiler.
15 16 17 18 |
# File 'lib/mxrb/compiler/database_connector_action_compiler.rb', line 15 def initialize(source) @source = source @connections = connection_index end |
Instance Method Details
#compile(action) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/mxrb/compiler/database_connector_action_compiler.rb', line 20 def compile(action) connection, query = resolve_query(action['Query'].to_s) java_action = java_action_for(query) mappings = basic_mappings(action, connection, query, java_action) mappings.concat(result_mappings(query, java_action)) { '$ID' => action['$ID'], '$Type' => 'Microflows$JavaActionCallAction', 'QueueSettings' => nil, 'ParameterMappings' => mappings, 'ErrorHandlingType' => action['ErrorHandlingType'], 'JavaAction' => java_action, 'ResultVariableName' => action['OutputVariableName'].to_s, 'UseReturnVariable' => true } end |
#unconfigured_write?(action) ⇒ Boolean
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/mxrb/compiler/database_connector_action_compiler.rb', line 34 def unconfigured_write?(action) return false unless action&.fetch('$Type', nil) == 'DatabaseConnector$ExecuteDatabaseQueryAction' connection, query = resolve_query(action['Query'].to_s) return false if selecting_query?(query) override = array(action['ConnectionParameterMappings']).find do |mapping| mapping['ParameterName'].to_s.casecmp('DBSource').zero? end return false unless override.nil? || override['Value'].to_s.strip.empty? constant_name = connection['ConnectionString'].to_s constant = @source.units.find do |unit| unit.document['$Type'] == 'Constants$Constant' && "#{unit.module_name}.#{unit.document['Name']}" == constant_name end constant && constant.document['DefaultValue'].to_s.empty? end |