Class: BagType
- Inherits:
-
Object
- Object
- BagType
- Defined in:
- lib/ObjectModel/Types/BagType.rb
Class Method Summary collapse
- .delete(e, m, storage) ⇒ Object
- .delete_all_children(e, m) ⇒ Object
- .delete_all_references_to(referrer, e, m) ⇒ Object
- .delete_from_parent(e, parent, m) ⇒ Object
- .each(e, m, &b) ⇒ Object
- .initial_value(m, e) ⇒ Object
- .initialize_copy(m, e, c) ⇒ Object
- .initialize_storage(db) ⇒ Object
- .load(m, e, storage) ⇒ Object
- .persist(c, entity_id, m, storage) ⇒ Object
- .print_storage(db, name) ⇒ Object
- .write_back(c, e, m) ⇒ Object
Class Method Details
.delete(e, m, storage) ⇒ Object
59 60 61 |
# File 'lib/ObjectModel/Types/BagType.rb', line 59 def delete e, m, storage storage[:bags].filter(:entity_id => e.entity_id).delete end |
.delete_all_children(e, m) ⇒ Object
63 64 65 66 |
# File 'lib/ObjectModel/Types/BagType.rb', line 63 def delete_all_children e, m bag = e.send m.name bag.every.delete end |
.delete_all_references_to(referrer, e, m) ⇒ Object
68 69 70 71 |
# File 'lib/ObjectModel/Types/BagType.rb', line 68 def delete_all_references_to referrer, e, m bag = referrer.send m.name bag.delete e end |
.delete_from_parent(e, parent, m) ⇒ Object
73 74 75 76 |
# File 'lib/ObjectModel/Types/BagType.rb', line 73 def delete_from_parent e, parent, m bag = parent.send m.name bag.delete e end |
.each(e, m, &b) ⇒ Object
78 79 80 81 |
# File 'lib/ObjectModel/Types/BagType.rb', line 78 def each e, m, &b bag = e.send m.name bag.each &b end |
.initial_value(m, e) ⇒ Object
3 4 5 6 |
# File 'lib/ObjectModel/Types/BagType.rb', line 3 def initial_value m, e calculate_class(m).new e, m.name, e.om_repository # e.instance_variable_set m.ivname, bag end |
.initialize_copy(m, e, c) ⇒ Object
8 9 10 11 12 |
# File 'lib/ObjectModel/Types/BagType.rb', line 8 def initialize_copy m, e, c bag = e.instance_variable_get m.ivname bag_copy = AnEntity::BagCopy.new bag._array c[m.ivname] = bag_copy end |
.initialize_storage(db) ⇒ Object
14 15 16 17 18 19 20 21 |
# File 'lib/ObjectModel/Types/BagType.rb', line 14 def initialize_storage db db.create_table :bags do column :entity_id, :text column :name, :text column :reference_id, :text # index :entity_id end end |
.load(m, e, storage) ⇒ Object
29 30 31 32 33 34 35 36 37 |
# File 'lib/ObjectModel/Types/BagType.rb', line 29 def load m, e, storage rows = storage[:bags].filter :entity_id => e.entity_id, :name => m.name.to_s bag = calculate_class(m).new e, m.name, e.om_repository rows.each do |row| value = AnEntity::EntityType.load_id row[:reference_id] bag._array << value end e.instance_variable_set m.ivname, bag end |
.persist(c, entity_id, m, storage) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/ObjectModel/Types/BagType.rb', line 45 def persist c, entity_id, m, storage # TODO reimplement more efficiently sname = m.name.to_s storage[:bags].filter(:entity_id => entity_id, :name => sname).delete c[m.ivname]._array.each do |ref_id| ref_id.should_not! :be_nil storage[:bags].insert( :entity_id => entity_id, :name => sname, :reference_id => AnEntity::EntityType.dump_id(ref_id) ) end end |
.print_storage(db, name) ⇒ Object
23 24 25 26 27 |
# File 'lib/ObjectModel/Types/BagType.rb', line 23 def print_storage db, name return unless name == nil or name == :bags puts "\nBags:" db[:bags].print end |
.write_back(c, e, m) ⇒ Object
39 40 41 42 43 |
# File 'lib/ObjectModel/Types/BagType.rb', line 39 def write_back c, e, m bag_copy = c[m.ivname] bag = e.instance_variable_get m.ivname bag._array.replace bag_copy._array # TODO reimplement more efficiently end |