Class: CdmMigrator::CsvChecker
- Inherits:
-
Object
- Object
- CdmMigrator::CsvChecker
- Defined in:
- app/models/cdm_migrator/csv_checker.rb
Instance Method Summary collapse
-
#check_csv(csv, multi_value_separator = "|") ⇒ Hash
@param - the path to the CSV.
-
#initialize ⇒ CsvChecker
constructor
A new instance of CsvChecker.
Constructor Details
#initialize ⇒ CsvChecker
Returns a new instance of CsvChecker.
4 5 6 |
# File 'app/models/cdm_migrator/csv_checker.rb', line 4 def initialize load_config end |
Instance Method Details
#check_csv(csv, multi_value_separator = "|") ⇒ Hash
@param - the path to the CSV
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'app/models/cdm_migrator/csv_checker.rb', line 11 def check_csv(csv, multi_value_separator = "|") @csv = csv row_number = 1 results = {} @error_list = {} @alerts = [] check_mounted_drive if @path_to_drive.present? CSV.foreach(csv, headers: true, header_converters: :symbol) do |row| row_number +=1 # Tells user what CSV row the error is on if row[:object_type].try(:include?, "Work") check_dates(row_number, row) if @date_fields.present? check_uris(row_number, row) if @uri_fields.present? if @separator_fields.present? check_multi_val_fields(row_number, row, multi_value_separator) else = "No multi-value separator character was selected or no fields were configured. CSV Checker didn't check for valid separators." if @alerts.exclude?() # Only add this message once, rather than per line @alerts << end end elsif row[:object_type] == "File" check_file_path(row_number, row[:url]) check_transcript_length(row_number, row[:transcript]) if row[:transcript].present? check_file_size(row_number, row[:url]) else @error_list[row_number] = { "object_type" => "No or unknown object type. Please give a valid type (e.g. GenericWork, File)." } @error_list = @error_list.delete_if { |_, value| value.blank? } # Data are valid, no need to print the row end end results['errors'] = @error_list results['alerts'] = @alerts results end |