class Longleaf::ValidateMetadataCommand

Command for validating file metadata longleaf

Public Class Methods

new(app_manager) click to toggle source
# File lib/longleaf/commands/validate_metadata_command.rb, line 11
def initialize(app_manager)
  @app_manager = app_manager
end

Public Instance Methods

execute(file_selector:) click to toggle source

Execute the validation command @param file_selector [FileSelector] selector for files to register @return [Integer] status code

# File lib/longleaf/commands/validate_metadata_command.rb, line 18
def execute(file_selector:)
  start_time = Time.now
  logger.info('Performing validate metadata command')
  begin
    # Perform metadata validation on each of the file paths provided
    loop do
      f_path = file_selector.next_path
      break if f_path.nil?

      storage_location = @app_manager.location_manager.get_location_by_path(f_path)

      begin
        file_rec = FileRecord.new(f_path, storage_location)
        unless file_rec.metadata_present?
          raise MetadataError.new("Cannot validate metadata for #{f_path}, file is not registered.")
        end

        @app_manager.md_manager.load(file_rec)
        record_success("Metadata for file passed validation: #{f_path}")
      rescue LongleafError => err
        record_failure(err.message)
      end
    end
  rescue RegistrationError, InvalidStoragePathError, StorageLocationUnavailableError => err
    record_failure(err.message)
  rescue => err
    record_failure("Encountered error while validating metadata files", error: err)
  end

  logger.info("Completed validate metadata command in #{Time.now - start_time}s")
  return_status
end