Method: ODBA::IndexCommon#update_target

Defined in:
lib/odba/index.rb

#update_target(target) ⇒ Object

:nodoc:



195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
# File 'lib/odba/index.rb', line 195

def update_target(target) # :nodoc:
    target_id = target.odba_id
    current = current_origin_ids(target_id)
    old_terms = current.collect { |row|
      [row[0], row[1]]
    }
    origins = proc_instance_origin.call(target)
    new_terms = []
    origins.each { |origin|
      origin_id = origin.odba_id
      search_terms(origin).each { |term|
        new_terms.push([origin_id, term])
      }
    }
    (old_terms - new_terms).each { |origin_id, terms|
      delete_target(origin_id, terms, target_id)
    }
    (new_terms - old_terms).each { |origin_id, terms|
      do_update_index(origin_id, terms, target_id)
    }
end