Module: Lutaml::Qea
- Defined in:
- lib/lutaml/qea.rb,
lib/lutaml/qea/parser.rb,
lib/lutaml/qea/database.rb,
lib/lutaml/qea/benchmark.rb,
lib/lutaml/qea/file_detector.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/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/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/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/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
43 44 45 |
# File 'lib/lutaml/qea.rb', line 43 def configuration @configuration ||= Services::Configuration.load end |
.configuration=(config) ⇒ Object
Set a custom configuration
50 51 52 |
# File 'lib/lutaml/qea.rb', line 50 def configuration=(config) @configuration = config end |
.connect(file_path) ⇒ Infrastructure::DatabaseConnection
Connect to a QEA file
72 73 74 |
# File 'lib/lutaml/qea.rb', line 72 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
151 152 153 154 |
# File 'lib/lutaml/qea.rb', line 151 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
134 135 136 137 138 |
# File 'lib/lutaml/qea.rb', line 134 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
89 90 91 92 93 94 |
# File 'lib/lutaml/qea.rb', line 89 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
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 223 |
# File 'lib/lutaml/qea.rb', line 186 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
58 59 60 |
# File 'lib/lutaml/qea.rb', line 58 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
105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/lutaml/qea.rb', line 105 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 |