neo4j-core 3.0.0.alpha.17 → 3.0.0.alpha.18

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 (55) hide show
  1. checksums.yaml +4 -4
  2. data/lib/neo4j-core/query.rb +13 -3
  3. data/lib/neo4j-core/query_clauses.rb +3 -1
  4. data/lib/neo4j-core/version.rb +1 -1
  5. data/lib/neo4j-embedded/property.rb +52 -10
  6. data/lib/neo4j-server/cypher_response.rb +1 -1
  7. metadata +2 -50
  8. data/lib/mydb/active_tx_log +0 -1
  9. data/lib/mydb/index/lucene-store.db +0 -0
  10. data/lib/mydb/index/lucene.log.active +0 -0
  11. data/lib/mydb/index/lucene.log.v0 +0 -0
  12. data/lib/mydb/messages.log +0 -684
  13. data/lib/mydb/neostore +0 -0
  14. data/lib/mydb/neostore.id +0 -0
  15. data/lib/mydb/neostore.labeltokenstore.db +0 -0
  16. data/lib/mydb/neostore.labeltokenstore.db.id +0 -0
  17. data/lib/mydb/neostore.labeltokenstore.db.names +0 -0
  18. data/lib/mydb/neostore.labeltokenstore.db.names.id +0 -0
  19. data/lib/mydb/neostore.nodestore.db +0 -0
  20. data/lib/mydb/neostore.nodestore.db.id +0 -0
  21. data/lib/mydb/neostore.nodestore.db.labels +0 -0
  22. data/lib/mydb/neostore.nodestore.db.labels.id +0 -0
  23. data/lib/mydb/neostore.propertystore.db +0 -0
  24. data/lib/mydb/neostore.propertystore.db.arrays +0 -0
  25. data/lib/mydb/neostore.propertystore.db.arrays.id +0 -0
  26. data/lib/mydb/neostore.propertystore.db.id +0 -0
  27. data/lib/mydb/neostore.propertystore.db.index +0 -0
  28. data/lib/mydb/neostore.propertystore.db.index.id +0 -0
  29. data/lib/mydb/neostore.propertystore.db.index.keys +0 -0
  30. data/lib/mydb/neostore.propertystore.db.index.keys.id +0 -0
  31. data/lib/mydb/neostore.propertystore.db.strings +0 -0
  32. data/lib/mydb/neostore.propertystore.db.strings.id +0 -0
  33. data/lib/mydb/neostore.relationshipgroupstore.db +0 -0
  34. data/lib/mydb/neostore.relationshipgroupstore.db.id +0 -0
  35. data/lib/mydb/neostore.relationshipstore.db +0 -0
  36. data/lib/mydb/neostore.relationshipstore.db.id +0 -0
  37. data/lib/mydb/neostore.relationshiptypestore.db +0 -1
  38. data/lib/mydb/neostore.relationshiptypestore.db.id +0 -0
  39. data/lib/mydb/neostore.relationshiptypestore.db.names +0 -0
  40. data/lib/mydb/neostore.relationshiptypestore.db.names.id +0 -0
  41. data/lib/mydb/neostore.schemastore.db +0 -0
  42. data/lib/mydb/neostore.schemastore.db.id +0 -0
  43. data/lib/mydb/nioneo_logical.log.active +0 -0
  44. data/lib/mydb/nioneo_logical.log.v0 +0 -0
  45. data/lib/mydb/schema/label/lucene/segments.gen +0 -0
  46. data/lib/mydb/schema/label/lucene/segments_1 +0 -0
  47. data/lib/mydb/store_lock +0 -0
  48. data/lib/mydb/tm_tx_log.1 +0 -0
  49. data/lib/neo4j/session.rb~ +0 -202
  50. data/lib/neo4j-core/version.rb~ +0 -5
  51. data/lib/neo4j-embedded/cypher_response.rb~ +0 -85
  52. data/lib/neo4j-embedded/embedded_node.rb~ +0 -201
  53. data/lib/neo4j-embedded/embedded_relationship.rb~ +0 -62
  54. data/lib/neo4j-embedded/embedded_session.rb~ +0 -145
  55. data/lib/neo4j-server/cypher_response.rb~ +0 -155
