neo4j-wrapper 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.
- data/Gemfile +10 -0
- data/README.rdoc +64 -0
- data/lib/db/active_tx_log +1 -0
- data/lib/db/index/lucene/node/Person_exact/_0.fdt +0 -0
- data/lib/db/index/lucene/node/Person_exact/_0.fdx +0 -0
- data/lib/db/index/lucene/node/Person_exact/_0.fnm +1 -0
- data/lib/db/index/lucene/node/Person_exact/_0.frq +0 -0
- data/lib/db/index/lucene/node/Person_exact/_0.nrm +1 -0
- data/lib/db/index/lucene/node/Person_exact/_0.prx +0 -0
- data/lib/db/index/lucene/node/Person_exact/_0.tii +0 -0
- data/lib/db/index/lucene/node/Person_exact/_0.tis +0 -0
- data/lib/db/index/lucene/node/Person_exact/_1.fdt +0 -0
- data/lib/db/index/lucene/node/Person_exact/_1.fdx +0 -0
- data/lib/db/index/lucene/node/Person_exact/_1.fnm +1 -0
- data/lib/db/index/lucene/node/Person_exact/_1.frq +0 -0
- data/lib/db/index/lucene/node/Person_exact/_1.nrm +1 -0
- data/lib/db/index/lucene/node/Person_exact/_1.prx +0 -0
- data/lib/db/index/lucene/node/Person_exact/_1.tii +0 -0
- data/lib/db/index/lucene/node/Person_exact/_1.tis +0 -0
- data/lib/db/index/lucene/node/Person_exact/_2.fdt +0 -0
- data/lib/db/index/lucene/node/Person_exact/_2.fdx +0 -0
- data/lib/db/index/lucene/node/Person_exact/_2.fnm +1 -0
- data/lib/db/index/lucene/node/Person_exact/_2.frq +0 -0
- data/lib/db/index/lucene/node/Person_exact/_2.nrm +1 -0
- data/lib/db/index/lucene/node/Person_exact/_2.prx +0 -0
- data/lib/db/index/lucene/node/Person_exact/_2.tii +0 -0
- data/lib/db/index/lucene/node/Person_exact/_2.tis +0 -0
- data/lib/db/index/lucene/node/Person_exact/segments.gen +0 -0
- data/lib/db/index/lucene/node/Person_exact/segments_3 +0 -0
- data/lib/db/index/lucene-store.db +0 -0
- data/lib/db/index/lucene.log.active +0 -0
- data/lib/db/index.db +0 -0
- data/lib/db/messages.log +826 -0
- data/lib/db/neostore +0 -0
- data/lib/db/neostore.id +0 -0
- data/lib/db/neostore.nodestore.db +0 -0
- data/lib/db/neostore.nodestore.db.id +0 -0
- data/lib/db/neostore.propertystore.db +0 -0
- data/lib/db/neostore.propertystore.db.arrays +0 -0
- data/lib/db/neostore.propertystore.db.arrays.id +0 -0
- data/lib/db/neostore.propertystore.db.id +0 -0
- data/lib/db/neostore.propertystore.db.index +0 -0
- data/lib/db/neostore.propertystore.db.index.id +0 -0
- data/lib/db/neostore.propertystore.db.index.keys +0 -0
- data/lib/db/neostore.propertystore.db.index.keys.id +0 -0
- data/lib/db/neostore.propertystore.db.strings +0 -0
- data/lib/db/neostore.propertystore.db.strings.id +0 -0
- data/lib/db/neostore.relationshipstore.db +0 -0
- data/lib/db/neostore.relationshipstore.db.id +0 -0
- data/lib/db/neostore.relationshiptypestore.db +0 -0
- data/lib/db/neostore.relationshiptypestore.db.id +0 -0
- data/lib/db/neostore.relationshiptypestore.db.names +0 -0
- data/lib/db/neostore.relationshiptypestore.db.names.id +0 -0
- data/lib/db/nioneo_logical.log.active +0 -0
- data/lib/db/tm_tx_log.1 +0 -0
- data/lib/example.rb +34 -0
- data/lib/neo4j/identity_map.rb +109 -0
- data/lib/neo4j/node_mixin.rb +74 -0
- data/lib/neo4j/relationship_mixin.rb +62 -0
- data/lib/neo4j/type_converters/type_converters.rb +333 -0
- data/lib/neo4j-wrapper/class_methods.rb +27 -0
- data/lib/neo4j-wrapper/find.rb +65 -0
- data/lib/neo4j-wrapper/has_n/class_methods.rb +131 -0
- data/lib/neo4j-wrapper/has_n/decl_rel.rb +261 -0
- data/lib/neo4j-wrapper/has_n/instance_methods.rb +12 -0
- data/lib/neo4j-wrapper/has_n/nodes.rb +83 -0
- data/lib/neo4j-wrapper/node_mixin/class_methods.rb +53 -0
- data/lib/neo4j-wrapper/node_mixin/delegates.rb +140 -0
- data/lib/neo4j-wrapper/node_mixin/initialize.rb +43 -0
- data/lib/neo4j-wrapper/properties/class_methods.rb +150 -0
- data/lib/neo4j-wrapper/relationship_mixin/class_methods.rb +30 -0
- data/lib/neo4j-wrapper/relationship_mixin/delegates.rb +110 -0
- data/lib/neo4j-wrapper/relationship_mixin/initialize.rb +35 -0
- data/lib/neo4j-wrapper/rule/class_methods.rb +204 -0
- data/lib/neo4j-wrapper/rule/event_listener.rb +66 -0
- data/lib/neo4j-wrapper/rule/functions/count.rb +45 -0
- data/lib/neo4j-wrapper/rule/functions/function.rb +76 -0
- data/lib/neo4j-wrapper/rule/functions/sum.rb +31 -0
- data/lib/neo4j-wrapper/rule/instance_methods.rb +16 -0
- data/lib/neo4j-wrapper/rule/neo4j_core_ext/traverser.rb +29 -0
- data/lib/neo4j-wrapper/rule/rule.rb +134 -0
- data/lib/neo4j-wrapper/rule/rule_node.rb +205 -0
- data/lib/neo4j-wrapper/version.rb +5 -0
- data/lib/neo4j-wrapper/wrapper.rb +38 -0
- data/lib/neo4j-wrapper.rb +35 -0
- data/lib/test.rb +61 -0
- data/neo4j-wrapper.gemspec +31 -0
- metadata +162 -0
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
module Neo4j
|
|
2
|
+
module Wrapper
|
|
3
|
+
module Rule
|
|
4
|
+
|
|
5
|
+
# This is the node that has relationships to all nodes of a given class.
|
|
6
|
+
# For example if the PersonNode has a rule then it will also have one RuleNode
|
|
7
|
+
# from where it will create relationships to each created node of type PersonNode.
|
|
8
|
+
# The RuleNode can also be used to hold properties for functions, like sum and count.
|
|
9
|
+
#
|
|
10
|
+
class RuleNode
|
|
11
|
+
include Neo4j::Core::ToJava
|
|
12
|
+
attr_reader :rules
|
|
13
|
+
attr_reader :model_class
|
|
14
|
+
@@rule_nodes = {}
|
|
15
|
+
|
|
16
|
+
def initialize(clazz)
|
|
17
|
+
classname = clazz.to_s
|
|
18
|
+
@model_class = Neo4j::Wrapper.to_class(classname)
|
|
19
|
+
@classname = clazz
|
|
20
|
+
@rules = []
|
|
21
|
+
@ref_node_key = ("rule_ref_for_" + clazz.to_s).to_sym
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def to_s
|
|
25
|
+
"RuleNode #{@classname}, @@rule_nodes #{@@rule_nodes.size} #rules: #{@rules.size}"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def rule_node
|
|
29
|
+
ref_node._java_node.synchronized do
|
|
30
|
+
@@rule_nodes[key] ||= find_node || create_node
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def rule_node?(node)
|
|
35
|
+
@@rule_nodes[key] == node
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def key
|
|
39
|
+
"#{ref_node.neo_id}#{@ref_node_key}".to_sym
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def ref_node
|
|
43
|
+
if @model_class.respond_to? :ref_node_for_class
|
|
44
|
+
@model_class.ref_node_for_class
|
|
45
|
+
else
|
|
46
|
+
Neo4j.ref_node
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def create_node
|
|
51
|
+
Neo4j::Transaction.run do
|
|
52
|
+
node = Neo4j::Node.new
|
|
53
|
+
ref_node.create_relationship_to(node, type_to_java(@classname))
|
|
54
|
+
node
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def inherit(subclass)
|
|
59
|
+
@rules.each do |rule|
|
|
60
|
+
subclass.rule rule.rule_name, rule.props, &rule.filter
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def find_node
|
|
65
|
+
ref_node.rel?(:outgoing, @classname.to_s) && ref_node._node(:outgoing, @classname.to_s)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def ref_node_changed?
|
|
69
|
+
if ref_node != Thread.current[@ref_node_key]
|
|
70
|
+
Thread.current[@ref_node_key] = ref_node
|
|
71
|
+
true
|
|
72
|
+
else
|
|
73
|
+
false
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def clear_rule_node
|
|
78
|
+
@@rule_nodes[key] = nil
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def rule_names
|
|
82
|
+
@rules.map { |r| r.rule_name }
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def find_rule(rule_name)
|
|
86
|
+
@rules.find { |rule| rule.rule_name == rule_name }
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def add_rule(rule)
|
|
90
|
+
@rules << rule
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def remove_rule(rule_name)
|
|
94
|
+
r = find_rule(rule_name)
|
|
95
|
+
r && @rules.delete(r)
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# Return a traversal object with methods for each rule and function.
|
|
99
|
+
# E.g. Person.all.old or Person.all.sum(:age)
|
|
100
|
+
def traversal(rule_name)
|
|
101
|
+
traversal = rule_node.outgoing(rule_name)
|
|
102
|
+
@rules.each do |rule|
|
|
103
|
+
traversal.filter_method(rule.rule_name) do |path|
|
|
104
|
+
path.end_node.rel?(:incoming, rule.rule_name)
|
|
105
|
+
end
|
|
106
|
+
rule.functions && rule.functions.each do |func|
|
|
107
|
+
traversal.functions_method(func, self, rule_name)
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
traversal
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def find_function(rule_name, function_name, function_id)
|
|
114
|
+
rule = find_rule(rule_name)
|
|
115
|
+
rule.find_function(function_name, function_id)
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
def execute_rules(node, *changes)
|
|
119
|
+
@rules.each do |rule|
|
|
120
|
+
execute_rule(rule, node, *changes)
|
|
121
|
+
execute_other_rules(rule, node)
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def execute_other_rules(rule, node)
|
|
126
|
+
rule.triggers && rule.triggers.each do |rel_type|
|
|
127
|
+
node.incoming(rel_type).each { |n| n.trigger_rules }
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def execute_rule(rule, node, *changes)
|
|
132
|
+
if rule.execute_filter(node)
|
|
133
|
+
if connected?(rule.rule_name, node)
|
|
134
|
+
# it was already connected - the node is in the same rule group but a property has changed
|
|
135
|
+
execute_update_functions(rule, *changes)
|
|
136
|
+
else
|
|
137
|
+
# the node has changed or is in a new rule group
|
|
138
|
+
connect(rule.rule_name, node)
|
|
139
|
+
execute_add_functions(rule, *changes)
|
|
140
|
+
end
|
|
141
|
+
else
|
|
142
|
+
if break_connection(rule.rule_name, node)
|
|
143
|
+
# the node has been removed from a rule group
|
|
144
|
+
execute_delete_functions(rule, *changes)
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
def execute_update_functions(rule, *changes)
|
|
150
|
+
if functions = find_functions_for_changes(rule, *changes)
|
|
151
|
+
functions && functions.each { |f| f.update(rule.rule_name, rule_node, changes[1], changes[2]) }
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
def execute_add_functions(rule, *changes)
|
|
156
|
+
if functions = find_functions_for_changes(rule, *changes)
|
|
157
|
+
functions && functions.each { |f| f.add(rule.rule_name, rule_node, changes[2]) }
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
def execute_delete_functions(rule, *changes)
|
|
162
|
+
if functions = find_functions_for_changes(rule, *changes)
|
|
163
|
+
functions.each { |f| f.delete(rule.rule_name, rule_node, changes[1]) }
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
def find_functions_for_changes(rule, *changes)
|
|
168
|
+
!changes.empty? && rule.functions_for(changes[0])
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
# work out if two nodes are connected by a particular relationship
|
|
172
|
+
# uses the end_node to start with because it's more likely to have less relationships to go through
|
|
173
|
+
# (just the number of superclasses it has really)
|
|
174
|
+
def connected?(rule_name, end_node)
|
|
175
|
+
end_node.nodes(:incoming, rule_name).find { |n| n == rule_node }
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
def connect(rule_name, end_node)
|
|
179
|
+
rule_node._java_node.create_relationship_to(end_node._java_node, type_to_java(rule_name))
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
# sever a direct one-to-one relationship if it exists
|
|
183
|
+
def break_connection(rule_name, end_node)
|
|
184
|
+
rel = end_node._rels(:incoming, rule_name).find { |r| r._start_node == rule_node }
|
|
185
|
+
rel && rel.del
|
|
186
|
+
!rel.nil?
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
def bulk_update?
|
|
190
|
+
@rules.size == 1 && @rules.first.bulk_update?
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
def classes_changed(total)
|
|
194
|
+
@rules.each do |rule|
|
|
195
|
+
if rule.bulk_update?
|
|
196
|
+
rule.functions.first.classes_changed(rule.rule_name, rule_node, total)
|
|
197
|
+
total.added.each { |node| connect(rule.rule_name, node) }
|
|
198
|
+
total.deleted.each { |node| break_connection(rule.rule_name, node) }
|
|
199
|
+
end
|
|
200
|
+
end
|
|
201
|
+
end
|
|
202
|
+
end
|
|
203
|
+
end
|
|
204
|
+
end
|
|
205
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
module Neo4j
|
|
2
|
+
module Wrapper
|
|
3
|
+
|
|
4
|
+
# This method is used when loading Neo4j::Node objects
|
|
5
|
+
#
|
|
6
|
+
# Reads the <tt>_classname</tt> property and tries to load the ruby class.
|
|
7
|
+
# The Neo4j::Core gem will use this method, because the following:
|
|
8
|
+
# Neo4j::Node.wrapper_proc=method(:wrapper)
|
|
9
|
+
#
|
|
10
|
+
# @param [Neo4j::Node, Neo4j:Relationship] entity the entity which might be wrapped
|
|
11
|
+
# @return [Object] a Ruby class wrapping the given entity
|
|
12
|
+
# @see Neo4j::Core::Wrapper.wrapper_proc=
|
|
13
|
+
def wrapper(entity)
|
|
14
|
+
return entity unless entity.property?(:_classname)
|
|
15
|
+
existing_instance = Neo4j::IdentityMap.get(entity)
|
|
16
|
+
return existing_instance if existing_instance
|
|
17
|
+
new_instance = to_class(entity[:_classname])._load_wrapper(entity)
|
|
18
|
+
Neo4j::IdentityMap.add(entity, new_instance)
|
|
19
|
+
new_instance
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# @param [String] class_name the name we want the Class for
|
|
23
|
+
# @return [Class] the class corresponding to the given name
|
|
24
|
+
def to_class(class_name)
|
|
25
|
+
class_name.split("::").inject(Kernel) { |container, name| container.const_get(name.to_s) }
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
extend self
|
|
29
|
+
|
|
30
|
+
Neo4j::Node.wrapper_proc=method(:wrapper)
|
|
31
|
+
Neo4j::Relationship.wrapper_proc=method(:wrapper)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
require 'neo4j-core'
|
|
2
|
+
|
|
3
|
+
require 'neo4j-wrapper/wrapper'
|
|
4
|
+
require 'neo4j-wrapper/class_methods'
|
|
5
|
+
require 'neo4j-wrapper/version'
|
|
6
|
+
require 'neo4j-wrapper/node_mixin/delegates'
|
|
7
|
+
require 'neo4j-wrapper/node_mixin/class_methods'
|
|
8
|
+
require 'neo4j-wrapper/node_mixin/initialize'
|
|
9
|
+
|
|
10
|
+
require 'neo4j-wrapper/properties/class_methods'
|
|
11
|
+
|
|
12
|
+
require 'neo4j-wrapper/has_n/class_methods'
|
|
13
|
+
require 'neo4j-wrapper/has_n/decl_rel'
|
|
14
|
+
require 'neo4j-wrapper/has_n/nodes'
|
|
15
|
+
require 'neo4j-wrapper/has_n/instance_methods'
|
|
16
|
+
|
|
17
|
+
require 'neo4j-wrapper/relationship_mixin/class_methods'
|
|
18
|
+
require 'neo4j-wrapper/relationship_mixin/initialize'
|
|
19
|
+
require 'neo4j-wrapper/relationship_mixin/delegates'
|
|
20
|
+
require 'neo4j-wrapper/find'
|
|
21
|
+
|
|
22
|
+
require 'neo4j-wrapper/rule/neo4j_core_ext/traverser'
|
|
23
|
+
require 'neo4j-wrapper/rule/class_methods'
|
|
24
|
+
require 'neo4j-wrapper/rule/instance_methods'
|
|
25
|
+
require 'neo4j-wrapper/rule/event_listener'
|
|
26
|
+
require 'neo4j-wrapper/rule/rule'
|
|
27
|
+
require 'neo4j-wrapper/rule/rule_node'
|
|
28
|
+
require 'neo4j-wrapper/rule/functions/function'
|
|
29
|
+
require 'neo4j-wrapper/rule/functions/count'
|
|
30
|
+
require 'neo4j-wrapper/rule/functions/sum'
|
|
31
|
+
|
|
32
|
+
require 'neo4j/type_converters/type_converters'
|
|
33
|
+
require 'neo4j/node_mixin'
|
|
34
|
+
require 'neo4j/relationship_mixin'
|
|
35
|
+
require 'neo4j/identity_map'
|
data/lib/test.rb
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
def calc(x)
|
|
2
|
+
x + 1
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
p = method(:calc)
|
|
6
|
+
t = Time.now
|
|
7
|
+
(0..10000).each { |x| calc(x) }
|
|
8
|
+
total = Time.now - t
|
|
9
|
+
puts "1. total = #{total}"
|
|
10
|
+
|
|
11
|
+
#p = Proc.new {|x| x + 1}
|
|
12
|
+
t = Time.now
|
|
13
|
+
(0..10000).each { |x| p.call(x) }
|
|
14
|
+
total = Time.now - t
|
|
15
|
+
puts "2. total = #{total}"
|
|
16
|
+
|
|
17
|
+
puts "================="
|
|
18
|
+
t = Time.now
|
|
19
|
+
(0..10000).each { |x| calc(x) }
|
|
20
|
+
total = Time.now - t
|
|
21
|
+
puts "1. total = #{total}"
|
|
22
|
+
|
|
23
|
+
t = Time.now
|
|
24
|
+
(0..10000).each { |x| p.call(x) }
|
|
25
|
+
total = Time.now - t
|
|
26
|
+
puts "2. total = #{total}"
|
|
27
|
+
|
|
28
|
+
puts "================="
|
|
29
|
+
t = Time.now
|
|
30
|
+
(0..10000).each { |x| calc(x) }
|
|
31
|
+
total = Time.now - t
|
|
32
|
+
puts "1. total = #{total}"
|
|
33
|
+
|
|
34
|
+
t = Time.now
|
|
35
|
+
(0..10000).each { |x| p.call(x) }
|
|
36
|
+
total = Time.now - t
|
|
37
|
+
puts "2. total = #{total}"
|
|
38
|
+
|
|
39
|
+
p = method(:calc).to_proc
|
|
40
|
+
|
|
41
|
+
puts "================= TO PROC"
|
|
42
|
+
t = Time.now
|
|
43
|
+
(0..10000).each { |x| calc(x) }
|
|
44
|
+
total = Time.now - t
|
|
45
|
+
puts "1. total = #{total}"
|
|
46
|
+
|
|
47
|
+
t = Time.now
|
|
48
|
+
(0..10000).each { |x| p.call(x) }
|
|
49
|
+
total = Time.now - t
|
|
50
|
+
puts "2. total = #{total}"
|
|
51
|
+
|
|
52
|
+
puts "================= TO PROC"
|
|
53
|
+
t = Time.now
|
|
54
|
+
(0..10000).each { |x| calc(x) }
|
|
55
|
+
total = Time.now - t
|
|
56
|
+
puts "1. total = #{total}"
|
|
57
|
+
|
|
58
|
+
t = Time.now
|
|
59
|
+
(0..10000).each { |x| p.call(x) }
|
|
60
|
+
total = Time.now - t
|
|
61
|
+
puts "2. total = #{total}"
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
lib = File.expand_path('../lib/', __FILE__)
|
|
2
|
+
$:.unshift lib unless $:.include?(lib)
|
|
3
|
+
|
|
4
|
+
require 'neo4j-wrapper/version'
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |s|
|
|
7
|
+
s.name = "neo4j-wrapper"
|
|
8
|
+
s.version = Neo4j::Wrapper::VERSION
|
|
9
|
+
s.platform = 'java'
|
|
10
|
+
s.required_ruby_version = ">= 1.8.7"
|
|
11
|
+
|
|
12
|
+
s.authors = "Andreas Ronge"
|
|
13
|
+
s.email = 'andreas.ronge@gmail.com'
|
|
14
|
+
s.homepage = "http://github.com/andreasronge/neo4j-wrapper/tree"
|
|
15
|
+
s.rubyforge_project = 'neo4j-wrapper'
|
|
16
|
+
s.summary = "A graph database for JRuby"
|
|
17
|
+
s.description = <<-EOF
|
|
18
|
+
You can think of Neo4j as a high-performance graph engine with all the features of a mature and robust database.
|
|
19
|
+
The programmer works with an object-oriented, flexible network structure rather than with strict and static tables
|
|
20
|
+
yet enjoys all the benefits of a fully transactional, enterprise-strength database.
|
|
21
|
+
It comes included with the Apache Lucene document database.
|
|
22
|
+
EOF
|
|
23
|
+
|
|
24
|
+
s.require_path = 'lib'
|
|
25
|
+
s.files = Dir.glob("{bin,lib,config}/**/*") + %w(README.rdoc Gemfile neo4j-wrapper.gemspec)
|
|
26
|
+
s.has_rdoc = true
|
|
27
|
+
s.extra_rdoc_files = %w( README.rdoc )
|
|
28
|
+
s.rdoc_options = ["--quiet", "--title", "Neo4j.rb", "--line-numbers", "--main", "README.rdoc", "--inline-source"]
|
|
29
|
+
|
|
30
|
+
s.add_dependency("neo4j-core", "0.0.6")
|
|
31
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: neo4j-wrapper
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
prerelease:
|
|
5
|
+
version: 0.0.1
|
|
6
|
+
platform: java
|
|
7
|
+
authors:
|
|
8
|
+
- Andreas Ronge
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain: []
|
|
12
|
+
|
|
13
|
+
date: 2012-04-03 00:00:00 Z
|
|
14
|
+
dependencies:
|
|
15
|
+
- !ruby/object:Gem::Dependency
|
|
16
|
+
name: neo4j-core
|
|
17
|
+
prerelease: false
|
|
18
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
|
19
|
+
none: false
|
|
20
|
+
requirements:
|
|
21
|
+
- - "="
|
|
22
|
+
- !ruby/object:Gem::Version
|
|
23
|
+
version: 0.0.6
|
|
24
|
+
type: :runtime
|
|
25
|
+
version_requirements: *id001
|
|
26
|
+
description: |
|
|
27
|
+
You can think of Neo4j as a high-performance graph engine with all the features of a mature and robust database.
|
|
28
|
+
The programmer works with an object-oriented, flexible network structure rather than with strict and static tables
|
|
29
|
+
yet enjoys all the benefits of a fully transactional, enterprise-strength database.
|
|
30
|
+
It comes included with the Apache Lucene document database.
|
|
31
|
+
|
|
32
|
+
email: andreas.ronge@gmail.com
|
|
33
|
+
executables: []
|
|
34
|
+
|
|
35
|
+
extensions: []
|
|
36
|
+
|
|
37
|
+
extra_rdoc_files:
|
|
38
|
+
- README.rdoc
|
|
39
|
+
files:
|
|
40
|
+
- lib/test.rb
|
|
41
|
+
- lib/neo4j-wrapper.rb
|
|
42
|
+
- lib/example.rb
|
|
43
|
+
- lib/neo4j-wrapper/find.rb
|
|
44
|
+
- lib/neo4j-wrapper/wrapper.rb
|
|
45
|
+
- lib/neo4j-wrapper/class_methods.rb
|
|
46
|
+
- lib/neo4j-wrapper/version.rb
|
|
47
|
+
- lib/neo4j-wrapper/relationship_mixin/initialize.rb
|
|
48
|
+
- lib/neo4j-wrapper/relationship_mixin/delegates.rb
|
|
49
|
+
- lib/neo4j-wrapper/relationship_mixin/class_methods.rb
|
|
50
|
+
- lib/neo4j-wrapper/properties/class_methods.rb
|
|
51
|
+
- lib/neo4j-wrapper/has_n/nodes.rb
|
|
52
|
+
- lib/neo4j-wrapper/has_n/instance_methods.rb
|
|
53
|
+
- lib/neo4j-wrapper/has_n/decl_rel.rb
|
|
54
|
+
- lib/neo4j-wrapper/has_n/class_methods.rb
|
|
55
|
+
- lib/neo4j-wrapper/node_mixin/initialize.rb
|
|
56
|
+
- lib/neo4j-wrapper/node_mixin/delegates.rb
|
|
57
|
+
- lib/neo4j-wrapper/node_mixin/class_methods.rb
|
|
58
|
+
- lib/neo4j-wrapper/rule/rule.rb
|
|
59
|
+
- lib/neo4j-wrapper/rule/rule_node.rb
|
|
60
|
+
- lib/neo4j-wrapper/rule/instance_methods.rb
|
|
61
|
+
- lib/neo4j-wrapper/rule/class_methods.rb
|
|
62
|
+
- lib/neo4j-wrapper/rule/event_listener.rb
|
|
63
|
+
- lib/neo4j-wrapper/rule/functions/function.rb
|
|
64
|
+
- lib/neo4j-wrapper/rule/functions/count.rb
|
|
65
|
+
- lib/neo4j-wrapper/rule/functions/sum.rb
|
|
66
|
+
- lib/neo4j-wrapper/rule/neo4j_core_ext/traverser.rb
|
|
67
|
+
- lib/neo4j/identity_map.rb
|
|
68
|
+
- lib/neo4j/node_mixin.rb
|
|
69
|
+
- lib/neo4j/relationship_mixin.rb
|
|
70
|
+
- lib/neo4j/type_converters/type_converters.rb
|
|
71
|
+
- lib/db/neostore.relationshiptypestore.db.names
|
|
72
|
+
- lib/db/neostore.id
|
|
73
|
+
- lib/db/neostore.relationshiptypestore.db.names.id
|
|
74
|
+
- lib/db/neostore.nodestore.db.id
|
|
75
|
+
- lib/db/neostore.propertystore.db.index
|
|
76
|
+
- lib/db/neostore.propertystore.db.strings.id
|
|
77
|
+
- lib/db/nioneo_logical.log.active
|
|
78
|
+
- lib/db/neostore.propertystore.db.strings
|
|
79
|
+
- lib/db/neostore.relationshiptypestore.db.id
|
|
80
|
+
- lib/db/neostore
|
|
81
|
+
- lib/db/neostore.nodestore.db
|
|
82
|
+
- lib/db/neostore.propertystore.db.index.keys.id
|
|
83
|
+
- lib/db/neostore.propertystore.db.arrays.id
|
|
84
|
+
- lib/db/messages.log
|
|
85
|
+
- lib/db/neostore.relationshipstore.db.id
|
|
86
|
+
- lib/db/neostore.propertystore.db.arrays
|
|
87
|
+
- lib/db/neostore.relationshipstore.db
|
|
88
|
+
- lib/db/neostore.propertystore.db.index.id
|
|
89
|
+
- lib/db/neostore.propertystore.db.id
|
|
90
|
+
- lib/db/index.db
|
|
91
|
+
- lib/db/neostore.propertystore.db
|
|
92
|
+
- lib/db/tm_tx_log.1
|
|
93
|
+
- lib/db/neostore.relationshiptypestore.db
|
|
94
|
+
- lib/db/active_tx_log
|
|
95
|
+
- lib/db/neostore.propertystore.db.index.keys
|
|
96
|
+
- lib/db/index/lucene-store.db
|
|
97
|
+
- lib/db/index/lucene.log.active
|
|
98
|
+
- lib/db/index/lucene/node/Person_exact/_1.prx
|
|
99
|
+
- lib/db/index/lucene/node/Person_exact/_1.tii
|
|
100
|
+
- lib/db/index/lucene/node/Person_exact/_0.fdx
|
|
101
|
+
- lib/db/index/lucene/node/Person_exact/segments.gen
|
|
102
|
+
- lib/db/index/lucene/node/Person_exact/_0.frq
|
|
103
|
+
- lib/db/index/lucene/node/Person_exact/_2.tii
|
|
104
|
+
- lib/db/index/lucene/node/Person_exact/_1.nrm
|
|
105
|
+
- lib/db/index/lucene/node/Person_exact/_0.nrm
|
|
106
|
+
- lib/db/index/lucene/node/Person_exact/_1.tis
|
|
107
|
+
- lib/db/index/lucene/node/Person_exact/_2.frq
|
|
108
|
+
- lib/db/index/lucene/node/Person_exact/_2.nrm
|
|
109
|
+
- lib/db/index/lucene/node/Person_exact/_2.fdt
|
|
110
|
+
- lib/db/index/lucene/node/Person_exact/_0.fdt
|
|
111
|
+
- lib/db/index/lucene/node/Person_exact/_0.tis
|
|
112
|
+
- lib/db/index/lucene/node/Person_exact/_1.fnm
|
|
113
|
+
- lib/db/index/lucene/node/Person_exact/_1.frq
|
|
114
|
+
- lib/db/index/lucene/node/Person_exact/_0.tii
|
|
115
|
+
- lib/db/index/lucene/node/Person_exact/_2.tis
|
|
116
|
+
- lib/db/index/lucene/node/Person_exact/_2.prx
|
|
117
|
+
- lib/db/index/lucene/node/Person_exact/_2.fdx
|
|
118
|
+
- lib/db/index/lucene/node/Person_exact/_0.prx
|
|
119
|
+
- lib/db/index/lucene/node/Person_exact/_2.fnm
|
|
120
|
+
- lib/db/index/lucene/node/Person_exact/_1.fdt
|
|
121
|
+
- lib/db/index/lucene/node/Person_exact/_0.fnm
|
|
122
|
+
- lib/db/index/lucene/node/Person_exact/_1.fdx
|
|
123
|
+
- lib/db/index/lucene/node/Person_exact/segments_3
|
|
124
|
+
- README.rdoc
|
|
125
|
+
- Gemfile
|
|
126
|
+
- neo4j-wrapper.gemspec
|
|
127
|
+
homepage: http://github.com/andreasronge/neo4j-wrapper/tree
|
|
128
|
+
licenses: []
|
|
129
|
+
|
|
130
|
+
post_install_message:
|
|
131
|
+
rdoc_options:
|
|
132
|
+
- --quiet
|
|
133
|
+
- --title
|
|
134
|
+
- Neo4j.rb
|
|
135
|
+
- --line-numbers
|
|
136
|
+
- --main
|
|
137
|
+
- README.rdoc
|
|
138
|
+
- --inline-source
|
|
139
|
+
require_paths:
|
|
140
|
+
- lib
|
|
141
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
142
|
+
none: false
|
|
143
|
+
requirements:
|
|
144
|
+
- - ">="
|
|
145
|
+
- !ruby/object:Gem::Version
|
|
146
|
+
version: 1.8.7
|
|
147
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
148
|
+
none: false
|
|
149
|
+
requirements:
|
|
150
|
+
- - ">="
|
|
151
|
+
- !ruby/object:Gem::Version
|
|
152
|
+
version: "0"
|
|
153
|
+
requirements: []
|
|
154
|
+
|
|
155
|
+
rubyforge_project: neo4j-wrapper
|
|
156
|
+
rubygems_version: 1.8.15
|
|
157
|
+
signing_key:
|
|
158
|
+
specification_version: 3
|
|
159
|
+
summary: A graph database for JRuby
|
|
160
|
+
test_files: []
|
|
161
|
+
|
|
162
|
+
has_rdoc: true
|