Sha256: d1b49ca220daeb3f4885a5aaf5552304fa0c6ac9c9cc3dd93f266c1ee20d8b15

Contents?: true

Size: 845 Bytes

Versions: 2

Compression:

Stored size: 845 Bytes

Contents

module ETL
  module Processor
    # Ensure that each specified field is available
    class EnsureFieldsPresenceProcessor < ETL::Processor::RowProcessor
      
      # Initialize the processor.
      #
      # Configuration options:
      # * <tt>:fields</tt>: An array of keys whose presence should be verified in each row
      def initialize(control, configuration)
        super
        @fields = configuration[:fields]
        raise ControlError, ":fields must be specified" unless @fields
      end
      
      def process(row)
        missing_fields = configuration[:fields].map(&:to_s) - row.keys.map(&:to_s)
        raise(ETL::ControlError, 
          "Row missing required field(s) #{missing_fields.join(',')} in row. Available fields are : #{row.keys.join(',')}") unless missing_fields.empty?
        row
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
activewarehouse-etl-1.0.0 lib/etl/processor/ensure_fields_presence_processor.rb
activewarehouse-etl-1.0.0.rc1 lib/etl/processor/ensure_fields_presence_processor.rb