Sha256: 342804c56b1c2d58d7c111d27e382e3c9454f07425b9b4e72bc8eba59e4dced0

Contents?: true

Size: 1.73 KB

Versions: 4

Compression:

Stored size: 1.73 KB

Contents

require 'longleaf/services/application_config_deserializer'
require 'longleaf/models/file_record'
require 'longleaf/events/event_status_tracking'
require 'longleaf/errors'

module Longleaf
  # Command for validating file metadata longleaf
  class ValidateMetadataCommand
    include Longleaf::EventStatusTracking

    def initialize(app_manager)
      @app_manager = app_manager
    end

    # Execute the validation command
    # @param file_selector [FileSelector] selector for files to register
    # @return [Integer] status code
    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
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
longleaf-1.1.1 lib/longleaf/commands/validate_metadata_command.rb
longleaf-1.1.0 lib/longleaf/commands/validate_metadata_command.rb
longleaf-1.0.0 lib/longleaf/commands/validate_metadata_command.rb
longleaf-0.3.0 lib/longleaf/commands/validate_metadata_command.rb