Class: ResourceObject
- Inherits:
-
ACL_Object
- Object
- ACL_Object
- ResourceObject
- Defined in:
- lib/resource_object.rb
Instance Attribute Summary
Attributes inherited from ACL_Object
Instance Method Summary collapse
- #change_address(type, address, new_address) ⇒ Object
- #change_owner(type, address, new_owner) ⇒ Object
- #change_type(type, address, new_type) ⇒ Object
- #create_new(type, address, owner) ⇒ Object
-
#find_res_ob(type, address) ⇒ Object
finds resource object’s id by type and address.
-
#find_res_ob_parents(res_ob_type, res_ob_adr) ⇒ Object
finds membership parrent, e.g.
- #ge(temp_ace, final_ace, grid) ⇒ Object
-
#initialize(connector, col_path, report = false) ⇒ ResourceObject
constructor
A new instance of ResourceObject.
- #rename ⇒ Object
-
#res_obs_grand2children(res_ob_ids) ⇒ Object
finds resOb, which ends with /*.
Methods inherited from ACL_Object
#add_membership, #del_membership, #delete, #find_parents
Constructor Details
#initialize(connector, col_path, report = false) ⇒ ResourceObject
Returns a new instance of ResourceObject.
2 3 4 5 |
# File 'lib/resource_object.rb', line 2 def initialize(connector, col_path, report = false) super(connector, col_path, report) @doc = "doc(\"#{@col_path}ResourceObjects.xml\")" end |
Instance Method Details
#change_address(type, address, new_address) ⇒ Object
200 201 202 |
# File 'lib/resource_object.rb', line 200 def change_address(type, address, new_address) change(type, address, "address", new_address) end |
#change_owner(type, address, new_owner) ⇒ Object
204 205 206 |
# File 'lib/resource_object.rb', line 204 def change_owner(type, address, new_owner) change(type, address, "owner", new_owner) end |
#change_type(type, address, new_type) ⇒ Object
196 197 198 |
# File 'lib/resource_object.rb', line 196 def change_type(type, address, new_type) change(type, address, "type", new_type) end |
#create_new(type, address, owner) ⇒ Object
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/resource_object.rb', line 105 def create_new(type, address, owner) address.delete!('(")') id = find_res_ob(type, address) if(id == nil) #this resOb doesnt exist id = "r" + Random.rand(1000000000).to_s while(exists?(id)) id = "r" + Random.rand(1000000000).to_s end expr = generate_expr(id, type, address, owner) expr_loc = "#{@doc}//#{self.class.name}s/#{self.class.name}[last()]" #puts expr_loc @connector.update_insert(expr, "following", expr_loc) if(exists?(id)) puts "New #{self.class.name} \"#{id}\" created." if @report return id else raise RubyACLException.new(self.class.name, __method__, "#{self.class.name} type=\"#{type}\", address=\"#{address}\" was not able to create.", 33), caller end else #already exists puts "#{self.class.name} \"#{id}\" was already created created." if @report return id end end |
#find_res_ob(type, address) ⇒ Object
finds resource object’s id by type and address
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 |
# File 'lib/resource_object.rb', line 130 def find_res_ob(type, address) #finds resource object's id by type and address address.delete!('(")') query = "#{@doc}//#{self.class.name}s/descendant::*[type=\"#{type}\" and address=\"#{address}\"]/string(@id)" #puts query handle = @connector.execute_query(query) hits = @connector.get_hits(handle) #puts hits case hits when 1 res_ob_id = @connector.retrieve(handle, 0) if(res_ob_id == "") #eXist returns empty result => should return no result return nil else return res_ob_id end when 0 return nil else raise RubyACLException.new(self.class.name, __method__, "#{self.class.name}(type=\"#{type}\", address=\"#{address}\") exists more then once. (#{hits}x)", 30), caller end end |
#find_res_ob_parents(res_ob_type, res_ob_adr) ⇒ Object
finds membership parrent, e.g. dog’s parrent is mammal
161 162 163 164 165 166 167 168 169 170 171 172 173 174 |
# File 'lib/resource_object.rb', line 161 def find_res_ob_parents(res_ob_type, res_ob_adr) ids = Array.new while(res_ob_adr.rindex("/") != 0) res_ob_adr = parent(res_ob_adr) #puts res_ob_adr ids.push(find_res_ob(res_ob_type, res_ob_adr)) end #puts "ids #{ids.to_s}" ids.compact! #puts "ids #{ids.to_s}" return ids rescue => e raise e end |
#ge(temp_ace, final_ace, grid) ⇒ Object
154 155 156 157 158 |
# File 'lib/resource_object.rb', line 154 def ge(temp_ace, final_ace, grid) temp = grid.find_index(temp_ace.res_obj) final = grid.find_index(final_ace.res_obj) return super(temp, final) end |
#rename ⇒ Object
191 192 193 194 |
# File 'lib/resource_object.rb', line 191 def rename() raise RubyACLException.new(self.class.name, __method__, "Rename method is not supported for resource object", 35), caller end |
#res_obs_grand2children(res_ob_ids) ⇒ Object
finds resOb, which ends with /*
177 178 179 180 181 182 183 184 185 186 187 188 189 |
# File 'lib/resource_object.rb', line 177 def res_obs_grand2children(res_ob_ids) ids = Array.new for res_ob_id in res_ob_ids adr = get_adr(res_ob_id) type = get_type(res_ob_id) adr += "/*" ids.push(find_res_ob(type, adr)) end ids.compact! return ids rescue => e raise e end |