Class: Lutaml::Qea::Factory::DiagramTransformer
- Inherits:
-
BaseTransformer
- Object
- BaseTransformer
- Lutaml::Qea::Factory::DiagramTransformer
- Defined in:
- lib/lutaml/qea/factory/diagram_transformer.rb
Overview
Transforms EA diagrams to UML diagrams
This transformer loads diagram data along with diagram objects (visual placement) and diagram links (visual connector routing) to create a complete UML diagram representation.
Instance Attribute Summary
Attributes inherited from BaseTransformer
Instance Method Summary collapse
-
#transform(ea_diagram) ⇒ Lutaml::Uml::Diagram
Transform EA diagram to UML diagram.
Methods inherited from BaseTransformer
#initialize, #transform_collection
Constructor Details
This class inherits a constructor from Lutaml::Qea::Factory::BaseTransformer
Instance Method Details
#transform(ea_diagram) ⇒ Lutaml::Uml::Diagram
Transform EA diagram to UML diagram
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/lutaml/qea/factory/diagram_transformer.rb', line 20 def transform(ea_diagram) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity,Metrics/MethodLength return nil if ea_diagram.nil? Lutaml::Uml::Diagram.new.tap do |diagram| # rubocop:disable Metrics/BlockLength # Map basic properties diagram.name = ea_diagram.name diagram.xmi_id = normalize_guid_to_xmi_format(ea_diagram.ea_guid, "EAID") # TODO: Fix diagram_type assignment - # lutaml-model compatibility issue # diagram.diagram_type = ea_diagram.diagram_type # Map package relationship - use GUID not numeric ID if ea_diagram.package_id package = find_package(ea_diagram.package_id) if package diagram.package_id = normalize_guid_to_xmi_format( package.ea_guid, "EAPK" ) diagram.package_name = package.name end end # Map definition/notes diagram.definition = ea_diagram.notes unless ea_diagram.notes.nil? || ea_diagram.notes.empty? # Map stereotype if ea_diagram.stereotype && !ea_diagram.stereotype.empty? diagram.stereotype = [ea_diagram.stereotype] end # Load and transform diagram objects (visual placement) diagram_objects = load_diagram_objects(ea_diagram.diagram_id) if diagram_objects.any? diagram.diagram_objects.concat(diagram_objects) end # Load and transform diagram links (visual routing) diagram_links = load_diagram_links(ea_diagram.diagram_id) diagram.diagram_links.concat(diagram_links) if diagram_links.any? # Load diagram type diagram.diagram_type = ea_diagram.diagram_type # Load diagram id diagram.package_id = ea_diagram.package_id end end |