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
94 95 96 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 94 def abstract_objects where(&:abstract?) end |
#classes ⇒ Array<Models::EaObject>
Get all UML classes
52 53 54 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 52 def classes find_by_type("Class") end |
#components ⇒ Array<Models::EaObject>
Get all components
73 74 75 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 73 def components find_by_type("Component") end |
#created_after(date) ⇒ Array<Models::EaObject>
Get objects created after a date
134 135 136 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 134 def created_after(date) where { |obj| obj.createddate && obj.createddate > date } end |
#data_types ⇒ Array<Models::EaObject>
Get all data types
80 81 82 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 80 def data_types find_by_type("DataType") end |
#enumerations ⇒ Array<Models::EaObject>
Get all enumerations
66 67 68 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 66 def enumerations find_by_type("Enumeration") end |
#find_by_name(pattern) ⇒ Array<Models::EaObject>
Find objects by name pattern
122 123 124 125 126 127 128 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 122 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
37 38 39 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 37 def find_by_package(package_id) where(package_id: package_id) end |
#find_by_stereotype(stereotype) ⇒ Array<Models::EaObject>
Find objects by stereotype
45 46 47 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 45 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”)
29 30 31 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 29 def find_by_type(object_type) where(object_type: object_type) end |
#find_by_visibility(visibility) ⇒ Array<Models::EaObject>
Find objects by visibility
182 183 184 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 182 def find_by_visibility(visibility) where(visibility: visibility) end |
#interfaces ⇒ Array<Models::EaObject>
Get all interfaces
59 60 61 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 59 def interfaces find_by_type("Interface") end |
#leaf_objects ⇒ Array<Models::EaObject>
Get all leaf objects
108 109 110 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 108 def leaf_objects where(&:leaf?) end |
#modified_after(date) ⇒ Array<Models::EaObject>
Get objects modified after a date
142 143 144 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 142 def modified_after(date) where { |obj| obj.modifieddate && obj.modifieddate > date } end |
#object_types ⇒ Array<String>
Get all object types in the collection
167 168 169 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 167 def object_types distinct(:object_type).compact end |
#package_statistics ⇒ Hash<Integer, Integer>
Get statistics by package
160 161 162 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 160 def package_statistics group_by(:package_id).transform_values(&:size) end |
#packages ⇒ Array<Models::EaObject>
Get all packages
87 88 89 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 87 def packages find_by_type("Package") end |
#private_objects ⇒ Array<Models::EaObject>
Get private objects
196 197 198 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 196 def private_objects find_by_visibility("Private") end |
#protected_objects ⇒ Array<Models::EaObject>
Get protected objects
203 204 205 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 203 def protected_objects find_by_visibility("Protected") end |
#public_objects ⇒ Array<Models::EaObject>
Get public objects
189 190 191 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 189 def public_objects find_by_visibility("Public") end |
#root_objects ⇒ Array<Models::EaObject>
Get all root objects
101 102 103 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 101 def root_objects where(&:root?) end |
#search(query) ⇒ Array<Models::EaObject>
Search objects by name or alias
211 212 213 214 215 216 217 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 211 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
174 175 176 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 174 def stereotypes distinct(:stereotype).compact end |
#type_statistics ⇒ Hash<String, Integer>
Get statistics by object type
153 154 155 |
# File 'lib/lutaml/qea/repositories/object_repository.rb', line 153 def type_statistics group_by(:object_type).transform_values(&:size) end |