neo4j-core 0.0.1-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. data/Gemfile +27 -0
  2. data/README.rdoc +27 -0
  3. data/config/neo4j/config.yml +102 -0
  4. data/lib/db/active_tx_log +1 -0
  5. data/lib/db/index/lucene-store.db +0 -0
  6. data/lib/db/index/lucene.log.1 +0 -0
  7. data/lib/db/index/lucene.log.active +0 -0
  8. data/lib/db/lock +0 -0
  9. data/lib/db/messages.log +530 -0
  10. data/lib/db/neostore +0 -0
  11. data/lib/db/neostore.id +0 -0
  12. data/lib/db/neostore.nodestore.db +0 -0
  13. data/lib/db/neostore.nodestore.db.id +0 -0
  14. data/lib/db/neostore.propertystore.db +0 -0
  15. data/lib/db/neostore.propertystore.db.arrays +0 -0
  16. data/lib/db/neostore.propertystore.db.arrays.id +0 -0
  17. data/lib/db/neostore.propertystore.db.id +0 -0
  18. data/lib/db/neostore.propertystore.db.index +0 -0
  19. data/lib/db/neostore.propertystore.db.index.id +0 -0
  20. data/lib/db/neostore.propertystore.db.index.keys +0 -0
  21. data/lib/db/neostore.propertystore.db.index.keys.id +0 -0
  22. data/lib/db/neostore.propertystore.db.strings +0 -0
  23. data/lib/db/neostore.propertystore.db.strings.id +0 -0
  24. data/lib/db/neostore.relationshipstore.db +0 -0
  25. data/lib/db/neostore.relationshipstore.db.id +0 -0
  26. data/lib/db/neostore.relationshiptypestore.db +0 -0
  27. data/lib/db/neostore.relationshiptypestore.db.id +0 -0
  28. data/lib/db/neostore.relationshiptypestore.db.names +0 -0
  29. data/lib/db/neostore.relationshiptypestore.db.names.id +0 -0
  30. data/lib/db/nioneo_logical.log.2 +0 -0
  31. data/lib/db/nioneo_logical.log.active +0 -0
  32. data/lib/db/tm_tx_log.1 +0 -0
  33. data/lib/neo4j/config.rb +139 -0
  34. data/lib/neo4j/cypher.rb +156 -0
  35. data/lib/neo4j/neo4j.rb +244 -0
  36. data/lib/neo4j/neo4j.rb~ +214 -0
  37. data/lib/neo4j/node.rb +39 -0
  38. data/lib/neo4j/relationship.rb +61 -0
  39. data/lib/neo4j/transaction.rb +86 -0
  40. data/lib/neo4j/type_converters/type_converters.rb +287 -0
  41. data/lib/neo4j-core/cypher/cypher.rb +867 -0
  42. data/lib/neo4j-core/cypher/result_wrapper.rb +39 -0
  43. data/lib/neo4j-core/database.rb +191 -0
  44. data/lib/neo4j-core/equal/equal.rb +23 -0
  45. data/lib/neo4j-core/event_handler.rb +265 -0
  46. data/lib/neo4j-core/index/class_methods.rb +117 -0
  47. data/lib/neo4j-core/index/index.rb +36 -0
  48. data/lib/neo4j-core/index/index_config.rb +112 -0
  49. data/lib/neo4j-core/index/indexer.rb +243 -0
  50. data/lib/neo4j-core/index/indexer_registry.rb +55 -0
  51. data/lib/neo4j-core/index/lucene_query.rb +264 -0
  52. data/lib/neo4j-core/lazy_map.rb +21 -0
  53. data/lib/neo4j-core/node/class_methods.rb +77 -0
  54. data/lib/neo4j-core/node/node.rb +47 -0
  55. data/lib/neo4j-core/property/property.rb +94 -0
  56. data/lib/neo4j-core/relationship/class_methods.rb +80 -0
  57. data/lib/neo4j-core/relationship/relationship.rb +97 -0
  58. data/lib/neo4j-core/relationship_set.rb +61 -0
  59. data/lib/neo4j-core/rels/rels.rb +147 -0
  60. data/lib/neo4j-core/rels/traverser.rb +99 -0
  61. data/lib/neo4j-core/to_java.rb +51 -0
  62. data/lib/neo4j-core/traversal/evaluator.rb +36 -0
  63. data/lib/neo4j-core/traversal/filter_predicate.rb +30 -0
  64. data/lib/neo4j-core/traversal/prune_evaluator.rb +20 -0
  65. data/lib/neo4j-core/traversal/rel_expander.rb +35 -0
  66. data/lib/neo4j-core/traversal/traversal.rb +130 -0
  67. data/lib/neo4j-core/traversal/traverser.rb +295 -0
  68. data/lib/neo4j-core/version.rb +5 -0
  69. data/lib/neo4j-core.rb +64 -0
  70. data/neo4j-core.gemspec +31 -0
  71. metadata +145 -0
