Sha256: 0a6820293d5dafafb6780251cfed0b0a74124e8afcd1ae2a86520888953811b3

Contents?: true

Size: 1.17 KB

Versions: 1

Compression:

Stored size: 1.17 KB

Contents

module Neo4j
  module Wrapper
    module Rule
      module Functions

        # A function for counting number of nodes of a given class.
        class Count < Function
          def initialize
            @property = '_classname'
            @@lock ||= Java::java.lang.Object.new
          end

          def calculate?(changed_property)
            true
          end

          def delete(rule_name, rule_node, _)
            key = rule_node_property(rule_name)
            rule_node[key] ||= 0
            rule_node[key] -= 1
          end

          def add(rule_name, rule_node, _)
            key = rule_node_property(rule_name)
            rule_node[key] ||= 0
            rule_node[key] += 1
          end

          def update(*)
            # we are only counting, not interested in property changes
          end

          def classes_changed(rule_name, rule_node, class_change)
            key = rule_node_property(rule_name)
            @@lock.synchronized do
              rule_node[key] ||= 0
              rule_node[key] += class_change.net_change
            end
          end

          def self.function_name
            :count
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
neo4j-wrapper-0.0.2-java lib/neo4j-wrapper/rule/functions/count.rb