class Topographer::Importer::Mapper
Attributes
bad_columns[R]
default_values[R]
ignored_mappings[R]
key_fields[R]
missing_columns[R]
model_class[R]
optional_mappings[R]
required_mappings[R]
validation_mappings[R]
Public Class Methods
build_mapper(model_class) { |mapper_builder| ... }
click to toggle source
# File lib/topographer/importer/mapper.rb, line 19 def self.build_mapper(model_class) mapper_builder = MapperBuilder.new() yield mapper_builder new(mapper_builder, model_class) end
new(mapper_builder, model_class)
click to toggle source
# File lib/topographer/importer/mapper.rb, line 26 def initialize(mapper_builder, model_class) @required_mappings = mapper_builder.required_mappings @optional_mappings = mapper_builder.optional_mappings @ignored_mappings = mapper_builder.ignored_mappings @validation_mappings = mapper_builder.validation_mappings @default_values = mapper_builder.default_values @key_fields = mapper_builder.key_fields @field_mappings = mapper_builder.field_mappings @model_class = model_class end
Public Instance Methods
input_structure_valid?(input_columns, options={})
click to toggle source
# File lib/topographer/importer/mapper.rb, line 37 def input_structure_valid?(input_columns, options={}) ignore_unmapped_columns = options.fetch(:ignore_unmapped_columns, false) @bad_columns ||= input_columns - mapped_input_columns @missing_columns ||= required_input_columns - input_columns if ignore_unmapped_columns @missing_columns.empty? else @bad_columns.empty? && @missing_columns.empty? end end
map_input(source_data)
click to toggle source
# File lib/topographer/importer/mapper.rb, line 49 def map_input(source_data) mapping_result = Result.new(source_data.source_identifier) if source_data.empty? handle_no_data(mapping_result) else mappings.each do |_output_field, field_mapping| field_mapping.process_input(source_data.data, mapping_result) end end mapping_result end
Private Instance Methods
handle_no_data(mapping_result)
click to toggle source
# File lib/topographer/importer/mapper.rb, line 64 def handle_no_data(mapping_result) mapping_result.add_error('EmptyRow', 'Unable to import empty row.') end