Class: Ea::Sources::Qea::TaggedValueBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/ea/sources/qea/tagged_value_builder.rb

Overview

Builds Ea::Model::TaggedValue instances from EA's t_objectproperties (and t_attributetags for attribute-level tagged values). Each row is one key/value pair; we keep the optional stereotype scope if EA recorded one.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(database) ⇒ TaggedValueBuilder

Returns a new instance of TaggedValueBuilder.



13
14
15
# File 'lib/ea/sources/qea/tagged_value_builder.rb', line 13

def initialize(database)
  @database = database
end

Instance Attribute Details

#databaseObject (readonly)

Returns the value of attribute database.



11
12
13
# File 'lib/ea/sources/qea/tagged_value_builder.rb', line 11

def database
  @database
end

Instance Method Details

#build_from_row(row, owner_guid) ⇒ Object



29
30
31
32
33
34
35
# File 'lib/ea/sources/qea/tagged_value_builder.rb', line 29

def build_from_row(row, owner_guid)
  Ea::Model::TaggedValue.new(
    id: IdNormalizer.synthetic("tv", owner_guid, row.property&.gsub(/\W+/, "_")),
    key: row.property,
    value: row.value
  )
end

#for_attribute(attribute_row) ⇒ Object



22
23
24
25
26
27
# File 'lib/ea/sources/qea/tagged_value_builder.rb', line 22

def for_attribute(attribute_row)
  return [] unless attribute_row.respond_to?(:ea_guid)

  rows = database.tagged_values_for_element(attribute_row.ea_guid) || []
  rows.map { |row| build_from_row(row, attribute_row.ea_guid) }
end

#for_object(ea_guid) ⇒ Object



17
18
19
20
# File 'lib/ea/sources/qea/tagged_value_builder.rb', line 17

def for_object(ea_guid)
  rows = database.tagged_values_for_element(ea_guid) || []
  rows.map { |row| build_from_row(row, ea_guid) }
end