class Eco::API::UseCases::DefaultCases::CodesToTagsCase

Public Instance Methods

codes_to_tags() click to toggle source
# File lib/eco/api/usecases/default_cases/codes_to_tags_case.rb, line 5
def codes_to_tags
  raise "You have not defined a tagtree for the organisation" unless session.tagtree
  csv_table = Eco::CSV.read(input_file)

  csv_table.add_column("ecoPortalTag").tap do |csv_table|
    csv_table.each do |row|
      row["ecoPortalTag"] = to_tag(row[codes_column])
    end

    File.open(output_file, "w") {|fd| fd << csv_table.to_csv}
  end
end
main(session, options, usecase) click to toggle source
# File lib/eco/api/usecases/default_cases/codes_to_tags_case.rb, line 18
def main(session, options, usecase)
  options[:end_get] = false
  @session = session; @options = options
  codes_to_tags
end

Private Instance Methods

clean_file_name(filename) click to toggle source
# File lib/eco/api/usecases/default_cases/codes_to_tags_case.rb, line 55
def clean_file_name(filename)
  File.basename(filename).gsub(/\s/, "")
end
codes_column() click to toggle source
# File lib/eco/api/usecases/default_cases/codes_to_tags_case.rb, line 43
def codes_column
  @codes_column ||= @options.dig(:other, :file, :codes_column)
end
input_file() click to toggle source
# File lib/eco/api/usecases/default_cases/codes_to_tags_case.rb, line 47
def input_file
  @input_file   ||= @options.dig(:other, :file, :name)
end
mapper() click to toggle source
# File lib/eco/api/usecases/default_cases/codes_to_tags_case.rb, line 37
def mapper
  unless mapper ||= @session.config.location_codes && @session.config.locations_mapper
    raise "No filter_tags parser, nor location mappings are present"
  end
end
output_file() click to toggle source
# File lib/eco/api/usecases/default_cases/codes_to_tags_case.rb, line 51
def output_file
  "mapped_#{clean_file_name(input_file)}"
end
to_tag(code) click to toggle source
# File lib/eco/api/usecases/default_cases/codes_to_tags_case.rb, line 26
def to_tag(code)
  if mapper.external?(code)
    mapper.to_internal(code)
  elsif @session.tagtree.tag?(code)
    code.upcase
  else
    @session.logger.warn("Unknown Location Code: '#{code}'")
    nil
  end
end