Module: Lutaml::Qea
- Defined in:
- lib/lutaml/qea.rb,
lib/lutaml/qea.rb,
lib/lutaml/qea/models.rb,
lib/lutaml/qea/parser.rb,
lib/lutaml/qea/factory.rb,
lib/lutaml/qea/database.rb,
lib/lutaml/qea/services.rb,
lib/lutaml/qea/benchmark.rb,
lib/lutaml/qea/validation.rb,
lib/lutaml/qea/repositories.rb,
lib/lutaml/qea/verification.rb,
lib/lutaml/qea/file_detector.rb,
lib/lutaml/qea/infrastructure.rb,
lib/lutaml/qea/models/ea_xref.rb,
lib/lutaml/qea/models/ea_object.rb,
lib/lutaml/qea/models/ea_script.rb,
lib/lutaml/qea/models/base_model.rb,
lib/lutaml/qea/models/ea_diagram.rb,
lib/lutaml/qea/models/ea_package.rb,
lib/lutaml/qea/models/ea_datatype.rb,
lib/lutaml/qea/models/ea_document.rb,
lib/lutaml/qea/models/ea_attribute.rb,
lib/lutaml/qea/models/ea_connector.rb,
lib/lutaml/qea/models/ea_operation.rb,
lib/lutaml/qea/validation/database.rb,
lib/lutaml/qea/models/ea_stereotype.rb,
lib/lutaml/qea/models/ea_object_type.rb,
lib/lutaml/qea/models/ea_status_type.rb,
lib/lutaml/qea/models/ea_diagram_link.rb,
lib/lutaml/qea/models/ea_diagram_type.rb,
lib/lutaml/qea/models/ea_tagged_value.rb,
lib/lutaml/qea/services/configuration.rb,
lib/lutaml/qea/models/ea_attribute_tag.rb,
lib/lutaml/qea/factory/base_transformer.rb,
lib/lutaml/qea/factory/document_builder.rb,
lib/lutaml/qea/factory/enum_transformer.rb,
lib/lutaml/qea/models/ea_connector_type.rb,
lib/lutaml/qea/models/ea_diagram_object.rb,
lib/lutaml/qea/services/database_loader.rb,
lib/lutaml/qea/factory/class_transformer.rb,
lib/lutaml/qea/factory/ea_to_uml_factory.rb,
lib/lutaml/qea/factory/stereotype_loader.rb,
lib/lutaml/qea/models/ea_complexity_type.rb,
lib/lutaml/qea/models/ea_constraint_type.rb,
lib/lutaml/qea/models/ea_object_property.rb,
lib/lutaml/qea/models/ea_operation_param.rb,
lib/lutaml/qea/validation/base_validator.rb,
lib/lutaml/qea/factory/reference_resolver.rb,
lib/lutaml/qea/validation/class_validator.rb,
lib/lutaml/qea/factory/association_builder.rb,
lib/lutaml/qea/factory/diagram_transformer.rb,
lib/lutaml/qea/factory/package_transformer.rb,
lib/lutaml/qea/infrastructure/table_reader.rb,
lib/lutaml/qea/models/ea_object_constraint.rb,
lib/lutaml/qea/factory/instance_transformer.rb,
lib/lutaml/qea/factory/transformer_registry.rb,
lib/lutaml/qea/infrastructure/schema_reader.rb,
lib/lutaml/qea/repositories/base_repository.rb,
lib/lutaml/qea/validation/diagram_validator.rb,
lib/lutaml/qea/validation/package_validator.rb,
lib/lutaml/qea/validation/validation_engine.rb,
lib/lutaml/qea/validation/validation_result.rb,
lib/lutaml/qea/factory/attribute_transformer.rb,
lib/lutaml/qea/factory/data_type_transformer.rb,
lib/lutaml/qea/factory/operation_transformer.rb,
lib/lutaml/qea/validation/validation_message.rb,
lib/lutaml/qea/validation/validator_registry.rb,
lib/lutaml/qea/factory/constraint_transformer.rb,
lib/lutaml/qea/factory/generalization_builder.rb,
lib/lutaml/qea/repositories/object_repository.rb,
lib/lutaml/qea/validation/attribute_validator.rb,
lib/lutaml/qea/validation/operation_validator.rb,
lib/lutaml/qea/verification/comparison_result.rb,
lib/lutaml/qea/verification/document_verifier.rb,
lib/lutaml/qea/verification/structure_matcher.rb,
lib/lutaml/qea/factory/association_transformer.rb,
lib/lutaml/qea/verification/element_comparator.rb,
lib/lutaml/qea/factory/tagged_value_transformer.rb,
lib/lutaml/qea/validation/association_validator.rb,
lib/lutaml/qea/verification/document_normalizer.rb,
lib/lutaml/qea/factory/attribute_tag_transformer.rb,
lib/lutaml/qea/factory/generalization_transformer.rb,
lib/lutaml/qea/infrastructure/database_connection.rb,
lib/lutaml/qea/factory/object_property_transformer.rb,
lib/lutaml/qea/validation/database/orphan_validator.rb,
lib/lutaml/qea/validation/formatters/json_formatter.rb,
lib/lutaml/qea/validation/formatters/text_formatter.rb,
lib/lutaml/qea/validation/database/circular_reference_validator.rb,
lib/lutaml/qea/validation/database/referential_integrity_validator.rb
Overview
QEA module provides direct SQLite database parsing for Enterprise Architect .qea files, bypassing XMI for better performance and access to EA-specific metadata.
This is the main public API for working with QEA files.
Defined Under Namespace
Modules: Factory, Infrastructure, Models, Repositories, Services, Validation, Verification Classes: Benchmark, Database, FileDetector, Parser
Constant Summary collapse
- VERSION =
QEA Parser version
"0.1.0"
Class Method Summary collapse
-
.configuration ⇒ Services::Configuration
Get the current configuration.
-
.configuration=(config) ⇒ Object
Set a custom configuration.
-
.connect(file_path) ⇒ Infrastructure::DatabaseConnection
Connect to a QEA file.
-
.database_info(qea_path, config = nil) ⇒ Hash<String, Integer>
Get quick database statistics without full loading.
-
.load_database(qea_path, config = nil, &progress_callback) ⇒ Database
Load complete database with all tables and models.
-
.open(file_path) {|Infrastructure::DatabaseConnection| ... } ⇒ Object
Open a QEA file and yield the connection.
-
.parse(qea_path, options = {}) ⇒ Lutaml::Uml::Document, Hash
Parse QEA file to complete UML Document.
-
.reload_configuration(config_path = nil) ⇒ Services::Configuration
Reload configuration from file.
-
.schema_info(file_path) ⇒ Hash
Get schema information from a QEA file.
Class Method Details
.configuration ⇒ Services::Configuration
Get the current configuration
42 43 44 |
# File 'lib/lutaml/qea.rb', line 42 def configuration @configuration ||= Services::Configuration.load end |
.configuration=(config) ⇒ Object
Set a custom configuration
49 50 51 |
# File 'lib/lutaml/qea.rb', line 49 def configuration=(config) @configuration = config end |
.connect(file_path) ⇒ Infrastructure::DatabaseConnection
Connect to a QEA file
71 72 73 |
# File 'lib/lutaml/qea.rb', line 71 def connect(file_path) Infrastructure::DatabaseConnection.new(file_path) end |
.database_info(qea_path, config = nil) ⇒ Hash<String, Integer>
Get quick database statistics without full loading
Optional custom configuration
150 151 152 153 |
# File 'lib/lutaml/qea.rb', line 150 def database_info(qea_path, config = nil) loader = Services::DatabaseLoader.new(qea_path, config) loader.quick_stats end |
.load_database(qea_path, config = nil, &progress_callback) ⇒ Database
Load complete database with all tables and models
Optional custom configuration
133 134 135 136 137 |
# File 'lib/lutaml/qea.rb', line 133 def load_database(qea_path, config = nil, &progress_callback) loader = Services::DatabaseLoader.new(qea_path, config) loader.on_progress(&progress_callback) if progress_callback loader.load end |
.open(file_path) {|Infrastructure::DatabaseConnection| ... } ⇒ Object
Open a QEA file and yield the connection
88 89 90 91 92 93 |
# File 'lib/lutaml/qea.rb', line 88 def open(file_path) connection = connect(file_path) yield connection ensure connection&.close if connection&.connected? end |
.parse(qea_path, options = {}) ⇒ Lutaml::Uml::Document, Hash
Parse QEA file to complete UML Document
(default: true) (default: false) :document and :validation_result
185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 |
# File 'lib/lutaml/qea.rb', line 185 def parse(qea_path, = {}) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength # Extract config and validation options config = .delete(:config) validate = .delete(:validate) # Load database (connection stays open) loader = Services::DatabaseLoader.new(qea_path, config) ea_database = loader.load begin # Create and execute factory factory = Factory::EaToUmlFactory.new(ea_database, ) document = factory.create_document # Run validation if requested if validate engine = Validation::ValidationEngine.new( document, database: ea_database, **, ) validation_result = engine.validate { document: document, validation_result: validation_result, } else document end ensure # Close the connection when done (unless validation needs it) if !validate && ea_database.connection && !ea_database.connection.closed? ea_database.connection&.close end end end |
.reload_configuration(config_path = nil) ⇒ Services::Configuration
Reload configuration from file
57 58 59 |
# File 'lib/lutaml/qea.rb', line 57 def reload_configuration(config_path = nil) @configuration = Services::Configuration.load(config_path) end |
.schema_info(file_path) ⇒ Hash
Get schema information from a QEA file
104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/lutaml/qea.rb', line 104 def schema_info(file_path) connection = connect(file_path) connection.with_connection do |db| reader = Infrastructure::SchemaReader.new(db) { tables: reader.tables, statistics: reader.statistics, } end ensure connection&.close if connection&.connected? end |