Class: Lutaml::Qea::Factory::ReferenceResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/lutaml/qea/factory/reference_resolver.rb

Overview

Resolves references between EA and UML elements Maps EA GUIDs to UML xmi_ids and maintains object relationships

Instance Method Summary collapse

Constructor Details

#initializeReferenceResolver

Initialize empty resolver



10
11
12
13
# File 'lib/lutaml/qea/factory/reference_resolver.rb', line 10

def initialize
  @guid_to_element = {}
  @object_id_to_name = {}
end

Instance Method Details

#clearvoid

This method returns an undefined value.

Clear all mappings



72
73
74
75
# File 'lib/lutaml/qea/factory/reference_resolver.rb', line 72

def clear
  @guid_to_element.clear
  @object_id_to_name.clear
end

#register(ea_guid, uml_element) ⇒ void

This method returns an undefined value.

Register EA GUID to UML element mapping

Parameters:

  • ea_guid (String)

    EA GUID

  • uml_element (Object)

    UML element with xmi_id



19
20
21
22
23
# File 'lib/lutaml/qea/factory/reference_resolver.rb', line 19

def register(ea_guid, uml_element)
  return if ea_guid.nil? || uml_element.nil?

  @guid_to_element[normalize_guid(ea_guid)] = uml_element
end

#register_object_name(object_id, name) ⇒ void

This method returns an undefined value.

Register object ID to name mapping

Parameters:

  • object_id (Integer)

    EA object ID

  • name (String)

    Object name



29
30
31
32
33
# File 'lib/lutaml/qea/factory/reference_resolver.rb', line 29

def register_object_name(object_id, name)
  return if object_id.nil?

  @object_id_to_name[object_id] = name
end

#registered?(ea_guid) ⇒ Boolean

Check if GUID is registered

Parameters:

  • ea_guid (String)

    EA GUID

Returns:

  • (Boolean)

    True if registered



64
65
66
67
68
# File 'lib/lutaml/qea/factory/reference_resolver.rb', line 64

def registered?(ea_guid)
  return false if ea_guid.nil?

  @guid_to_element.key?(normalize_guid(ea_guid))
end

#resolve(ea_guid) ⇒ Object?

Resolve EA GUID to UML element

Parameters:

  • ea_guid (String)

    EA GUID

Returns:

  • (Object, nil)

    UML element or nil if not found



38
39
40
41
42
# File 'lib/lutaml/qea/factory/reference_resolver.rb', line 38

def resolve(ea_guid)
  return nil if ea_guid.nil?

  @guid_to_element[normalize_guid(ea_guid)]
end

#resolve_object_name(object_id) ⇒ String?

Get object name by object ID

Parameters:

  • object_id (Integer)

    EA object ID

Returns:

  • (String, nil)

    Object name or nil if not found



47
48
49
50
51
# File 'lib/lutaml/qea/factory/reference_resolver.rb', line 47

def resolve_object_name(object_id)
  return nil if object_id.nil?

  @object_id_to_name[object_id]
end

#resolve_xmi_id(ea_guid) ⇒ String?

Get UML xmi_id by EA GUID

Parameters:

  • ea_guid (String)

    EA GUID

Returns:

  • (String, nil)

    xmi_id or nil if not found



56
57
58
59
# File 'lib/lutaml/qea/factory/reference_resolver.rb', line 56

def resolve_xmi_id(ea_guid)
  element = resolve(ea_guid)
  element&.xmi_id
end

#statsHash

Get statistics

Returns:

  • (Hash)

    Statistics about registered elements



79
80
81
82
83
84
# File 'lib/lutaml/qea/factory/reference_resolver.rb', line 79

def stats
  {
    total_elements: @guid_to_element.size,
    total_objects: @object_id_to_name.size,
  }
end