Class: Neo4j::Wrapper::Rule::EventListener

Inherits:
Object
  • Object
show all
Defined in:
lib/neo4j-wrapper/rule/event_listener.rb

Class Method Summary collapse

Class Method Details

.classes_changed(changed_class_map) ⇒ Object



47
48
49
50
51
# File 'lib/neo4j-wrapper/rule/event_listener.rb', line 47

def classes_changed(changed_class_map)
  changed_class_map.each_pair do |clazz, class_change|
    Rule.bulk_trigger_rules(clazz, class_change, changed_class_map)
  end
end

.on_neo4j_started(db) ⇒ Object



53
54
55
56
57
# File 'lib/neo4j-wrapper/rule/event_listener.rb', line 53

def on_neo4j_started(db)
  if not Neo4j::Config[:enable_rules]
    db.event_handler.remove(self)
  end
end

.on_node_deleted(node, old_properties, deleted_relationship_set, deleted_identity_map) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/neo4j-wrapper/rule/event_listener.rb', line 19

def on_node_deleted(node, old_properties, deleted_relationship_set, deleted_identity_map)
  # have we deleted a rule node ?
  del_rule_node = Rule.find_rule_node(node)
  del_rule_node && del_rule_node.clear_rule_node
  return if del_rule_node

  # do we have prop_aggregations for this
  clazz = old_properties['_classname']
  rule_node = Rule.rule_node_for(clazz)
  return if rule_node.nil?

  id = node.neo_id
  rule_node.rules.each do |rule|
    next if rule.functions.nil? || (rule_node.rules.size == 1 && rule.bulk_update?)
    rule_name = rule.rule_name.to_s

    # is the rule node deleted ?
    deleted_rule_node = deleted_identity_map.get(rule_node.rule_node.neo_id)
    next if deleted_rule_node

    rule.functions.each do |function|
      next unless deleted_relationship_set.contains?(id, rule_name)
      previous_value = old_properties[function.function_id]
      function.delete(rule_name, rule_node.rule_node, previous_value) if previous_value
    end if rule.functions
  end
end

.on_property_changed(node, *changes) ⇒ Object



15
16
17
# File 'lib/neo4j-wrapper/rule/event_listener.rb', line 15

def on_property_changed(node, *changes)
  Rule.trigger_rules(node, *changes) if Rule.trigger?(node)
end

.on_relationship_created(rel) ⇒ Object


Event handling methods




10
11
12
13
# File 'lib/neo4j-wrapper/rule/event_listener.rb', line 10

def on_relationship_created(rel, *)
  Rule.trigger_rules(rel._start_node) if Rule.trigger?(rel._start_node)
  Rule.trigger_rules(rel._end_node) if Rule.trigger?(rel._end_node)
end