Class: Insdc::ImportCountries
- Inherits:
-
Object
- Object
- Insdc::ImportCountries
- Defined in:
- lib/insdc/import_countries.rb
Overview
Handles the download and import of permitted country fields from the ENA
Constant Summary collapse
- FILE_ROOT =
Rails.root.join('data/sample_checklists')
- FIELD_NAME =
'geographic location (country and/or sea)'- XPATH =
"//FIELD//LABEL[text() = '#{FIELD_NAME}']/following-sibling::FIELD_TYPE//TEXT_VALUE//VALUE".freeze
Instance Method Summary collapse
- #download(force: false) ⇒ Object
- #import ⇒ Object
-
#initialize(ena_root:, sample_checklist:, priorities: {}) ⇒ ImportCountries
constructor
A new instance of ImportCountries.
Constructor Details
#initialize(ena_root:, sample_checklist:, priorities: {}) ⇒ ImportCountries
Returns a new instance of ImportCountries.
11 12 13 14 15 |
# File 'lib/insdc/import_countries.rb', line 11 def initialize(ena_root:, sample_checklist:, priorities: {}) @ena_root = ena_root @sample_checklist = sample_checklist @priorities = priorities end |
Instance Method Details
#download(force: false) ⇒ Object
17 18 19 20 21 22 |
# File 'lib/insdc/import_countries.rb', line 17 def download(force: false) return unless force || file_missing? payload = RestClient.get(url).body File.write(file_name, payload) end |
#import ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/insdc/import_countries.rb', line 24 def import no_file_error if file_missing? existing_valid_countries = Insdc::Country.valid_state.pluck(:name) existing_invalid_countries = Insdc::Country.invalid_state.pluck(:name) existing_countries = Insdc::Country.pluck(:name) existing_countries_to_mark_valid = countries_to_import & existing_invalid_countries existing_countries_to_mark_invalid = existing_valid_countries - countries_to_import new_countries_to_add = countries_to_import - existing_countries mark_as_valid(existing_countries_to_mark_valid) mark_as_invalid(existing_countries_to_mark_invalid) add_countries(new_countries_to_add) Rails.logger.info { "#{existing_countries_to_mark_valid.size} existing countries marked as valid" } Rails.logger.info { "#{existing_countries_to_mark_invalid.size} existing countries marked as invalid" } Rails.logger.info { "#{new_countries_to_add.size} new countries added" } end |