Class: Reality::Model::Repository
- Inherits:
-
Object
- Object
- Reality::Model::Repository
- Defined in:
- lib/reality/model/repository.rb
Overview
nodoc
Instance Attribute Summary collapse
-
#default_id_method ⇒ Object
readonly
The default name of the method that used as the key or identity field for model.
-
#facet_container ⇒ Object
readonly
The ruby module where the facet manager is defined if any.
-
#instance_container ⇒ Object
readonly
The ruby module in which all the top level instances will be stored.
-
#key ⇒ Object
readonly
A symbolic name for the system model.
-
#log_container ⇒ Object
readonly
The ruby module where the log methods are defined.
-
#model_container ⇒ Object
readonly
The ruby module in which all the model classes will be defined.
Instance Method Summary collapse
- #faceted? ⇒ Boolean
-
#initialize(key, model_container, options = {}) ⇒ Repository
constructor
A new instance of Repository.
-
#lock! ⇒ Object
This method is called when the repository is finalized, after which no changes can be made.
- #locked? ⇒ Boolean
- #model_element(key, container_key = nil, options = {}) ⇒ Object
- #model_element_by_key(key) ⇒ Object
- #model_element_by_key?(key) ⇒ Boolean
- #model_element_keys ⇒ Object
- #model_elements ⇒ Object
- #model_elements_by_container(container_key) ⇒ Object
Constructor Details
#initialize(key, model_container, options = {}) ⇒ Repository
Returns a new instance of Repository.
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/reality/model/repository.rb', line 33 def initialize(key, model_container, = {}) Reality::Options.check(, [:log_container, :facet_container, :instance_container, :default_id_method], Reality::Model, 'create repository') @key = key @model_container = model_container @log_container = [:log_container] || model_container @facet_container = [:facet_container] @instance_container = [:instance_container] || model_container @default_id_method = ([:default_id_method] || :name).to_sym @locked = false if block_given? yield self lock! end end |
Instance Attribute Details
#default_id_method ⇒ Object (readonly)
The default name of the method that used as the key or identity field for model. This can be overriden at a model element level.
31 32 33 |
# File 'lib/reality/model/repository.rb', line 31 def default_id_method @default_id_method end |
#facet_container ⇒ Object (readonly)
The ruby module where the facet manager is defined if any. This will be nil if faceted? returns false.
26 27 28 |
# File 'lib/reality/model/repository.rb', line 26 def facet_container @facet_container end |
#instance_container ⇒ Object (readonly)
The ruby module in which all the top level instances will be stored.
28 29 30 |
# File 'lib/reality/model/repository.rb', line 28 def instance_container @instance_container end |
#key ⇒ Object (readonly)
A symbolic name for the system model
20 21 22 |
# File 'lib/reality/model/repository.rb', line 20 def key @key end |
#log_container ⇒ Object (readonly)
The ruby module where the log methods are defined
24 25 26 |
# File 'lib/reality/model/repository.rb', line 24 def log_container @log_container end |
#model_container ⇒ Object (readonly)
The ruby module in which all the model classes will be defined
22 23 24 |
# File 'lib/reality/model/repository.rb', line 22 def model_container @model_container end |
Instance Method Details
#faceted? ⇒ Boolean
49 50 51 |
# File 'lib/reality/model/repository.rb', line 49 def faceted? !@facet_container.nil? end |
#lock! ⇒ Object
This method is called when the repository is finalized, after which no changes can be made.
80 81 82 83 84 85 86 |
# File 'lib/reality/model/repository.rb', line 80 def lock! Reality::Model.error("Attempting to lock repository '#{key}' when repository is already locked.") if locked? @locked = true define_ruby_classes define_facet_targets define_top_level_instance_accessors end |
#locked? ⇒ Boolean
88 89 90 |
# File 'lib/reality/model/repository.rb', line 88 def locked? @locked end |
#model_element(key, container_key = nil, options = {}) ⇒ Object
71 72 73 |
# File 'lib/reality/model/repository.rb', line 71 def model_element(key, container_key = nil, = {}) ModelElement.new(self, key, container_key, ) end |
#model_element_by_key(key) ⇒ Object
65 66 67 68 69 |
# File 'lib/reality/model/repository.rb', line 65 def model_element_by_key(key) model_element = model_element_map[key.to_s] Reality::Model.error("Can not find model element '#{key}' in repository '#{self.key}'.") unless model_element model_element end |
#model_element_by_key?(key) ⇒ Boolean
61 62 63 |
# File 'lib/reality/model/repository.rb', line 61 def model_element_by_key?(key) !!model_element_map[key.to_s] end |
#model_element_keys ⇒ Object
53 54 55 |
# File 'lib/reality/model/repository.rb', line 53 def model_element_keys model_element_map.keys end |
#model_elements ⇒ Object
57 58 59 |
# File 'lib/reality/model/repository.rb', line 57 def model_elements model_element_map.values end |
#model_elements_by_container(container_key) ⇒ Object
75 76 77 |
# File 'lib/reality/model/repository.rb', line 75 def model_elements_by_container(container_key) model_element_map.values.select { |model_element| model_element.container_key == container_key } end |