class Delfos::Neo4j::Distance::Update

Public Instance Methods

perform() click to toggle source
# File lib/delfos/neo4j/distance/update.rb, line 9
def perform
  results = CallSiteFetcher.perform
  return if results.length.negative?

  results.each do |start_file, call_site_id, finish_file, called_id|
    calc = FileSystem::DistanceCalculation.new(start_file, finish_file)

    update(call_site_id, called_id, calc)
  end

  Neo4j.flush!
end
query() click to toggle source
# File lib/delfos/neo4j/distance/update.rb, line 32
        def query
          <<-QUERY
            START call_site = node({call_site_id}),
                  called    = node({called_id})

             MERGE (call_site)
               -
                 [:EFFERENT_COUPLING {
                     distance:          {sum_traversals},
                     possible_distance: {sum_possible_traversals}
                   }
                 ]
               -> (called)
          QUERY
        end
update(call_site_id, called_id, calc) click to toggle source
# File lib/delfos/neo4j/distance/update.rb, line 22
def update(call_site_id, called_id, calc)
  Neo4j.execute(
    query,
    call_site_id:            call_site_id,
    called_id:               called_id,
    sum_traversals:          calc.sum_traversals,
    sum_possible_traversals: calc.sum_possible_traversals
  )
end