Class: Lutaml::Qea::Factory::ConstraintTransformer

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

Overview

Transforms EA ObjectConstraint to UML Constraint

This transformer converts Enterprise Architect constraint definitions (typically OCL constraints) to standard UML Constraint objects.

Examples:

Transform a constraint

ea_constraint = Models::EaObjectConstraint.new(
  constraint_id: 1,
  object_id: 4,
  constraint: "count(self.legalConstraints) >= 1",
  constraint_type: "Invariant",
  weight: 0.0,
  status: "Approved"
)
transformer = ConstraintTransformer.new(database)
uml_constraint = transformer.transform(ea_constraint)

Instance Attribute Summary

Attributes inherited from BaseTransformer

#database

Instance Method Summary collapse

Methods inherited from BaseTransformer

#initialize, #transform_collection

Constructor Details

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

Instance Method Details

#transform(ea_constraint) ⇒ Lutaml::Uml::Constraint?

Transform EA constraint to UML Constraint

Parameters:

Returns:



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/lutaml/qea/factory/constraint_transformer.rb', line 30

def transform(ea_constraint) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
  return nil unless ea_constraint

  Lutaml::Uml::Constraint.new.tap do |constraint|
    # Generate unique ID for the constraint
    constraint.xmi_id = "constraint_#{ea_constraint.constraint_id}" if
      ea_constraint.constraint_id

    # Generate descriptive name from constraint body or use ID
    constraint.name = constraint_name(ea_constraint)

    # Map constraint properties
    constraint.body = ea_constraint.constraint
    constraint.type = ea_constraint.constraint_type
    constraint.weight = ea_constraint.weight&.to_s
    constraint.status = ea_constraint.status
  end
end