Class: SingleType

Inherits:
Object
  • Object
show all
Defined in:
lib/ObjectModel/Types/SingleType.rb

Class Method Summary collapse

Class Method Details

.delete_all_children(e, m) ⇒ Object



38
39
40
41
42
# File 'lib/ObjectModel/Types/SingleType.rb', line 38

def delete_all_children e, m            
  child = e.send m.name
  #      p [e.name, m.name, child]
  child.delete if child != nil
end

.delete_all_references_to(referrer, e, m) ⇒ Object



44
45
46
# File 'lib/ObjectModel/Types/SingleType.rb', line 44

def delete_all_references_to referrer, e, m     
  referrer.send m.name.to_writer, nil if referrer.send(m.name) == e
end

.delete_from_parent(e, parent, m) ⇒ Object



48
49
50
51
52
# File 'lib/ObjectModel/Types/SingleType.rb', line 48

def delete_from_parent e, parent, m
  if parent.send(m.name.to_reader) == e
    parent.send m.name.to_writer, nil
  end
end

.each(e, m, &b) ⇒ Object



54
55
56
57
# File 'lib/ObjectModel/Types/SingleType.rb', line 54

def each e, m, &b
  v = e.send m.name
  b.call v if v != nil
end

.initial_value(m, e) ⇒ Object



5
6
7
8
# File 'lib/ObjectModel/Types/SingleType.rb', line 5

def initial_value m, e
  nil
#     e.instance_variable_set m.ivname, nil
end

.initialize_copy(m, e, c) ⇒ Object



10
11
12
# File 'lib/ObjectModel/Types/SingleType.rb', line 10

def initialize_copy m, e, c
  c[m.ivname] = e.instance_variable_get(m.ivname)
end

.load(m, e, storage) ⇒ Object

Raises:



20
21
22
23
24
25
26
# File 'lib/ObjectModel/Types/SingleType.rb', line 20

def load m, e, storage          
  row = storage[:entities_content][:entity_id => e.entity_id, :name => m.name.to_s]
  raise LoadError unless row
  
  value = AnEntity::EntityType.load_id! row[:value], row[:class]
  e.instance_variable_set m.ivname, value        
end

.persist(c, entity_id, m, storage) ⇒ Object



28
29
30
31
32
33
34
35
36
# File 'lib/ObjectModel/Types/SingleType.rb', line 28

def persist c, entity_id, m, storage                
  value, klass = AnEntity::EntityType.dump_id! c[m.ivname]
  storage[:entities_content].insert(
                                    :entity_id => entity_id, 
                                    :name => m.name.to_s,
                                    :value => value,
                                    :class => klass
  )
end

.write_back(c, e, m) ⇒ Object



14
15
16
17
18
# File 'lib/ObjectModel/Types/SingleType.rb', line 14

def write_back c, e, m                    
  value = c[m.ivname]
  value.should! :be_a, [NilClass, String]
  e.instance_variable_set m.ivname, value
end