Class: Lutaml::Qea::Repositories::ObjectRepository
- Inherits:
-
BaseRepository
- Object
- BaseRepository
- Lutaml::Qea::Repositories::ObjectRepository
- Defined in:
- lib/lutaml/qea/repositories/object_repository.rb
Overview
Repository for EaObject collection with type-specific queries
This repository provides convenient methods for querying objects by type, package, and other common criteria.
Instance Attribute Summary
Attributes inherited from BaseRepository
Instance Method Summary collapse
-
#abstract_objects ⇒ Array<Models::EaObject>
Get all abstract objects.
-
#classes ⇒ Array<Models::EaObject>
Get all UML classes.
-
#components ⇒ Array<Models::EaObject>
Get all components.
-
#created_after(date) ⇒ Array<Models::EaObject>
Get objects created after a date.
-
#data_types ⇒ Array<Models::EaObject>
Get all data types.
-
#enumerations ⇒ Array<Models::EaObject>
Get all enumerations.
-
#find_by_name(pattern) ⇒ Array<Models::EaObject>
Find objects by name pattern.
-
#find_by_package(package_id) ⇒ Array<Models::EaObject>
Find objects by package ID.
-
#find_by_stereotype(stereotype) ⇒ Array<Models::EaObject>
Find objects by stereotype.
-
#find_by_type(object_type) ⇒ Array<Models::EaObject>
Find objects by type.
-
#find_by_visibility(visibility) ⇒ Array<Models::EaObject>
Find objects by visibility.
-
#interfaces ⇒ Array<Models::EaObject>
Get all interfaces.
-
#leaf_objects ⇒ Array<Models::EaObject>
Get all leaf objects.
-
#modified_after(date) ⇒ Array<Models::EaObject>
Get objects modified after a date.
-
#object_types ⇒ Array<String>
Get all object types in the collection.
-
#package_statistics ⇒ Hash<Integer, Integer>
Get statistics by package.
-
#packages ⇒ Array<Models::EaObject>
Get all packages.
-
#private_objects ⇒ Array<Models::EaObject>
Get private objects.
-
#protected_objects ⇒ Array<Models::EaObject>
Get protected objects.
-
#public_objects ⇒ Array<Models::EaObject>
Get public objects.
-
#root_objects ⇒ Array<Models::EaObject>
Get all root objects.
-
#search(query) ⇒ Array<Models::EaObject>
Search objects by name or alias.
-
#stereotypes ⇒ Array<String>
Get all stereotypes in the collection.
-
#type_statistics ⇒ Hash<String, Integer>
Get statistics by object type.
Methods inherited from BaseRepository
#all, #any?, #count, #distinct, #each, #empty?, #find, #find_by_key, #find_first, #group_by, #initialize, #none?, #order_by, #pluck, #size, #where
Constructor Details
This class inherits a constructor from Lutaml::Qea::Repositories::BaseRepository
Instance Method Details
#abstract_objects ⇒ Array<Models::EaObject>
Get all abstract objects
92 93 94 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 92 def abstract_objects where(&:abstract?) end |
#classes ⇒ Array<Models::EaObject>
Get all UML classes
50 51 52 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 50 def classes find_by_type("Class") end |
#components ⇒ Array<Models::EaObject>
Get all components
71 72 73 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 71 def components find_by_type("Component") end |
#created_after(date) ⇒ Array<Models::EaObject>
Get objects created after a date
132 133 134 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 132 def created_after(date) where { |obj| obj.createddate && obj.createddate > date } end |
#data_types ⇒ Array<Models::EaObject>
Get all data types
78 79 80 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 78 def data_types find_by_type("DataType") end |
#enumerations ⇒ Array<Models::EaObject>
Get all enumerations
64 65 66 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 64 def enumerations find_by_type("Enumeration") end |
#find_by_name(pattern) ⇒ Array<Models::EaObject>
Find objects by name pattern
120 121 122 123 124 125 126 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 120 def find_by_name(pattern) if pattern.is_a?(Regexp) where { |obj| obj.name =~ pattern } else where(name: pattern) end end |
#find_by_package(package_id) ⇒ Array<Models::EaObject>
Find objects by package ID
35 36 37 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 35 def find_by_package(package_id) where(package_id: package_id) end |
#find_by_stereotype(stereotype) ⇒ Array<Models::EaObject>
Find objects by stereotype
43 44 45 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 43 def find_by_stereotype(stereotype) where(stereotype: stereotype) end |
#find_by_type(object_type) ⇒ Array<Models::EaObject>
Find objects by type
(e.g., “Class”, “Interface”)
27 28 29 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 27 def find_by_type(object_type) where(object_type: object_type) end |
#find_by_visibility(visibility) ⇒ Array<Models::EaObject>
Find objects by visibility
180 181 182 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 180 def find_by_visibility(visibility) where(visibility: visibility) end |
#interfaces ⇒ Array<Models::EaObject>
Get all interfaces
57 58 59 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 57 def interfaces find_by_type("Interface") end |
#leaf_objects ⇒ Array<Models::EaObject>
Get all leaf objects
106 107 108 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 106 def leaf_objects where(&:leaf?) end |
#modified_after(date) ⇒ Array<Models::EaObject>
Get objects modified after a date
140 141 142 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 140 def modified_after(date) where { |obj| obj.modifieddate && obj.modifieddate > date } end |
#object_types ⇒ Array<String>
Get all object types in the collection
165 166 167 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 165 def object_types distinct(:object_type).compact end |
#package_statistics ⇒ Hash<Integer, Integer>
Get statistics by package
158 159 160 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 158 def package_statistics group_by(:package_id).transform_values(&:size) end |
#packages ⇒ Array<Models::EaObject>
Get all packages
85 86 87 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 85 def packages find_by_type("Package") end |
#private_objects ⇒ Array<Models::EaObject>
Get private objects
194 195 196 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 194 def private_objects find_by_visibility("Private") end |
#protected_objects ⇒ Array<Models::EaObject>
Get protected objects
201 202 203 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 201 def protected_objects find_by_visibility("Protected") end |
#public_objects ⇒ Array<Models::EaObject>
Get public objects
187 188 189 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 187 def public_objects find_by_visibility("Public") end |
#root_objects ⇒ Array<Models::EaObject>
Get all root objects
99 100 101 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 99 def root_objects where(&:root?) end |
#search(query) ⇒ Array<Models::EaObject>
Search objects by name or alias
209 210 211 212 213 214 215 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 209 def search(query) query_downcase = query.downcase where do |obj| obj.name&.downcase&.include?(query_downcase) || obj.alias&.downcase&.include?(query_downcase) end end |
#stereotypes ⇒ Array<String>
Get all stereotypes in the collection
172 173 174 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 172 def stereotypes distinct(:stereotype).compact end |
#type_statistics ⇒ Hash<String, Integer>
Get statistics by object type
151 152 153 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 151 def type_statistics group_by(:object_type).transform_values(&:size) end |