Class: Lutaml::Qea::Factory::AssociationBuilder

Inherits:
BaseTransformer show all
Defined in:
lib/lutaml/qea/factory/association_builder.rb

Constant Summary collapse

ASSOC_TYPES =
["Association", "Aggregation", "Composition"].freeze

Instance Attribute Summary

Attributes inherited from BaseTransformer

#database

Instance Method Summary collapse

Methods inherited from BaseTransformer

#initialize, #transform, #transform_collection

Constructor Details

This class inherits a constructor from Lutaml::Qea::Factory::BaseTransformer

Instance Method Details

#build_connector_attribute(ea_connector, object_id, obj, obj_pkg_name) ⇒ Object



39
40
41
42
43
44
45
46
# File 'lib/lutaml/qea/factory/association_builder.rb', line 39

def build_connector_attribute(ea_connector, object_id, obj,
obj_pkg_name)
  if ea_connector.start_object_id == object_id
    build_end_attribute(ea_connector, obj, obj_pkg_name)
  elsif ea_connector.end_object_id == object_id
    build_start_attribute(ea_connector, obj, obj_pkg_name)
  end
end

#create_association_attribute(name:, type:, type_xmi_id:, association_xmi_id:, cardinality:, definition:, gen_name:, name_ns:, type_ns:, is_src: true) ⇒ Object

rubocop:disable Metrics/ParameterLists



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/lutaml/qea/factory/association_builder.rb', line 48

def create_association_attribute( # rubocop:disable Metrics/ParameterLists
  name:, type:, type_xmi_id:,
  association_xmi_id:, cardinality:, definition:,
  gen_name:, name_ns:, type_ns:, is_src: true
)
  Lutaml::Uml::GeneralAttribute.new.tap do |attr|
    assign_assoc_attr_basic(attr, name, type, gen_name, definition,
                            name_ns, type_ns)
    attr.xmi_id = normalize_guid_to_xmi_format(type_xmi_id, "EAID")
    attr.association = normalize_guid_to_xmi_format(
      association_xmi_id, "EAID"
    )
    attr.has_association = true
    attr.id = normalize_guid_to_xmi_src_dst_format(
      association_xmi_id, "EAID", is_src
    )
    attr.cardinality = build_cardinality(cardinality)
  end
end

#load_association_attributes(object_id) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/lutaml/qea/factory/association_builder.rb', line 25

def load_association_attributes(object_id)
  return [] if object_id.nil?

  assoc_connectors = database.connectors_for_object(object_id)
    .select { |c| ASSOC_TYPES.include?(c.connector_type) }
  obj = find_object_by_id(object_id)
  obj_pkg_name = find_package_name(obj&.package_id)

  assoc_connectors.filter_map do |ea_connector|
    build_connector_attribute(ea_connector, object_id, obj,
                              obj_pkg_name)
  end
end

#load_class_associations(object_id, object_guid) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/lutaml/qea/factory/association_builder.rb', line 11

def load_class_associations(object_id, object_guid)
  return [] if object_id.nil?

  normalized_owner_xmi_id = normalize_guid_to_xmi_format(object_guid,
                                                         "EAID")

  assoc_connectors = database.connectors_for_object(object_id)
    .select { |c| ASSOC_TYPES.include?(c.connector_type) }

  assoc_connectors.filter_map do |ea_connector|
    build_association(ea_connector, object_id, normalized_owner_xmi_id)
  end
end