Class: Lutaml::Qea::Models::EaTaggedValue

Inherits:
BaseModel
  • Object
show all
Defined in:
lib/lutaml/qea/models/ea_tagged_value.rb

Overview

EA Tagged Value model

Represents tagged values (custom metadata) attached to UML elements in the t_taggedvalue table.

Examples:

Create from database row

row = {
  "PropertyID" => "{GUID}",
  "ElementID" => "{ELEMENT-GUID}",
  "BaseClass" => "ASSOCIATION_SOURCE",
  "TagValue" => "sequenceNumber|15$ea_notes=Unique integer...",
  "Notes" => nil
}
tagged_value = EaTaggedValue.from_db_row(row)

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BaseModel

#primary_key

Class Method Details

.from_db_row(row) ⇒ EaTaggedValue?

Create from database row

Parameters:

  • row (Hash)

    Database row with string keys

Returns:



41
42
43
44
45
46
47
48
49
50
51
# File 'lib/lutaml/qea/models/ea_tagged_value.rb', line 41

def self.from_db_row(row)
  return nil if row.nil?

  new(
    property_id: row["PropertyID"],
    element_id: row["ElementID"],
    base_class: row["BaseClass"],
    tag_value: row["TagValue"],
    notes: row["Notes"],
  )
end

.primary_key_columnSymbol

Returns Primary key column name.

Returns:

  • (Symbol)

    Primary key column name



28
29
30
# File 'lib/lutaml/qea/models/ea_tagged_value.rb', line 28

def self.primary_key_column
  :property_id
end

.table_nameString

Returns Database table name.

Returns:

  • (String)

    Database table name



33
34
35
# File 'lib/lutaml/qea/models/ea_tagged_value.rb', line 33

def self.table_name
  "t_taggedvalue"
end

Instance Method Details

#parsed_notesString?

Parse notes from TagValue field

Extract ea_notes if present in TagValue

Returns:

  • (String, nil)

    Extracted notes



92
93
94
95
96
97
98
99
# File 'lib/lutaml/qea/models/ea_tagged_value.rb', line 92

def parsed_notes # rubocop:disable Metrics/CyclomaticComplexity
  return notes if notes && !notes.empty?
  return nil unless tag_value&.include?("$ea_notes=")

  # Extract ea_notes value
  parts = tag_value.split("$ea_notes=", 2)
  parts[1]&.strip if parts.length > 1
end

#parsed_valueString?

Parse tag value from TagValue field

TagValue format: “tagName|value$ea_notes=description”

Returns:

  • (String, nil)

    Tag value



72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/lutaml/qea/models/ea_tagged_value.rb', line 72

def parsed_value
  return nil unless tag_value

  # Check if there's a pipe separator
  return nil unless tag_value.include?("|")

  # Split on pipe first
  parts = tag_value.split("|", 2)
  return nil if parts.length < 2

  # Get the value part (before $)
  value_part = parts[1].split("$", 2)[0]
  value_part&.strip
end

#tag_nameString?

Parse tag name from TagValue field

TagValue format: “tagName|value$ea_notes=description” or “tagName$ea_notes=description”

Returns:

  • (String, nil)

    Tag name



59
60
61
62
63
64
65
# File 'lib/lutaml/qea/models/ea_tagged_value.rb', line 59

def tag_name
  return nil unless tag_value

  # Split on | or $ to get the tag name
  parts = tag_value.split(/[|$]/, 2)
  parts[0]&.strip
end