@@ -0,0 +1,139 @@
1
+ module Neo4j
2
+
3
+
4
+ # == Keeps configuration for neo4j
5
+ #
6
+ # The most important configuration is storage_path which is used to
7
+ # locate where the neo4j database is stored on the filesystem.
8
+ # If this directory is empty then a new database will be created, otherwise it will use the
9
+ # database from that directory.
10
+ #
11
+ # == Configurations keys
12
+ #
13
+ # storage_path where the database is stored
14
+ # timestamps if timestamps should be used when saving the model (Neo4j::Rails::Model)
15
+ # lucene lucene configuration for fulltext and exact indices
16
+ # enable_rules if false the _all relationship to all instances will not be created and custom rules will not be available. (Neo4j::NodeMixin and Neo4j::Rails::Model)
17
+ # identity_map default false, See Neo4j::IdentityMap (Neo4j::NodeMixin and Neo4j::Rails::Model)
18
+ #
19
+ class Config
20
+
21
+ class << self
22
+
23
+ # @return [Fixnum] The location of the default configuration file.
24
+ def default_file
25
+ @default_file ||= File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "config", "neo4j", "config.yml"))
26
+ end
27
+
28
+ # Sets the location of the configuration YAML file and old deletes configurations.
29
+ #
30
+ # @param [String] file_path represent the path to the file.
31
+ def default_file=(file_path)
32
+ @configuration = nil
33
+ @defaults = nil
34
+ @default_file = File.expand_path(file_path)
35
+ end
36
+
37
+ # @return [Hash] the default file loaded by yaml
38
+ def defaults
39
+ require 'yaml'
40
+ @defaults ||= YAML.load_file(default_file)
41
+ end
42
+
43
+ # @return [String] the expanded path of the Config[:storage_path] property
44
+ def storage_path
45
+ File.expand_path(self[:storage_path])
46
+ end
47
+
48
+ # Yields the configuration
49
+ #
50
+ # @example
51
+ # Neo4j::Config.use do |config|
52
+ # config[:storage_path] = '/var/neo4j'
53
+ # end
54
+ #
55
+ # @return nil
56
+ # @yield config
57
+ # @yieldparam [Neo4j::Config] config - this configuration class
58
+ def use
59
+ @configuration ||= {}
60
+ yield @configuration
61
+ nil
62
+ end
63
+
64
+
65
+ # Sets the value of a config entry.
66
+ #
67
+ # @param [Symbol] key the key to set the parameter for
68
+ # @param val the value of the parameter.
69
+ def []=(key, val)
70
+ (@configuration ||= setup)[key.to_s] = val
71
+ end
72
+
73
+
74
+ # @param [Symbol] key The key of the config entry value we want
75
+ # @return the the value of a config entry
76
+ def [](key)
77
+ (@configuration ||= setup)[key.to_s]
78
+ end
79
+
80
+
81
+ # Remove the value of a config entry.
82
+ #
83
+ # @param [Symbol] key the key of the configuration entry to delete
84
+ # @return The value of the removed entry.
85
+ def delete(key)
86
+ @configuration.delete(key)
87
+ end
88
+
89
+
90
+ # Remove all configuration. This can be useful for testing purpose.
91
+ #
92
+ # @return nil
93
+ def delete_all
94
+ @configuration = nil
95
+ end
96
+
97
+
98
+ # @return [Hash] The config as a hash.
99
+ def to_hash
100
+ @configuration ||= setup
101
+ end
102
+
103
+ # @return [String] The config as a YAML
104
+ def to_yaml
105
+ @configuration.to_yaml
106
+ end
107
+
108
+ # Converts the defaults hash to a Java HashMap used by the Neo4j API.
109
+ # @return a Java HashMap used by the Java Neo4j API as configuration for the GraphDatabase
110
+ def to_java_map
111
+ map = java.util.HashMap.new
112
+ to_hash.each_pair do |k, v|
113
+ case v
114
+ when TrueClass
115
+ map[k.to_s] = "YES"
116
+ when FalseClass
117
+ map[k.to_s] = "NO"
118
+ when String, Fixnum, Float
119
+ map[k.to_s] = v.to_s
120
+ # skip list and hash values - not accepted by the Java Neo4j API
121
+ end
122
+ end
123
+ map
124
+ end
125
+
126
+ private
127
+
128
+ # @return The a new configuration using default values as a hash.
129
+ def setup()
130
+ @configuration = {}
131
+ @configuration.merge!(defaults)
132
+ @configuration
133
+ end
134
+
135
+
136
+ end
137
+ end
138
+
139
+ end
@@ -0,0 +1,156 @@
1
+ module Neo4j
2
+ class Cypher
3
+ attr_reader :expressions
4
+
5
+ include Neo4j::Core::Cypher
6
+ include Neo4j::Core::Cypher::MathFunctions
7
+
8
+ # Creates a Cypher DSL query.
9
+ # To create a new cypher query you must initialize it either an String or a Block.
10
+ #
11
+ # @example <tt>START n0=node(3) MATCH (n0)--(x) RETURN x</tt> same as
12
+ # Cypher.new { start n = node(3); match n <=> :x; ret :x }.to_s
13
+ #
14
+ # @example <tt>START n0=node(3) MATCH (n0)-[r]->(x) RETURN r</tt> same as
15
+ # node(3) > :r > :x; :r
16
+ #
17
+ # @example <tt>START n0=node(3) MATCH (n0)-->(x) RETURN x</tt> same as
18
+ # node(3) >> :x; :x
19
+ #
20
+ # @param args the argument for the dsl_block
21
+ # @yield the block which will be evaluated in the context of this object in order to create an Cypher Query string
22
+ # @yieldreturn [Return, Object] If the return is not an instance of Return it will be converted it to a Return object (if possible).
23
+ def initialize(*args, &dsl_block)
24
+ @expressions = []
25
+ @variables = []
26
+ res = self.instance_exec(*args, &dsl_block)
27
+ unless res.kind_of?(Return)
28
+ res.respond_to?(:to_a) ? ret(*res) : ret(res)
29
+ end
30
+ end
31
+
32
+ # Does nothing, just for making the DSL easier to read (maybe).
33
+ # @return self
34
+ def match(*)
35
+ self
36
+ end
37
+
38
+ # Does nothing, just for making the DSL easier to read (maybe)
39
+ # @return self
40
+ def start(*)
41
+ self
42
+ end
43
+
44
+ def where(w=nil)
45
+ Where.new(@expressions, w) if w.is_a?(String)
46
+ self
47
+ end
48
+
49
+ # Specifies a start node by performing a lucene query.
50
+ # @param [Class] index_class a class responsible for an index
51
+ # @param [String] q the lucene query
52
+ # @param [Symbol] index_type the type of index
53
+ # @return [NodeQuery]
54
+ def query(index_class, q, index_type = :exact)
55
+ NodeQuery.new(index_class, q, index_type, @expressions)
56
+ end
57
+
58
+ # Specifies a start node by performing a lucene query.
59
+ # @param [Class] index_class a class responsible for an index
60
+ # @param [String, Symbol] key the key we ask for
61
+ # @param [String, Symbol] value the value of the key we ask for
62
+ # @return [NodeLookup]
63
+ def lookup(index_class, key, value)
64
+ NodeLookup.new(index_class, key, value, @expressions)
65
+ end
66
+
67
+ # Creates a node variable.
68
+ # It will create different variables depending on the type of the first element in the nodes argument.
69
+ # * Fixnum - it will be be used as neo_id for start node(s) (StartNode)
70
+ # * Symbol - it will create an unbound node variable with the same name as the symbol (NodeVar#as)
71
+ # * empty array - it will create an unbound node variable (NodeVar)
72
+ #
73
+ # @param [Fixnum,Symbol,String] nodes the id of the nodes we want to start from
74
+ # @return [StartNode, NodeVar]
75
+ def node(*nodes)
76
+ if nodes.first.is_a?(Symbol)
77
+ NodeVar.new(@expressions, @variables).as(nodes.first)
78
+ elsif !nodes.empty?
79
+ StartNode.new(nodes, @expressions)
80
+ else
81
+ NodeVar.new(@expressions, @variables)
82
+ end
83
+ end
84
+
85
+ # Similar to #node
86
+ # @return [StartRel, RelVar]
87
+ def rel(*rels)
88
+ if rels.first.is_a?(Fixnum) || rels.first.respond_to?(:neo_id)
89
+ StartRel.new(rels, @expressions)
90
+ elsif rels.first.is_a?(Symbol)
91
+ RelVar.new(@expressions, @variables, "").as(rels.first)
92
+ elsif rels.first.is_a?(String)
93
+ RelVar.new(@expressions, @variables, rels.first)
94
+ else
95
+ raise "Unknown arg #{rels.inspect}"
96
+ end
97
+ end
98
+
99
+ # Specifies a return statement.
100
+ # Notice that this is not needed, since the last value of the DSL block will be converted into one or more
101
+ # return statements.
102
+ # @param [Symbol, #var_name] returns a list of variables we want to return
103
+ # @return [Return]
104
+ def ret(*returns)
105
+ options = returns.last.is_a?(Hash) ? returns.pop : {}
106
+ @expressions -= @expressions.find_all { |r| r.clause == :return && returns.include?(r) }
107
+ returns.each { |ret| Return.new(ret, @expressions, options) unless ret.respond_to?(:clause) && [:order_by, :skip, :limit].include?(ret.clause)}
108
+ @expressions.last
109
+ end
110
+
111
+ def shortest_path(&block)
112
+ match = instance_eval(&block)
113
+ match.algorithm = 'shortestPath'
114
+ match.find_match_start
115
+ end
116
+
117
+ def shortest_paths(&block)
118
+ match = instance_eval(&block)
119
+ match.algorithm = 'shortestPaths'
120
+ match.find_match_start
121
+ end
122
+
123
+ # @param [Symbol,nil] variable the entity we want to count or wildcard (*)
124
+ # @return [Return] a counter return clause
125
+ def count(variable='*')
126
+ Return.new("count(#{variable.to_s})", @expressions)
127
+ end
128
+
129
+ def coalesce(*args)
130
+ s = args.map { |x| x.var_name }.join(", ")
131
+ Return.new("coalesce(#{s})", @expressions)
132
+ end
133
+
134
+ def nodes(*args)
135
+ s = args.map { |x| x.referenced!; x.var_name }.join(", ")
136
+ Return.new("nodes(#{s})", @expressions)
137
+ end
138
+
139
+ def rels(*args)
140
+ s = args.map { |x| x.referenced!; x.var_name }.join(", ")
141
+ Return.new("relationships(#{s})", @expressions)
142
+ end
143
+
144
+ # Converts the DSL query to a cypher String which can be executed by cypher query engine.
145
+ def to_s
146
+ clause = nil
147
+ @expressions.map do |expr|
148
+ next unless expr.valid?
149
+ expr_to_s = expr.clause != clause ? "#{expr.prefix} #{expr.to_s}" : "#{expr.separator}#{expr.to_s}"
150
+ clause = expr.clause
151
+ expr_to_s
152
+ end.join
153
+ end
154
+
155
+ end
156
+ end
@@ -0,0 +1,244 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ # = Neo4j
4
+ #
5
+ # The Neo4j modules is used to interact with an Neo4j Database instance.
6
+ # You can for example start and stop an instance and list all the nodes that exist in the database.
7
+ #
8
+ # === Starting and Stopping Neo4j
9
+ # You don't normally need to start the Neo4j database since it will be automatically started when needed.
10
+ # Before the database is started you should configure where the database is stored, see {Neo4j::Config]}.
11
+ #
12
+ module Neo4j
13
+
14
+ # @return [String] The version of the Neo4j jar files
15
+ NEO_VERSION = Neo4j::Community::VERSION
16
+
17
+ class << self
18
+
19
+ # Start Neo4j using the default database.
20
+ # This is usually not required since the database will be started automatically when it is used.
21
+ # If the global variable $NEO4J_SERVER is defined then it will use that as the Java Graph DB. This can
22
+ # be used if you want to embed neo4j.rb and already got an instance of the Java Neo4j Database service.
23
+ #
24
+ # @param [String] config_file (optionally) if this is nil or not given use the Neo4j::Config, otherwise setup the Neo4j::Config file using the provided YAML configuration file.
25
+ # @param [Java::OrgNeo4jKernel::EmbeddedGraphDatabase] external_db (optionally) use this Java Neo4j instead of creating a new neo4j database service.
26
+ def start(config_file=nil, external_db = $NEO4J_SERVER)
27
+ return if @db && @db.running?
28
+
29
+ Neo4j.config.default_file = config_file if config_file
30
+ if external_db
31
+ @db ||= Neo4j::Core::Database.new
32
+ self.db.start_external_db(external_db)
33
+ else
34
+ db.start
35
+ end
36
+ end
37
+
38
+
39
+ # Sets which Neo4j::Database instance to use. It wraps both the Neo4j Database and Lucene Database.
40
+ # @param [Neo4j::Database] my_db - the database instance to use
41
+ def db=(my_db)
42
+ @db = my_db
43
+ end
44
+
45
+ # Returns the database holding references to both the Neo4j Graph Database and the Lucene Database.
46
+ # Creates a new one if it does not exist, but does not start it.
47
+ #
48
+ # @return [Neo4j::Database] the created or existing database
49
+ def db
50
+ @db ||= Neo4j::Core::Database.new
51
+ end
52
+
53
+ # Checks read only mode of the database. Only one process can have write access to the database.
54
+ # @return [true, false] if the database has started up in read only mode
55
+ def read_only?
56
+ (@db && @db.graph && @db.read_only?)
57
+ end
58
+
59
+ # Returns a started db instance. Starts it's not running.
60
+ # if $NEO4J_SERVER is defined then use that Java Neo4j Database service instead of creating a new one.
61
+ # @return [Neo4j::Database] a started database
62
+ def started_db
63
+ start unless db.running?
64
+ db
65
+ end
66
+
67
+ # Runs all user defined migrations.
68
+ def migrate!
69
+
70
+ end
71
+
72
+ # @return [String, nil] the current storage path of a running neo4j database. If the database is not running it returns nil.
73
+ def storage_path
74
+ return nil unless db.running?
75
+ db.storage_path
76
+ end
77
+
78
+ # Same as typing; Neo4j::Config
79
+ # @return [Neo4j::Config] the Neo4j::Config class
80
+ def config
81
+ Neo4j::Config
82
+ end
83
+
84
+ # Executes a Cypher Query
85
+ # Check the neo4j
86
+ # Returns an enumerable of hash values.
87
+ #
88
+ # @example Using the Cypher DSL
89
+ # q = Neo4j.query{ match node(3) <=> node(:x); ret :x}
90
+ # q.first[:n] #=> the @node
91
+ # q.columns.first => :n
92
+ #
93
+ # @example Using the Cypher DSL and one parameter (n=Neo4j.ref_node)
94
+ # q = Neo4j.query(Neo4j.ref_node){|n| n <=> node(:x); :x}
95
+ # q.first[:n] #=> the @node
96
+ # q.columns.first => :n
97
+ #
98
+ # @example With an string
99
+ # q = Neo4j._query("START n=node(42) RETURN n")
100
+ # q.first(:n) #=> the @node
101
+ # q.columns.first => :n
102
+ #
103
+ # @see Cypher
104
+ # @see {http://docs.neo4j.org/chunked/milestone/cypher-query-lang.html The Cypher Query Language Documentation}
105
+ # @note Returns a read-once only forward iterable.
106
+ # @param params parameter for the query_dsl block
107
+ # @return [Neo4j::Core::Cypher::ResultWrapper] a forward read once only Enumerable, containing hash values.
108
+ def query(*params, &query_dsl)
109
+ q = Cypher.new(*params, &query_dsl).to_s
110
+ _query(q)
111
+ end
112
+
113
+ # Performs a cypher query with given string
114
+ # @param [String] q the cypher query as a String
115
+ # @return (see #query)
116
+ def _query(q)
117
+ engine = Java::OrgNeo4jCypherJavacompat::ExecutionEngine.new(db)
118
+ result = engine.execute(q)
119
+ Neo4j::Core::Cypher::ResultWrapper.new(result)
120
+ end
121
+
122
+
123
+ # Returns the logger used by neo4j.
124
+ # If not specified (with Neo4j.logger=) it will use the standard Ruby logger.
125
+ # You can change standard logger threshold by configuration :logger_level.
126
+ #
127
+ # You can also specify which logger class should take care of logging with the
128
+ # :logger configuration.
129
+ #
130
+ # @example
131
+ #
132
+ # Neo4j::Config[:logger] = Logger.new(STDOUT)
133
+ # Neo4j::Config[:logger_level] = Logger::ERROR
134
+ #
135
+ # @see #logger=
136
+ def logger
137
+ @logger ||= Neo4j::Config[:logger] || default_logger
138
+ end
139
+
140
+ # Sets which logger should be used.
141
+ # If this this is not called then the standard Ruby logger will be used.
142
+ # @see #logger
143
+ def logger=(logger)
144
+ @logger = logger
145
+ end
146
+
147
+ # @return the default Ruby logger
148
+ def default_logger #:nodoc:
149
+ require 'logger'
150
+ logger = Logger.new(STDOUT)
151
+ logger.sev_threshold = Neo4j::Config[:logger_level] || Logger::INFO
152
+ logger
153
+ end
154
+
155
+
156
+ # Returns an unstarted db instance
157
+ #
158
+ # This is typically used for configuring the database, which must sometimes
159
+ # be done before the database is started
160
+ # if the database was already started an exception will be raised
161
+ # @return [Neo4j::Database] an not started database
162
+ def unstarted_db
163
+ @db ||= Neo4j::Core::Database.new
164
+ raise "database was already started" if @db.running?
165
+ @db
166
+ end
167
+
168
+ # @return [true,false] if the database is running
169
+ def running?
170
+ !!(@db && @db.running?)
171
+ end
172
+
173
+
174
+ # Stops this database
175
+ # There are Ruby hooks that will do this automatically for you.
176
+ def shutdown(this_db = @db)
177
+ this_db.shutdown if this_db
178
+ end
179
+
180
+
181
+ # @return the default reference node, which is a "starting point" in the node space.
182
+ def default_ref_node(this_db = self.started_db)
183
+ this_db.graph.reference_node
184
+ end
185
+
186
+ # Usually, a client attaches relationships to this node that leads into various parts of the node space.
187
+ # ®return the reference node, which is a "starting point" in the node space.
188
+ # @note In case the ref_node has been assigned via the threadlocal_ref_node method,
189
+ # then that node will be returned instead.
190
+ # @see the design guide at http://wiki.neo4j.org/content/Design_Guide
191
+ def ref_node(this_db = self.started_db)
192
+ return Thread.current[:local_ref_node] if Thread.current[:local_ref_node]
193
+ default_ref_node(this_db)
194
+ end
195
+
196
+ # Changes the reference node on a threadlocal basis.
197
+ # This can be used to achieve multitenancy. All new entities will be attached to the new ref_node,
198
+ # which effectively partitions the graph, and hence scopes traversals.
199
+ def threadlocal_ref_node=(reference_node)
200
+ Thread.current[:local_ref_node] = reference_node.nil? ? nil : reference_node._java_node
201
+ end
202
+
203
+ # Returns a Management JMX Bean.
204
+ #
205
+ # Notice that this information is also provided by the jconsole Java tool, check http://wiki.neo4j.org/content/Monitoring_and_Deployment
206
+ # and http://docs.neo4j.org/chunked/milestone/operations-monitoring.html
207
+ #
208
+ # By default it returns the Primitivies JMX Bean that can be used to find number of nodes in use.
209
+ #
210
+ # @example Example Neo4j Primititives
211
+ #
212
+ # Neo4j.management.get_number_of_node_ids_in_use
213
+ # Neo4j.management.getNumberOfPropertyIdsInUse
214
+ # Neo4j.management.getNumberOfRelationshipIdsInUse
215
+ # Neo4j.management.get_number_of_relationship_type_ids_in_use
216
+ #
217
+ # @example Example Neo4j HA Cluster Info
218
+ #
219
+ # Neo4j.management(org.neo4j.management.HighAvailability).isMaster
220
+ #
221
+ # @param jmx_clazz the JMX class http://api.neo4j.org/current/org/neo4j/management/package-summary.html
222
+ # @param this_db default currently runnig instance or a newly started neo4j db instance
223
+ # @see for the jmx_clazz p
224
+ def management(jmx_clazz = org.neo4j.jmx.Primitives, this_db = self.started_db)
225
+ this_db.management(jmx_clazz)
226
+ end
227
+
228
+ # @return [Enumerable] all nodes in the database
229
+ def all_nodes(this_db = self.started_db)
230
+ Enumerable::Enumerator.new(this_db, :each_node)
231
+ end
232
+
233
+ # @return [Enumerable] all nodes in the database but not wrapped in ruby classes.
234
+ def _all_nodes(this_db = self.started_db)
235
+ Enumerator.new(this_db, :_each_node)
236
+ end
237
+
238
+ # @return [Neo4j::Core::EventHandler] the event handler
239
+ def event_handler(this_db = db)
240
+ this_db.event_handler
241
+ end
242
+
243
+ end
244
+ end