Module: ArcWeld::Relationships::HasChild

Defined in:
lib/arc_weld/relationships/has_child.rb

Instance Method Summary collapse

Instance Method Details

#add_child(child) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/arc_weld/relationships/has_child.rb', line 18

def add_child(child)
  unless has_child.include?(child)
    if child.resource_type != 'Group'
      set_attributes_from(child)
      if (child.resource_class_id != self.containedResourceType)
        fail RuntimeError, 'child resource does not match contained types'
      end
    end
    self.has_child.push(child)
    child.parent_ref=self.ref
  end
end

#add_children(*resources) ⇒ Object



31
32
33
# File 'lib/arc_weld/relationships/has_child.rb', line 31

def add_children(*resources)
  resources.each {|res| add_child(res) }
end

#contains_resource_typeObject



35
36
37
38
39
# File 'lib/arc_weld/relationships/has_child.rb', line 35

def contains_resource_type
  unless self.has_child.empty?
    has_child.first.resource_type
  end
end

#has_child_relationshipObject



8
9
10
# File 'lib/arc_weld/relationships/has_child.rb', line 8

def has_child_relationship
  {'hasChild' => { 'list!' => related_has_child_references }}
end


4
5
6
# File 'lib/arc_weld/relationships/has_child.rb', line 4

def related_has_child_references
  has_child.map {|res| res.ref.render }.join
end

#set_attributes_from(child) ⇒ Object



12
13
14
15
16
# File 'lib/arc_weld/relationships/has_child.rb', line 12

def set_attributes_from(child)
  self.containedResourceType=child.resource_class_id if containedResourceType.nil?
  self.parent_ref=child.class.toplevel if parent_ref.nil?

end