Class: Mexico::FileSystem::Item
- Inherits:
-
Object
- Object
- Mexico::FileSystem::Item
- Includes:
- Poseidon, ROXML
- Defined in:
- lib/mexico/file_system/item.rb
Overview
The basic data unit object.
Instance Attribute Summary collapse
-
#document ⇒ Object
Returns the value of attribute document.
-
#implicit_item_links ⇒ Object
Returns the value of attribute implicit_item_links.
Instance Method Summary collapse
- #add_explicit_item_link(new_item_link) ⇒ Object
- #add_implicit_item_link(new_item_link) ⇒ Object
- #add_interval_link(new_interval_link) ⇒ Object
- #add_inverse_linked_item(item) ⇒ Object
- #add_item_link(new_item_link) ⇒ Object
- #add_layer_link(new_layer_link) ⇒ Object
- #add_point_link(new_point_link) ⇒ Object
-
#after_parse ⇒ Object
This method attempts to link objects from other locations of the XML/object tree into position inside this object, by following the xml ids given in the appropriate fields of this class.
- #identifier=(new_id) ⇒ Object
-
#initialize(args = {}) ⇒ Item
constructor
A new instance of Item.
- #item_links ⇒ Object
- #layers ⇒ Object
-
#sources ⇒ Object
Retrieves all items that act as a source (or predecessor) in the item link graph.
-
#targets ⇒ Object
Retrieves all items that act as a target (or successor) in the item link graph.
Constructor Details
#initialize(args = {}) ⇒ Item
Returns a new instance of Item.
65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/mexico/file_system/item.rb', line 65 def initialize(args={}) args.each do |k,v| if self.respond_to?("#{k}=") send("#{k}=", v) end end @explicit_item_links = [] @implicit_item_links = [] @inverse_linked_items = [] @layer_links = [] @point_links = [] @interval_links = [] end |
Instance Attribute Details
#document ⇒ Object
Returns the value of attribute document.
48 49 50 |
# File 'lib/mexico/file_system/item.rb', line 48 def document @document end |
#implicit_item_links ⇒ Object
Returns the value of attribute implicit_item_links.
50 51 52 |
# File 'lib/mexico/file_system/item.rb', line 50 def implicit_item_links @implicit_item_links end |
Instance Method Details
#add_explicit_item_link(new_item_link) ⇒ Object
130 131 132 |
# File 'lib/mexico/file_system/item.rb', line 130 def add_explicit_item_link(new_item_link) @explicit_item_links << new_item_link end |
#add_implicit_item_link(new_item_link) ⇒ Object
134 135 136 |
# File 'lib/mexico/file_system/item.rb', line 134 def add_implicit_item_link(new_item_link) @implicit_item_links << new_item_link end |
#add_interval_link(new_interval_link) ⇒ Object
143 144 145 |
# File 'lib/mexico/file_system/item.rb', line 143 def add_interval_link(new_interval_link) @interval_links << new_interval_link end |
#add_inverse_linked_item(item) ⇒ Object
104 105 106 |
# File 'lib/mexico/file_system/item.rb', line 104 def add_inverse_linked_item(item) @inverse_linked_items << item end |
#add_item_link(new_item_link) ⇒ Object
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/mexico/file_system/item.rb', line 108 def add_item_link(new_item_link) # add the item link add_explicit_item_link(new_item_link) other_item = new_item_link.target_item # add an inverse item link for _every_ item link # this is for retrieving item links from the other direction other_item.add_inverse_linked_item(self) # if an inverse relation for the role exists, # puts Mexico::FileSystem::ItemLink::INVERSE_ROLES.has_key?(new_item_link.role) if Mexico::FileSystem::ItemLink::INVERSE_ROLES.has_key?(new_item_link.role) # add an implicit link for this inverse relation # puts new_item_link.target_item other_item.add_implicit_item_link Mexico::FileSystem::ImplicitItemLink.new( role: Mexico::FileSystem::ItemLink::INVERSE_ROLES[new_item_link.role], target_object: self, item: other_item ) end end |
#add_layer_link(new_layer_link) ⇒ Object
148 149 150 |
# File 'lib/mexico/file_system/item.rb', line 148 def add_layer_link(new_layer_link) @layer_links << new_layer_link end |
#add_point_link(new_point_link) ⇒ Object
138 139 140 |
# File 'lib/mexico/file_system/item.rb', line 138 def add_point_link(new_point_link) @point_links << new_point_link end |
#after_parse ⇒ Object
This method attempts to link objects from other locations of the XML/object tree into position inside this object, by following the xml ids given in the appropriate fields of this class.
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/mexico/file_system/item.rb', line 82 def after_parse # store self ::Mexico::FileSystem::FiestaDocument.store(self.identifier, self) [item_links,layer_links,point_links,interval_links].flatten.each do |link| link.item = self if ::Mexico::FileSystem::FiestaDocument.knows?(link.target) link.target_object=::Mexico::FileSystem::FiestaDocument.resolve(link.target) else # store i in watch list ::Mexico::FileSystem::FiestaDocument.watch(link.target, link, :target_object=) end end end |
#identifier=(new_id) ⇒ Object
27 28 29 |
# File 'lib/mexico/file_system/item.rb', line 27 def identifier=(new_id) @identifier = Mexico::Util::to_xml_id(new_id) end |
#item_links ⇒ Object
100 101 102 |
# File 'lib/mexico/file_system/item.rb', line 100 def item_links @explicit_item_links + @implicit_item_links end |
#layers ⇒ Object
152 153 154 155 156 |
# File 'lib/mexico/file_system/item.rb', line 152 def layers #puts layer_links.collect{|l| l.target}.join #puts layer_links.collect{|l| l.target.class }.join layer_links.collect{|l| l.layer } end |
#sources ⇒ Object
Retrieves all items that act as a source (or predecessor) in the item link graph.
160 161 162 |
# File 'lib/mexico/file_system/item.rb', line 160 def sources @inverse_linked_items end |
#targets ⇒ Object
Retrieves all items that act as a target (or successor) in the item link graph.
166 167 168 |
# File 'lib/mexico/file_system/item.rb', line 166 def targets item_links.collect{|l| l.target_object } end |