Class: Delfos::Neo4j::Distance::Update

Inherits:
Object
  • Object
show all
Defined in:
lib/delfos/neo4j/distance/update.rb

Instance Method Summary collapse

Instance Method Details

#performObject



9
10
11
12
13
14
15
16
17
18
19
20
# 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

#queryObject



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# 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) ⇒ Object



22
23
24
25
26
27
28
29
30
# 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