QutBioacoustics/baw-server

View on GitHub
lib/gems/baw-workers/lib/baw_workers/jobs/harvest/validation.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

module BawWorkers
  module Jobs
    module Harvest
      # A validation for a file that we're going to harvest
      # !@abstract
      class Validation
        include Singleton

        # rubocop:disable Lint/UnusedMethodArgument
        # @abstract
        # @param harvest_item [HarvestItem]
        def validate(harvest_item)
          raise NotImplementedError('abstract method needs implementation')
        end
        # rubocop:enable Lint/UnusedMethodArgument

        def self.validation_name(new_name = nil)
          @validation_name = new_name if new_name.present?

          return @validation_name if defined?(@validation_name)

          raise NotImplementedError('abstract method needs implementation')
        end

        protected

        def fixable(message)
          name = self.class.validation_name
          ValidationResult.new(name:, status: ValidationResult::STATUS_FIXABLE, message:)
        end

        def not_fixable(message)
          name = self.class.validation_name
          ValidationResult.new(name:, status: ValidationResult::STATUS_NOT_FIXABLE, message:)
        end
      end
    end
  end
end