Class: Ea::Sources::Qea::TaggedValueBuilder
- Inherits:
-
Object
- Object
- Ea::Sources::Qea::TaggedValueBuilder
- Defined in:
- lib/ea/sources/qea/tagged_value_builder.rb
Overview
Builds Ea::Model::TaggedValue instances from EA's t_taggedvalue AND t_objectproperties tables. EA stores UML profile tagged values in t_taggedvalue (keyed by ElementID GUID), and per-object custom properties in t_objectproperties (keyed by Object_ID integer). Both surface as tagged values in the SVG output and merge into one list per classifier.
Instance Attribute Summary collapse
-
#database ⇒ Object
readonly
Returns the value of attribute database.
Instance Method Summary collapse
- #build_from_object_property(row) ⇒ Object
- #build_from_tagged_value(row, owner_guid) ⇒ Object
- #for_attribute(attribute_row) ⇒ Object
-
#for_object(ea_guid, ea_object_id: nil) ⇒ Object
Build tagged values for an EA object.
-
#initialize(database) ⇒ TaggedValueBuilder
constructor
A new instance of TaggedValueBuilder.
Constructor Details
#initialize(database) ⇒ TaggedValueBuilder
Returns a new instance of TaggedValueBuilder.
15 16 17 |
# File 'lib/ea/sources/qea/tagged_value_builder.rb', line 15 def initialize(database) @database = database end |
Instance Attribute Details
#database ⇒ Object (readonly)
Returns the value of attribute database.
13 14 15 |
# File 'lib/ea/sources/qea/tagged_value_builder.rb', line 13 def database @database end |
Instance Method Details
#build_from_object_property(row) ⇒ Object
47 48 49 50 51 52 53 54 |
# File 'lib/ea/sources/qea/tagged_value_builder.rb', line 47 def build_from_object_property(row) Ea::Model::TaggedValue.new( id: IdNormalizer.synthetic("op", row.ea_object_id.to_s, row.property&.gsub(/\W+/, "_")), key: row.property, value: row.value ) end |
#build_from_tagged_value(row, owner_guid) ⇒ Object
38 39 40 41 42 43 44 45 |
# File 'lib/ea/sources/qea/tagged_value_builder.rb', line 38 def build_from_tagged_value(row, owner_guid) Ea::Model::TaggedValue.new( id: IdNormalizer.synthetic("tv", owner_guid, row.tag&.gsub(/\W+/, "_")), key: row.tag, value: row.value ) end |
#for_attribute(attribute_row) ⇒ Object
31 32 33 34 35 36 |
# File 'lib/ea/sources/qea/tagged_value_builder.rb', line 31 def for_attribute(attribute_row) return [] unless attribute_row.is_a?(Ea::Qea::Models::EaAttribute) rows = database.tagged_values_for_element(attribute_row.ea_guid) || [] rows.map { |row| build_from_tagged_value(row, attribute_row.ea_guid) } end |
#for_object(ea_guid, ea_object_id: nil) ⇒ Object
Build tagged values for an EA object. Pass both the GUID (for t_taggedvalue lookups) and the integer EA Object_ID (for t_objectproperties lookups).
22 23 24 25 26 27 28 29 |
# File 'lib/ea/sources/qea/tagged_value_builder.rb', line 22 def for_object(ea_guid, ea_object_id: nil) rows = database.tagged_values_for_element(ea_guid) || [] tv = rows.map { |row| build_from_tagged_value(row, ea_guid) } return tv unless ea_object_id prop_rows = database.properties_for_object(ea_object_id) || [] tv + prop_rows.map { |row| build_from_object_property(row) } end |