Class: Bulkrax::CsvTemplate::ValueDeterminer

Inherits:
Object
  • Object
show all
Defined in:
app/services/bulkrax/csv_template/value_determiner.rb

Overview

Determines values for CSV cells

Instance Method Summary collapse

Constructor Details

#initialize(service) ⇒ ValueDeterminer

Returns a new instance of ValueDeterminer.



7
8
9
10
# File 'app/services/bulkrax/csv_template/value_determiner.rb', line 7

def initialize(service)
  @service = service
  @column_builder = CsvTemplate::ColumnBuilder.new(service)
end

Instance Method Details

#determine_value(column, model_name, field_list) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'app/services/bulkrax/csv_template/value_determiner.rb', line 12

def determine_value(column, model_name, field_list)
  key = @service.mapping_manager.mapped_to_key(column)
  required_terms = field_list.dig(model_name, 'required_terms')
  properties = field_list.dig(model_name, "properties") || []
  object_name = @service.mapping_manager.get_object_name(key)

  if properties.include?(key)
    mark_required_or_optional(key, required_terms)
  elsif object_name && properties.include?(object_name)
    # Column belongs to an `object:` mapping (e.g. `redirect_path` → object
    # `redirects`). Treat the column as required/optional based on the
    # parent property's required-terms list.
    mark_required_or_optional(object_name, required_terms)
  elsif special_column?(column, key)
    special_value(column, key, model_name, required_terms)
  end
end