data/lib/mydb/neostore DELETED
Binary file
data/lib/mydb/neostore.id DELETED
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1 +0,0 @@
1
- RelationshipTypeStore v0.A.3
Binary file
Binary file
Binary file
Binary file
data/lib/mydb/store_lock DELETED
File without changes
data/lib/mydb/tm_tx_log.1 DELETED
Binary file
@@ -1,202 +0,0 @@
1
- module Neo4j
2
- class Session
3
-
4
- @@current_session = nil
5
- @@all_sessions = {}
6
- @@factories = {}
7
-
8
- # @abstract
9
- def close
10
- self.class.unregister(self)
11
- end
12
-
13
- # Only for embedded database
14
- # @abstract
15
- def start
16
- raise "not impl."
17
- end
18
-
19
- # Only for embedded database
20
- # @abstract
21
- def shutdown
22
- raise "not impl."
23
- end
24
-
25
- # Only for embedded database
26
- # @abstract
27
- def running
28
- raise "not impl."
29
- end
30
-
31
- def auto_commit?
32
- true # TODO
33
- end
34
-
35
- # @abstract
36
- def begin_tx
37
- raise "not impl."
38
- end
39
-
40
- class CypherError < StandardError
41
- attr_reader :error_msg, :error_status, :error_code
42
- def initialize(error_msg, error_code, error_status)
43
- super(error_msg)
44
- @error_msg = error_msg
45
- @error_status = error_status
46
- end
47
- end
48
-
49
- # Executes a Cypher Query.
50
- # Returns an enumerable of hash values where each hash corresponds to a row unless +return+ or +map_return+
51
- # is not an array. The search result can be mapped to Neo4j::Node or Neo4j::Relationship is your own Ruby wrapper class
52
- # by specifying a map_return parameter.
53
- #
54
- # @param [Hash, String] q the cypher query, as a pure string query or a hash which will generate a cypher string.
55
- # @option q [Hash] :params cypher parameters
56
- # @option q [Symbol,Hash] :label the label to match. You can specify several labels by using a hash of variable names and labels.
57
- # @option q [Symbol] :conditions key and value of properties which the label nodes must match
58
- # @option q [Hash] :conditions key and value of properties which the label nodes must match
59
- # @option q [String, Array] :match the cypher match clause
60
- # @option q [String, Array] :where the cypher where clause
61
- # @option q [String, Array, Symbol] :return the cypher where clause
62
- # @option q [String, Hash, Symbol] :map_return mapping of the returned values, e.g. :id_to_node, :id_to_rel, or :value
63
- # @option q [Hash<Symbol, Proc>] :map_return_procs custom mapping functions of :map_return types
64
- # @option q [String,Symbol,Array<Hash>] :order the order
65
- # @option q [Fixnum] :limit enables the return of only subsets of the total result.
66
- # @option q [Fixnum] :skip enables the return of only subsets of the total result.
67
- # @return [Enumerable] the result, an enumerable of Neo4j::Node objects unless a pure cypher string is given or return/map_returns is specified, see examples.
68
- # @raise CypherError if invalid cypher
69
- # @example Cypher String and parameters
70
- # Neo4j::Session.query("START n=node({p}) RETURN ID(n)", params: {p: 42})
71
- #
72
- # @example label
73
- # # If there is no :return parameter it will try to return Neo4j::Node objects
74
- # # Default parameter is :n in the generated cypher
75
- # Neo4j::Session.query(label: :person) # => MATCH (n:`person`) RETURN ID(n) # or RETURN n for embedded
76
- #
77
- # @example to_s
78
- # # What Cypher is returned ? check with to_s
79
- # Neo4j::Session.query(label: :person).to_s # =>
80
- #
81
- # @example return
82
- # Neo4j::Session.query(label: :person, return: :age) # returns age properties
83
- # Neo4j::Session.query(label: :person, return: [:name, :age]) # returns a hash of name and age properties
84
- # Neo4j::Session.query(label: :person, return: 'count(n) AS c')
85
- #
86
- # @example map_return - an Enumerable of names (String)
87
- # Neo4j::Session.query("START n=node(42) RETURN n.name", map_return: :value)
88
- #
89
- # @example map_return - Enumerable of an Hash with name property, Neo4j::Relationship and Neo4j::Node as values
90
- # Neo4j::Session.query("START n=node(42) MATCH n-[r]->[x] RETURN n.name as N, ID(r) as R, ID(x) as X",
91
- # map_return: {N: :value, R: :id_to_rel, X: :id_to_node})
92
- #
93
- # @example map_return, only for embedded_db, to_rel, and to_node allows direct mapping to Neo4j::Node and Neo4j::Relationship without ID(n)
94
- # Neo4j::Session.query("START n=node(42) MATCH n-[r]->[x] RETURN n.name as N, r, x", map_return: {N: :value, r: :to_rel, x: :to_node})
95
- #
96
- # @example map_return_procs, custom mapping function
97
- # Neo4j::Session.query(label: :person, map_return: :age_times_two, map_return_procs: {age_times_two: ->(row){(row[:age] || 0) * 2}})
98
- #
99
- # @example match
100
- # Neo4j::Session.query(label: :person, match: 'n--m')
101
- #
102
- # @example where
103
- # Neo4j::Session.query(label: :person, where: 'n.age > 40')
104
- # Neo4j::Session.query(label: :person, where: 'n.age > {age}', params: {age: 40})
105
- #
106
- # @example condition
107
- # Neo4j::Session.query(label: :person, conditions: {age: 42})
108
- # Neo4j::Session.query(label: :person, conditions: {name: /foo?bar.*/})
109
- #
110
- # @see http://docs.neo4j.org/chunked/milestone/cypher-query-lang.html The Cypher Query Language Documentation
111
- # @note Returns a read-once only forward iterable for the embedded database.
112
- #
113
- def query(q)
114
- raise 'not implemented, abstract'
115
- end
116
-
117
- # Same as #query but does not accept an DSL and returns the raw result from the database.
118
- # Notice, it might return different values depending on which database is used, embedded or server.
119
- # @abstract
120
- def _query(*params)
121
- raise 'not implemented'
122
- end
123
-
124
- class << self
125
- # Creates a new session to Neo4j
126
- # @see also Neo4j::Server::CypherSession#open for :server_db params
127
- # @param db_type the type of database, e.g. :embedded_db, or :server_db
128
- def open(db_type=:server_db, *params)
129
- register(create_session(db_type, params))
130
- end
131
-
132
- def open_named(db_type, name, default = nil, *params)
133
- raise "Multiple sessions is currently only supported for Neo4j Server connections." unless db_type == :server_db
134
- register(create_session(db_type, params), name, default)
135
- end
136
-
137
- def create_session(db_type, params = {})
138
- unless (@@factories[db_type])
139
- raise "Can't connect to database '#{db_type}', available #{@@factories.keys.join(',')}"
140
- end
141
- @@factories[db_type].call(*params)
142
- end
143
-
144
- def current
145
- @@current_session
146
- end
147
-
148
- # @see Neo4j::Session#query
149
- def query(*params)
150
- current.query(*params)
151
- end
152
-
153
- def named(name)
154
- @@all_sessions[name] || raise("No session named #{name}.")
155
- end
156
-
157
- def set_current(session)
158
- @@current_session = session
159
- end
160
-
161
- def add_listener(&listener)
162
- self._listeners << listener
163
- end
164
-
165
- def _listeners
166
- @@listeners ||= []
167
- @@listeners
168
- end
169
-
170
- def _notify_listeners(event, data)
171
- _listeners.each {|li| li.call(event, data)}
172
- end
173
-
174
- def register(session, name = nil, default = nil)
175
- if default == true
176
- set_current(session)
177
- elsif default.nil?
178
- set_current(session) unless @@current_session
179
- end
180
- @@all_sessions[name] = session if name
181
- @@current_session
182
- end
183
-
184
- def unregister(session)
185
- @@current_session = nil if @@current_session == session
186
- end
187
-
188
- def all_sessions
189
- @@all_sessions
190
- end
191
-
192
- def inspect
193
- "Neo4j::Session available: #{@@factories && @@factories.keys}"
194
- end
195
-
196
- def register_db(db, &session_factory)
197
- puts "replace factory for #{db}" if @@factories[db]
198
- @@factories[db] = session_factory
199
- end
200
- end
201
- end
202
- end
@@ -1,5 +0,0 @@
1
- module Neo4j
2
- module Core
3
- VERSION = "3.0.0.alpha.16"
4
- end
5
- end
@@ -1,85 +0,0 @@
1
- module Neo4j::Embedded
2
-
3
- # Wraps the Cypher query result.
4
- # Loads the node and relationships wrapper if possible and use symbol as column keys.
5
- # This is typically used in the native neo4j bindings since result does is not a Ruby enumerable with symbols as keys.
6
- # @note The result is a once forward read only Enumerable, work if you need to read the result twice - use #to_a
7
- #
8
- class ResultWrapper
9
- class ResultsAlreadyConsumedException < Exception;
10
- end
11
-
12
- include Enumerable
13
-
14
- # @return the original result from the Neo4j Cypher Engine, once forward read only !
15
- attr_reader :source
16
-
17
- def initialize(source, map_return_procs, query)
18
- @source = source
19
- @unread = true
20
- @map_return_procs = map_return_procs
21
- @query = query
22
- end
23
-
24
- def to_s
25
- @query
26
- end
27
-
28
- # @return [Array<Symbol>] the columns in the query result
29
- def columns
30
- @source.columns.map { |x| x.to_sym }
31
- end
32
-
33
- # for the Enumerable contract
34
- def each(&block)
35
- raise ResultsAlreadyConsumedException unless @unread
36
-
37
- if (block)
38
- case @map_return_procs
39
- when NilClass then
40
- each_no_mapping &block
41
- when Hash then
42
- each_multi_column_mapping &block
43
- else
44
- each_single_column_mapping &block
45
- end
46
- else
47
- Enumerator.new(self)
48
- end
49
- end
50
-
51
-
52
- private
53
-
54
- def each_no_mapping
55
- @source.each do |row|
56
- hash = {}
57
- row.each do |key, value|
58
- out[key.to_sym] = value
59
- end
60
- yield hash
61
- end
62
- end
63
-
64
- def each_multi_column_mapping
65
- @source.each do |row|
66
- hash = {}
67
- row.each do |key, value|
68
- k = key.to_sym
69
- proc = @map_return_procs[k]
70
- hash[k] = proc ? proc.call(value) : value
71
- end
72
- yield hash
73
- end
74
- end
75
-
76
- def each_single_column_mapping
77
- @source.each do |row|
78
- result = @map_return_procs.call(row.values.first)
79
- yield result
80
- end
81
- end
82
-
83
- end
84
- end
85
-
@@ -1,201 +0,0 @@
1
- module Neo4j::Embedded
2
- class RelsIterator
3
- include Enumerable
4
- extend Neo4j::Core::TxMethods
5
-
6
- def initialize(node, match)
7
- @node = node
8
- @match = match
9
- end
10
-
11
- def inspect
12
- "Enumerable<Neo4j::Relationship>"
13
- end
14
-
15
- def each(&block)
16
- @node._rels(@match).each {|r| block.call(r.wrapper)}
17
- end
18
- tx_methods :each
19
-
20
- def empty?
21
- first == nil
22
- end
23
-
24
- end
25
-
26
- class NodesIterator
27
- include Enumerable
28
- extend Neo4j::Core::TxMethods
29
-
30
- def initialize(node, match)
31
- @node = node
32
- @match = match
33
- end
34
-
35
- def each(&block)
36
- @node._rels(@match).each {|r| block.call(r.other_node(@node))}
37
- end
38
- tx_methods :each
39
-
40
- def empty?
41
- first == nil
42
- end
43
-
44
- end
45
-
46
- class EmbeddedNode
47
- class << self
48
- # This method is used to extend a Java Neo4j class so that it includes the same mixins as this class.
49
- def extend_java_class(java_clazz)
50
- java_clazz.class_eval do
51
- include Neo4j::Embedded::Property
52
- include Neo4j::EntityEquality
53
- extend Neo4j::Core::TxMethods
54
-
55
- def inspect
56
- "EmbeddedNode neo_id: #{neo_id}"
57
- end
58
-
59
- def exist?
60
- !!graph_database.get_node_by_id(neo_id)
61
- rescue Java::OrgNeo4jGraphdb.NotFoundException
62
- nil
63
- end
64
- tx_methods :exist?
65
-
66
- def labels
67
- _labels.iterator.map{|x| x.name.to_sym}
68
- end
69
- tx_methods :labels
70
-
71
- alias_method :_labels, :getLabels
72
-
73
- def _java_label(label_name)
74
- Java::OrgNeo4jGraphdb.DynamicLabel.label(label_name)
75
- end
76
-
77
-
78
- def _add_label(*label_name)
79
- label_name.each do |name|
80
- addLabel(_java_label(name))
81
- end
82
- end
83
-
84
- alias_method :add_label, :_add_label
85
- tx_methods :add_label
86
-
87
- def _remove_label(*label_name)
88
- label_name.each do |name|
89
- removeLabel(_java_label(name))
90
- end
91
- end
92
-
93
- alias_method :remove_label, :_remove_label
94
- tx_methods :remove_label
95
-
96
- def set_label(*label_names)
97
- label_as_symbols = label_names.map(&:to_sym)
98
- to_keep = labels & label_as_symbols
99
- to_remove = labels - to_keep
100
- _remove_label(*to_remove)
101
- to_add = label_as_symbols - to_keep
102
- _add_label(*to_add)
103
- end
104
- tx_methods :set_label
105
-
106
- def del
107
- _rels.each { |r| r.del }
108
- delete
109
- nil
110
- end
111
- tx_methods :del
112
-
113
- def create_rel(type, other_node, props = nil)
114
- rel = create_relationship_to(other_node.neo4j_obj, ToJava.type_to_java(type))
115
- props.each_pair { |k, v| rel[k] = v } if props
116
- rel
117
- end
118
- tx_methods :create_rel
119
-
120
-
121
- def rels(match={})
122
- RelsIterator.new(self, match)
123
- end
124
-
125
- def nodes(match={})
126
- NodesIterator.new(self, match)
127
- end
128
-
129
- def node(match={})
130
- rel = _rel(match)
131
- rel && rel.other_node(self).wrapper
132
- end
133
- tx_methods :node
134
-
135
- def rel?(match={})
136
- _rels(match).has_next
137
- end
138
- tx_methods :rel?
139
-
140
- def rel(match={})
141
- _rel(match)
142
- end
143
- tx_methods :rel
144
-
145
- def _rel(match={})
146
- dir = match[:dir] || :both
147
- rel_type = match[:type]
148
-
149
- rel = if rel_type
150
- get_single_relationship(ToJava.type_to_java(rel_type), ToJava.dir_to_java(dir))
151
- else
152
- iter = get_relationships(ToJava.dir_to_java(dir)).iterator
153
- if (iter.has_next)
154
- first = iter.next
155
- raise "Expected to only find one relationship from node #{neo_id} matching #{match.inspect}" if iter.has_next
156
- first
157
- end
158
- end
159
-
160
- between_id = match[:between] && match[:between].neo_id
161
-
162
- if (rel && between_id)
163
- rel.other_node(self).neo_id == between_id ? rel : nil
164
- else
165
- rel
166
- end
167
- end
168
-
169
- def _rels(match={})
170
- dir = match[:dir] || :both
171
- rel_type = match[:type]
172
-
173
- rels = if rel_type
174
- get_relationships(ToJava.type_to_java(rel_type), ToJava.dir_to_java(dir)).iterator
175
- else
176
- get_relationships(ToJava.dir_to_java(dir)).iterator
177
- end
178
-
179
- between_id = match[:between] && match[:between].neo_id
180
-
181
- if (between_id)
182
- rels.find_all{|r| r.end_node.neo_id == between_id || r.start_node.neo_id == between_id}
183
- else
184
- rels
185
- end
186
-
187
- end
188
-
189
- def class
190
- Neo4j::Node
191
- end
192
-
193
- include Neo4j::Node::Wrapper
194
- end
195
- end
196
- end
197
-
198
- extend_java_class(Java::OrgNeo4jKernelImplCore::NodeProxy)
199
- end
200
-
201
- end
@@ -1,62 +0,0 @@
1
- module Neo4j::Embedded
2
- class EmbeddedRelationship
3
- class << self
4
- # This method is used to extend a Java Neo4j class so that it includes the same mixins as this class.
5
- def extend_java_class(java_clazz)
6
- java_clazz.class_eval do
7
- include Neo4j::Embedded::Property
8
- include Neo4j::EntityEquality
9
- include Neo4j::Relationship::Wrapper
10
- extend Neo4j::Core::TxMethods
11
-
12
- alias_method :_other_node, :getOtherNode
13
-
14
- def exist?
15
- !!graph_database.get_relationship_by_id(neo_id)
16
- rescue Java::OrgNeo4jGraphdb.NotFoundException
17
- nil
18
- end
19
- tx_methods :exist?
20
-
21
- def start_node
22
- _start_node.wrapper
23
- end
24
- tx_methods :start_node
25
-
26
- def _start_node
27
- getStartNode
28
- end
29
-
30
- def rel_type
31
- getType().name().to_sym
32
- end
33
-
34
- def del
35
- delete
36
- end
37
- tx_methods :del
38
-
39
- def other_node(n)
40
- _other_node(n.neo4j_obj).wrapper
41
- end
42
- tx_methods :other_node
43
-
44
- def end_node
45
- _end_node.wrapper
46
- end
47
- tx_methods :end_node
48
-
49
- def _end_node
50
- getEndNode
51
- end
52
-
53
- end
54
- end
55
- end
56
-
57
- extend_java_class(Java::OrgNeo4jKernelImplCore::RelationshipProxy)
58
-
59
- end
60
-
61
-
62
- end