class CDMDEXER::TransformWorker

Attributes

batch_size[R]
cdm_endpoint[R]
cdm_item_klass[W]
field_mappings[R]
load_worker_klass[W]
oai_endpoint[R]
records[R]
solr_config[R]
transformer_klass[W]
transformer_worker_klass[W]

Public Instance Methods

cdm_item_klass() click to toggle source
# File lib/cdmdexer/transform_worker.rb, line 34
def cdm_item_klass
  @cdm_item_klass ||= CdmItem
end
load_worker_klass() click to toggle source
# File lib/cdmdexer/transform_worker.rb, line 42
def load_worker_klass
  @load_worker_klass ||= LoadWorker
end
perform(records, solr_config, cdm_endpoint, oai_endpoint, field_mappings, batch_size) click to toggle source
# File lib/cdmdexer/transform_worker.rb, line 17
def perform(records,
            solr_config,
            cdm_endpoint,
            oai_endpoint,
            field_mappings,
            batch_size)

  @records           = records
  @solr_config       = solr_config
  @cdm_endpoint      = cdm_endpoint
  @oai_endpoint      = oai_endpoint
  @field_mappings    = field_mappings
  @batch_size        = batch_size
  transform_and_load!
  transform_and_load_compounds!
end
transformer_klass() click to toggle source
# File lib/cdmdexer/transform_worker.rb, line 38
def transformer_klass
  @transformer_klass ||= Transformer
end
transformer_worker_klass() click to toggle source
# File lib/cdmdexer/transform_worker.rb, line 46
def transformer_worker_klass
  @transformer_worker_klass ||= TransformWorker
end

Private Instance Methods

cmd_items() click to toggle source
# File lib/cdmdexer/transform_worker.rb, line 75
def cmd_items
  @cdm_items ||= records.map do |record|
    cdm_item_klass.new(record: record, cdm_endpoint: cdm_endpoint)
  end
end
complete_records() click to toggle source
# File lib/cdmdexer/transform_worker.rb, line 87
def complete_records
  records.map do |record|
    cdm_request(*identifier)
  end
end
compound_records() click to toggle source
# File lib/cdmdexer/transform_worker.rb, line 71
def compound_records
  cmd_items.map(&:page).flatten
end
transform_and_load!() click to toggle source
# File lib/cdmdexer/transform_worker.rb, line 67
def transform_and_load!
  load_worker_klass.perform_async(transformed_records, [], solr_config)
end
transform_and_load_compounds!() click to toggle source

Recursivly call the transformer_worker with all the the compound data we have collected in the first pass

# File lib/cdmdexer/transform_worker.rb, line 54
def transform_and_load_compounds!
  compound_records.each_slice(batch_size) do |compound_records_batch|
    transformer_worker_klass.perform_async(
      compound_records_batch,
      solr_config,
      cdm_endpoint,
      oai_endpoint,
      field_mappings,
      batch_size
    )
  end
end
transformed_records() click to toggle source
# File lib/cdmdexer/transform_worker.rb, line 81
def transformed_records
  transformer_klass.new(cdm_records: cmd_items.map(&:to_h),
                        oai_endpoint: oai_endpoint,
                        field_mappings: field_mappings).records
end