Class: ETL::Processor::HierarchyExploderProcessor
- Inherits:
-
RowProcessor
- Object
- Processor
- RowProcessor
- ETL::Processor::HierarchyExploderProcessor
- Defined in:
- lib/etl/processor/hierarchy_exploder_processor.rb
Overview
Row-level processor that will convert a single row into multiple rows designed to be inserted into a hierarchy bridge table.
Instance Attribute Summary collapse
-
#id_field ⇒ Object
Returns the value of attribute id_field.
-
#parent_id_field ⇒ Object
Returns the value of attribute parent_id_field.
Instance Method Summary collapse
-
#initialize(control, configuration = {}) ⇒ HierarchyExploderProcessor
constructor
Initialize the processor.
-
#process(row) ⇒ Object
Process the row expanding it into hierarchy values.
Constructor Details
#initialize(control, configuration = {}) ⇒ HierarchyExploderProcessor
Initialize the processor
Configuration options:
-
:connection
: The ActiveRecord adapter connection -
:id_field
: The name of the id field (defaults to ‘id’) -
:parent_id_field
: The name of the parent id field (defaults to ‘parent_id’)
TODO: Allow resolver to be implemented in a customizable fashion, i.e. don’t rely on AR as the only resolution method.
18 19 20 21 22 |
# File 'lib/etl/processor/hierarchy_exploder_processor.rb', line 18 def initialize(control, configuration={}) @id_field = configuration[:id_field] || 'id' @parent_id_field = configuration[:parent_id_field] || 'parent_id' super end |
Instance Attribute Details
#id_field ⇒ Object
Returns the value of attribute id_field.
6 7 8 |
# File 'lib/etl/processor/hierarchy_exploder_processor.rb', line 6 def id_field @id_field end |
#parent_id_field ⇒ Object
Returns the value of attribute parent_id_field.
7 8 9 |
# File 'lib/etl/processor/hierarchy_exploder_processor.rb', line 7 def parent_id_field @parent_id_field end |
Instance Method Details
#process(row) ⇒ Object
Process the row expanding it into hierarchy values
25 26 27 28 29 30 31 32 |
# File 'lib/etl/processor/hierarchy_exploder_processor.rb', line 25 def process(row) rows = [] target = configuration[:target] table = configuration[:table] conn = ETL::Engine.connection(target) build_rows([row[:id]], row[:id], row[:id], row[:parent_id].nil?, 0, rows, table, conn) rows end |