Class: Ea::Transformers::QeaToXmi::Context

Inherits:
Object
  • Object
show all
Defined in:
lib/ea/transformers/qea_to_xmi/context.rb

Overview

Shared state passed across the walk.

Wraps the Qea::Database and provides:

  • ID-derivation helpers (xmi_id_for, end_xmi_id_for) backed by GuidFormat
  • delegated database lookups (objects, packages, attributes, etc.)

The Qea::Database already maintains its own lookup indexes (object-by-id, connectors-by-object, attributes-by-object, etc.). This class delegates to those rather than re-indexing — single source of truth lives on the database.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(database:) ⇒ Context

Returns a new instance of Context.



20
21
22
23
# File 'lib/ea/transformers/qea_to_xmi/context.rb', line 20

def initialize(database:)
  @database = database
  @id_allocator = IdAllocator.new
end

Instance Attribute Details

#databaseObject (readonly)

Returns the value of attribute database.



18
19
20
# File 'lib/ea/transformers/qea_to_xmi/context.rb', line 18

def database
  @database
end

#id_allocatorObject (readonly)

Returns the value of attribute id_allocator.



18
19
20
# File 'lib/ea/transformers/qea_to_xmi/context.rb', line 18

def id_allocator
  @id_allocator
end

Instance Method Details

#attributes_for(object_id) ⇒ Array<Ea::Qea::Models::EaAttribute>

Parameters:

  • object_id (Integer)

Returns:



71
72
73
# File 'lib/ea/transformers/qea_to_xmi/context.rb', line 71

def attributes_for(object_id)
  database.attributes_for_object(object_id)
end

#child_packages(package_id) ⇒ Array<Ea::Qea::Models::EaPackage>

Parameters:

  • package_id (Integer)

Returns:



59
60
61
# File 'lib/ea/transformers/qea_to_xmi/context.rb', line 59

def child_packages(package_id)
  database.child_packages_for(package_id)
end

#connectors_for(object_id) ⇒ Array<Ea::Qea::Models::EaConnector>

Connectors where the object is on either side.

Parameters:

  • object_id (Integer)

Returns:



90
91
92
# File 'lib/ea/transformers/qea_to_xmi/context.rb', line 90

def connectors_for(object_id)
  database.connectors_for_object(object_id)
end

#connectors_starting_at(object_id) ⇒ Array<Ea::Qea::Models::EaConnector>

Connectors where this object is the start (source) — used to decide which package owns a relationship connector.

Parameters:

  • object_id (Integer)

Returns:



98
99
100
101
102
# File 'lib/ea/transformers/qea_to_xmi/context.rb', line 98

def connectors_starting_at(object_id)
  database.connectors_for_object(object_id).select do |conn|
    conn.start_object_id == object_id
  end
end

#end_xmi_id_for(connector_xmi_id, side:) ⇒ String

Parameters:

  • connector_xmi_id (String)
  • side (Symbol)

    :source or :destination

Returns:

  • (String)


39
40
41
# File 'lib/ea/transformers/qea_to_xmi/context.rb', line 39

def end_xmi_id_for(connector_xmi_id, side:)
  GuidFormat.connector_end_xmi_id(connector_xmi_id, side: side)
end

#object_by_guid(ea_guid) ⇒ Ea::Qea::Models::EaObject?

Parameters:

  • ea_guid (String)

Returns:



47
48
49
# File 'lib/ea/transformers/qea_to_xmi/context.rb', line 47

def object_by_guid(ea_guid)
  database.find_object_by_guid(ea_guid)
end

#object_by_id(object_id) ⇒ Ea::Qea::Models::EaObject?

Parameters:

  • object_id (Integer)

Returns:



53
54
55
# File 'lib/ea/transformers/qea_to_xmi/context.rb', line 53

def object_by_id(object_id)
  database.find_object(object_id)
end

#objects_in_package(package_id) ⇒ Array<Ea::Qea::Models::EaObject>

Parameters:

  • package_id (Integer)

Returns:



65
66
67
# File 'lib/ea/transformers/qea_to_xmi/context.rb', line 65

def objects_in_package(package_id)
  database.objects_in_package(package_id)
end

#operations_for(object_id) ⇒ Array<Ea::Qea::Models::EaOperation>

Parameters:

  • object_id (Integer)

Returns:



77
78
79
# File 'lib/ea/transformers/qea_to_xmi/context.rb', line 77

def operations_for(object_id)
  database.operations_for_object(object_id)
end

#params_for_operation(operation_id) ⇒ Array<Ea::Qea::Models::EaOperationParam>

Parameters:

  • operation_id (Integer)

Returns:



83
84
85
# File 'lib/ea/transformers/qea_to_xmi/context.rb', line 83

def params_for_operation(operation_id)
  database.operation_params_for(operation_id)
end

#xmi_id_for(record, prefix: "EAID") ⇒ String?

Parameters:

  • record (#ea_guid)
  • prefix (String) (defaults to: "EAID")

    "EAID" (default) or "EAPK" for top-level packages

Returns:

  • (String, nil)


30
31
32
33
34
# File 'lib/ea/transformers/qea_to_xmi/context.rb', line 30

def xmi_id_for(record, prefix: "EAID")
  return nil unless record&.ea_guid

  GuidFormat.ea_guid_to_xmi_id(record.ea_guid, prefix: prefix)
end