Module: ImportManager::StatusLog

Included in:
ImportManager
Defined in:
lib/import_manager/status_log.rb

Overview

Methods to collect errors and report the status of the import

Instance Method Summary collapse

Instance Method Details

#error_listObject



62
63
64
65
66
67
# File 'lib/import_manager/status_log.rb', line 62

def error_list
  @import_status[:errors].each_with_object([]) do |(index, errors), list|
    next if errors.empty?
    list << "##{index + 1}: #{errors.join('; ')}"
  end
end

#errors(row = nil) ⇒ Object



54
55
56
57
58
59
60
# File 'lib/import_manager/status_log.rb', line 54

def errors row=nil
  if row
    import_status.dig(:errors, row.row_index) || []
  else
    import_status[:errors] || {}
  end
end

#errors?(row = nil) ⇒ Boolean

Returns:

  • (Boolean)


46
47
48
49
50
51
52
# File 'lib/import_manager/status_log.rb', line 46

def errors? row=nil
  if row
    errors(row).present?
  else
    errors.values.flatten.present?
  end
end

#errors_by_row_indexObject



29
30
31
32
33
# File 'lib/import_manager/status_log.rb', line 29

def errors_by_row_index
  @import_status[:errors].each do |index, msgs|
    yield index, msgs
  end
end

#import_statusObject



19
20
21
# File 'lib/import_manager/status_log.rb', line 19

def import_status
  @import_status || init_import_status
end

#log_statusObject



4
5
6
7
8
# File 'lib/import_manager/status_log.rb', line 4

def log_status
  import_status[@current_row.status] ||= {}
  import_status[@current_row.status][@current_row.row_index] = @current_row.name
  import_status[:counts].step @current_row.status
end

#pick_up_card_errors(card = nil) ⇒ Object



35
36
37
38
39
40
41
42
43
44
# File 'lib/import_manager/status_log.rb', line 35

def pick_up_card_errors card=nil
  card = yield if block_given?
  if card
    card.errors.each do |error_key, msg|
      report_error "#{card.name} (#{error_key}): #{msg}"
    end
    card.errors.clear
  end
  card
end

#report(key, msg) ⇒ Object



10
11
12
13
14
15
16
17
# File 'lib/import_manager/status_log.rb', line 10

def report key, msg
  case key
  when :duplicate_in_file
    msg = "#{msg} duplicate in this file"
  end
  import_status[:reports][@current_row.row_index] ||= []
  import_status[:reports][@current_row.row_index] << msg
end

#report_error(msg) ⇒ Object

used by CSVRow objects



24
25
26
27
# File 'lib/import_manager/status_log.rb', line 24

def report_error msg
  import_status[:errors][@current_row.row_index] ||= []
  import_status[:errors][@current_row.row_index] << msg
end