class UsdaNutrientDatabase::Import::Base

Attributes

directory[R]
objects_to_import[R]

Public Class Methods

new(directory) click to toggle source
# File lib/usda_nutrient_database/import/base.rb, line 6
def initialize(directory)
  @directory = directory
  @objects_to_import = []
end

Public Instance Methods

import() click to toggle source
# File lib/usda_nutrient_database/import/base.rb, line 11
def import
  log_import_started
  CSV.open(file_location, 'r:iso-8859-1:utf-8', csv_options) do |csv|
    csv.each { |row| objects_to_import << extract_row(row) }
  end
  ar_import? ? save_objects : objects_to_import.each(&:save)
end

Private Instance Methods

apply_typecasts(row) click to toggle source
# File lib/usda_nutrient_database/import/base.rb, line 56
def apply_typecasts(row)
  row
end
ar_import?() click to toggle source
# File lib/usda_nutrient_database/import/base.rb, line 24
def ar_import?
  UsdaNutrientDatabase.activerecord_import?
end
build_ar_object(row) click to toggle source
# File lib/usda_nutrient_database/import/base.rb, line 36
def build_ar_object(row)
  find_or_initialize(row).tap do |object|
    columns.each_with_index do |column, index|
      object.send("#{column}=", row[index])
    end
  end
end
build_object(row) click to toggle source
# File lib/usda_nutrient_database/import/base.rb, line 32
def build_object(row)
  ar_import? ? build_values_array(row) : build_ar_object(row)
end
build_values_array(row) click to toggle source
# File lib/usda_nutrient_database/import/base.rb, line 44
def build_values_array(row)
  columns.map.with_index { |_, index| row[index] }
end
columns() click to toggle source
# File lib/usda_nutrient_database/import/base.rb, line 48
def columns
  raise NotImplementedError
end
csv_options() click to toggle source
# File lib/usda_nutrient_database/import/base.rb, line 68
def csv_options
  { col_sep: '^', quote_char: '~' }
end
extract_row(row) click to toggle source
# File lib/usda_nutrient_database/import/base.rb, line 28
def extract_row(row)
  build_object(apply_typecasts(row))
end
file_location() click to toggle source
# File lib/usda_nutrient_database/import/base.rb, line 60
def file_location
  "#{directory}/#{filename}"
end
filename() click to toggle source
# File lib/usda_nutrient_database/import/base.rb, line 64
def filename
  raise NotImplementedError
end
find_or_initialize(row) click to toggle source
# File lib/usda_nutrient_database/import/base.rb, line 52
def find_or_initialize(row)
  raise NotImplementedError
end
save_objects() click to toggle source
# File lib/usda_nutrient_database/import/base.rb, line 72
def save_objects
  raise NotImplementedError
end