Class: AtlasEngine::AddressValidation::Es::Validators::FullAddress

Inherits:
FullAddressValidatorBase show all
Includes:
LogHelper
Defined in:
app/models/atlas_engine/address_validation/es/validators/full_address.rb

Direct Known Subclasses

FullAddressStreet

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from LogHelper

#log_error, #log_info, #log_warn

Constructor Details

#initialize(address:, result: Result.new) ⇒ FullAddress

Returns a new instance of FullAddress.



14
15
16
17
# File 'app/models/atlas_engine/address_validation/es/validators/full_address.rb', line 14

def initialize(address:, result: Result.new)
  super
  @matching_strategy = MatchingStrategies::Es
end

Instance Attribute Details

#addressObject (readonly)

Returns the value of attribute address.



11
12
13
# File 'app/models/atlas_engine/address_validation/es/validators/full_address.rb', line 11

def address
  @address
end

#resultObject (readonly)

Returns the value of attribute result.



11
12
13
# File 'app/models/atlas_engine/address_validation/es/validators/full_address.rb', line 11

def result
  @result
end

Instance Method Details

#build_candidate_resultObject



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'app/models/atlas_engine/address_validation/es/validators/full_address.rb', line 30

def build_candidate_result
  unless supported_address?(address)
    return AddressValidation::Validators::FullAddress::UnsupportedScriptResult.new(address:, result:)
  end

  if best_candidate.nil?
    AddressValidation::Validators::FullAddress::NoCandidateResult.new(address:, result:)
  else
    AddressValidation::Validators::FullAddress::CandidateResult.new(
      address_comparison: T.must(best_candidate),
      matching_strategy: @matching_strategy,
      result: result,
    )
  end
end

#validateObject



20
21
22
23
24
25
26
27
# File 'app/models/atlas_engine/address_validation/es/validators/full_address.rb', line 20

def validate
  return result if concerns_preclude_validation

  candidate_result = build_candidate_result
  candidate_result.update_result
  publish_notification(candidate_result: candidate_result)
  result
end