neo4j 1.2.6-java → 1.3.0-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 (62) hide show
  1. data/CHANGELOG +16 -0
  2. data/README.rdoc +11 -0
  3. data/bin/neo4j-upgrade +72 -0
  4. data/lib/neo4j.rb +18 -19
  5. data/lib/neo4j/algo/algo.rb +2 -1
  6. data/lib/neo4j/database.rb +12 -0
  7. data/lib/neo4j/event_handler.rb +69 -7
  8. data/lib/neo4j/has_list/class_methods.rb +1 -1
  9. data/lib/neo4j/has_list/mapping.rb +13 -16
  10. data/lib/neo4j/index/class_methods.rb +9 -3
  11. data/lib/neo4j/index/index.rb +2 -1
  12. data/lib/neo4j/index/indexer.rb +3 -2
  13. data/lib/neo4j/index/indexer_registry.rb +1 -1
  14. data/lib/neo4j/jars/core/neo4j-community-1.5.jar +0 -0
  15. data/lib/neo4j/jars/core/neo4j-cypher-1.5.jar +0 -0
  16. data/lib/neo4j/jars/core/{neo4j-graph-algo-1.4.1.jar → neo4j-graph-algo-1.5.jar} +0 -0
  17. data/lib/neo4j/jars/core/neo4j-graph-matching-1.5.jar +0 -0
  18. data/lib/neo4j/jars/core/neo4j-jmx-1.5.jar +0 -0
  19. data/lib/neo4j/jars/core/neo4j-kernel-1.5.jar +0 -0
  20. data/lib/neo4j/jars/core/{neo4j-lucene-index-1.4.1.jar → neo4j-lucene-index-1.5.jar} +0 -0
  21. data/lib/neo4j/jars/{ha/neo4j-shell-1.4.1.jar → core/neo4j-shell-1.5.jar} +0 -0
  22. data/lib/neo4j/jars/core/neo4j-udc-1.5.jar +0 -0
  23. data/lib/neo4j/jars/{ha → core}/org.apache.servicemix.bundles.jline-0.9.94_1.jar +0 -0
  24. data/lib/neo4j/jars/core/scala-library-2.9.0-1.jar +0 -0
  25. data/lib/neo4j/jars/core/server-api-1.5.jar +0 -0
  26. data/lib/neo4j/jars/ha/neo4j-backup-1.5.jar +0 -0
  27. data/lib/neo4j/jars/ha/neo4j-com-1.5.jar +0 -0
  28. data/lib/neo4j/jars/ha/neo4j-enterprise-1.5.jar +0 -0
  29. data/lib/neo4j/jars/ha/neo4j-ha-1.5.jar +0 -0
  30. data/lib/neo4j/jars/ha/neo4j-management-1.5.jar +0 -0
  31. data/lib/neo4j/jars/ha/org.apache.servicemix.bundles.netty-3.2.5.Final_1.jar +0 -0
  32. data/lib/neo4j/jars/ha/slf4j-api-1.6.1.jar +0 -0
  33. data/lib/neo4j/neo4j.rb +16 -0
  34. data/lib/neo4j/node_mixin/node_mixin.rb +2 -2
  35. data/lib/neo4j/rails/attributes.rb +9 -5
  36. data/lib/neo4j/rails/compositions.rb +9 -1
  37. data/lib/neo4j/rails/mapping/property.rb +27 -25
  38. data/lib/neo4j/rails/model.rb +1 -0
  39. data/lib/neo4j/rails/persistence.rb +56 -56
  40. data/lib/neo4j/rails/rel_persistence.rb +1 -1
  41. data/lib/neo4j/rails/relationship.rb +9 -4
  42. data/lib/neo4j/rails/relationships/relationships.rb +6 -2
  43. data/lib/neo4j/rails/relationships/rels_dsl.rb +58 -0
  44. data/lib/neo4j/rails/relationships/storage.rb +10 -1
  45. data/lib/neo4j/rails/validations/uniqueness.rb +1 -0
  46. data/lib/neo4j/rails/versioning/versioning.rb +64 -9
  47. data/lib/neo4j/rule/event_listener.rb +7 -1
  48. data/lib/neo4j/rule/functions/count.rb +6 -0
  49. data/lib/neo4j/rule/rule.rb +20 -5
  50. data/lib/neo4j/rule/rule_node.rb +31 -19
  51. data/lib/neo4j/traversal/traverser.rb +38 -0
  52. data/lib/neo4j/version.rb +1 -1
  53. data/neo4j.gemspec +1 -1
  54. metadata +24 -17
  55. data/lib/neo4j/jars/core/neo4j-backup-1.4.1.jar +0 -0
  56. data/lib/neo4j/jars/core/neo4j-index-1.3-1.3.M01.jar +0 -0
  57. data/lib/neo4j/jars/core/neo4j-kernel-1.4.1.jar +0 -0
  58. data/lib/neo4j/jars/ha/neo4j-com-1.4.1.jar +0 -0
  59. data/lib/neo4j/jars/ha/neo4j-ha-1.4.1.jar +0 -0
  60. data/lib/neo4j/jars/ha/neo4j-jmx-1.4.1.jar +0 -0
  61. data/lib/neo4j/jars/ha/neo4j-management-1.4.1.jar +0 -0
  62. data/lib/neo4j/jars/ha/netty-3.2.1.Final.jar +0 -0
data/CHANGELOG CHANGED
@@ -1,3 +1,19 @@
1
+ == 1.3.0 / 2011-12-06
2
+ * Added neo4j-upgrade script to rename lucene index files and upgrade to 1.5 [#197]
3
+ * Expose Neo4j::NodeMixin#index_types returning available indices (useful for Cypher queries) [#194]
4
+ * The to_other method is now available also in the Neo4j::Rails API [#193]
5
+ * Expose rel_type method for Neo4j::Rails::Relationship [#196]
6
+ * Support for breadth and depth first traversals [#198]
7
+ * Support for cypher query [#197]
8
+ * Fix for rule node concurrency issue (pull #78, Vivek Prahlad)
9
+ * Bugfix for the uniqueness validation for properties with quotes (pull #76, Vivek Prahlad)
10
+ * More performance tweaks (pull #75, #77, Vivek Prahlad)
11
+ * Fixing add_index for properties other than type string (pull #74, Deepak N)
12
+ * Significant performance boost for creating large numbers of models in a transaction (pull #73, Vivek Prahlad)
13
+ * Upgrade to neo4j 1.5 jars (pull #72, Vivek Prahlad)
14
+ * Fix for assigning nil values to incoming has_one relation (pull #70, Deepak N)
15
+ * Support for revert and fixes for Neo4j::Rails::Versioning (pull #71, Vivek Prahlad)
16
+
1
17
  == 1.2.6 / 2011-11-02
2
18
  * Generators can now generate relationships as well [#195]
3
19
  * Better will_paginate support for Neo4j::Rails::Model [#194]
@@ -12,7 +12,9 @@ It uses two powerful and mature Java libraries:
12
12
  === Documentation
13
13
 
14
14
  * {Guides and API}[http://neo4j.rubyforge.org/guides/index.html]
15
+ * {RDoc}[http://neo4j.rubyforge.org]
15
16
  * {Blog: Neo4j and Rails 3}[http://blog.jayway.com/2011/03/02/neo4j-rb-1-0-0-and-rails-3/]
17
+ * {Kvitter Example Application}[https://github.com/andreasronge/kvitter/]
16
18
 
17
19
  === Why Neo4j.rb or a Graph Database ?
18
20
 
@@ -107,6 +109,15 @@ To run it with Tomcat instead of WEBrick
107
109
  gem install trinidad
108
110
  trinidad
109
111
 
112
+ === Architecture
113
+
114
+ As you seen above, neo4j.rb consists of a three layers API:
115
+
116
+ * Layer 1. For interacting with the basic building blocks of the graph database (node, properties and relationship), see Neo4j::Node and Neo4j::Relationship classes.
117
+ * Layer 2. A binding API to Ruby objects, see Neo4j::NodeMixin and Neo4j::RelationshipMixin modules.
118
+ * Layer 3. An implementation of the Rails Active Model and a subset of the Active Record API, see Neo4j::Rails::Model class.
119
+
120
+ Notice that you can always access the lower layers if you want to do some more advanced. You can even access the Java API directly.
110
121
 
111
122
  === Presentation Materials and other URLs
112
123
  * {Presentation: RailsConf 2011}[http://andreasronge.github.com/neo4j-railsconf.pdf]
@@ -0,0 +1,72 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'fileutils'
4
+ require 'neo4j'
5
+
6
+ if ARGV.length == 0
7
+ puts <<TEXT
8
+ A tool for upgrading the neo4j database to #{Neo4j::VERSION}.
9
+ Make sure you shutdown the database cleanly before running this script.
10
+ More info: http://neo4j.rubyforge.org/guides/configuration.html#upgrade-to-a-new-neo4j-version
11
+
12
+ Usage : neo4j-upgrade <location of database>
13
+ Example : neo4j-upgrade db/neo4j-development
14
+
15
+ TEXT
16
+ exit
17
+ end
18
+
19
+ def error(msg)
20
+ puts msg
21
+ exit
22
+ end
23
+
24
+ def rename_index(folder, file)
25
+ new_file = File.join(folder, file.gsub(/-/, '_'))
26
+ old_file = File.join(folder, file)
27
+ puts "moved index '#{old_file}' to '#{new_file}'"
28
+ FileUtils.move(old_file, new_file)
29
+ end
30
+
31
+ def upgrade(path)
32
+ Dir.entries(path).each do |file|
33
+ rename_index(path, file) if file =~ /(-exact)|(-fulltext)$/
34
+ end
35
+ end
36
+
37
+ root = ARGV[0]
38
+ error("Can't find database at location #{root}") unless File.exist?(root)
39
+ error("Expected location #{root} to be a folder") unless File.directory?(root)
40
+
41
+ # Upgrade
42
+ puts "upgrade database to Neo4j.rb version #{Neo4j::VERSION}, this might take a while ...."
43
+ Neo4j::Config[:storage_path] = root
44
+ Neo4j::Config[:allow_store_upgrade] = 'true'
45
+ Neo4j.start
46
+ puts "Neo4j database at #{root} upgraded to #{Neo4j::VERSION}, now shutdown"
47
+ Neo4j.shutdown
48
+ puts "Rename lucene index files"
49
+
50
+ nodes_path = File.join(root, "index", "lucene", "node")
51
+ if File.exist?(nodes_path)
52
+ upgrade(nodes_path)
53
+ else
54
+ puts("Can't find lucene index at location #{nodes_path}")
55
+ end
56
+
57
+
58
+ nodes_path = File.join(root, "index", "lucene", "node")
59
+ if File.exist?(nodes_path)
60
+ upgrade(nodes_path)
61
+ else
62
+ puts("No lucene index for nodes found at location #{nodes_path}, continue")
63
+ end
64
+
65
+ nodes_path = File.join(root, "index", "lucene", "relationship")
66
+ if File.exist?(nodes_path)
67
+ upgrade(nodes_path)
68
+ else
69
+ puts("No lucene index for relationship found at location #{nodes_path}")
70
+ end
71
+
72
+ puts "Upgraded database done at '#{root}'"
@@ -20,43 +20,42 @@ require 'neo4j/core_ext/class/inheritable_attributes'
20
20
 
21
21
  require 'neo4j/jars/core/geronimo-jta_1.1_spec-1.1.1.jar'
22
22
  require 'neo4j/jars/core/lucene-core-3.1.0.jar'
23
- require 'neo4j/jars/core/neo4j-lucene-index-1.4.1.jar'
24
- require 'neo4j/jars/core/neo4j-kernel-1.4.1.jar'
25
- require 'neo4j/jars/ha/neo4j-management-1.4.1.jar'
26
- require 'neo4j/jars/ha/neo4j-jmx-1.4.1.jar'
23
+ require 'neo4j/jars/core/neo4j-cypher-1.5.jar'
24
+ require 'neo4j/jars/core/neo4j-kernel-1.5.jar'
25
+ require 'neo4j/jars/core/neo4j-lucene-index-1.5.jar'
26
+ require 'neo4j/jars/core/neo4j-jmx-1.5.jar'
27
+ require 'neo4j/jars/core/neo4j-udc-1.5.jar'
28
+ require 'neo4j/jars/core/org.apache.servicemix.bundles.jline-0.9.94_1.jar'
29
+ require 'neo4j/jars/core/scala-library-2.9.0-1.jar'
30
+ require 'neo4j/jars/core/server-api-1.5.jar'
31
+ require 'neo4j/jars/ha/neo4j-management-1.5.jar'
27
32
 
28
33
  module Neo4j
29
34
 
30
35
  def self.load_local_jars
31
- # This is a temporary fix since the HA does not yet work with this JAR
32
- # It will be solved in a future version of the Java Neo4j library.
33
36
  if Neo4j.config[:online_backup_enabled]
34
37
  Neo4j.load_online_backup
35
- else
36
- # backup and HA does not work with this JAR FILE
37
- require 'neo4j/jars/core/neo4j-index-1.3-1.3.M01.jar'
38
38
  end
39
39
  end
40
40
 
41
41
  def self.load_shell_jars
42
- require 'neo4j/jars/ha/neo4j-shell-1.4.1.jar'
42
+ require 'neo4j/jars/core/neo4j-shell-1.5.jar'
43
43
  end
44
44
 
45
45
  def self.load_online_backup
46
- require 'neo4j/jars/ha/neo4j-com-1.4.1.jar'
47
- require 'neo4j/jars/core/neo4j-backup-1.4.1.jar'
48
- require 'neo4j/jars/ha/netty-3.2.1.Final.jar'
46
+ require 'neo4j/jars/ha/neo4j-com-1.5.jar'
47
+ require 'neo4j/jars/ha/neo4j-backup-1.5.jar'
48
+ require 'neo4j/jars/ha/org.apache.servicemix.bundles.netty-3.2.5.Final_1.jar'
49
49
  Neo4j.send(:const_set, :OnlineBackup, org.neo4j.backup.OnlineBackup)
50
50
  end
51
51
 
52
52
  def self.load_ha_jars
53
- require 'neo4j/jars/core/neo4j-backup-1.4.1.jar'
53
+ require 'neo4j/jars/ha/neo4j-backup-1.5.jar'
54
+ require 'neo4j/jars/ha/neo4j-com-1.5.jar'
55
+ require 'neo4j/jars/ha/neo4j-ha-1.5.jar'
54
56
  require 'neo4j/jars/ha/log4j-1.2.16.jar'
55
- require 'neo4j/jars/ha/neo4j-ha-1.4.1.jar'
56
- require 'neo4j/jars/ha/neo4j-com-1.4.1.jar'
57
- require 'neo4j/jars/ha/netty-3.2.1.Final.jar'
58
- require 'neo4j/jars/ha/org.apache.servicemix.bundles.jline-0.9.94_1.jar'
59
- # require 'neo4j/jars/ha/org.apache.servicemix.bundles.lucene-3.0.1_2.jar' # TODO IS THIS NEEDED ?
57
+ require 'neo4j/jars/ha/org.apache.servicemix.bundles.netty-3.2.5.Final_1.jar'
58
+ require 'neo4j/jars/ha/slf4j-api-1.6.1.jar'
60
59
  require 'neo4j/jars/ha/zookeeper-3.3.2.jar'
61
60
  end
62
61
  end
@@ -1,6 +1,7 @@
1
1
  # external neo4j dependencies
2
2
  require 'neo4j/to_java'
3
- require 'neo4j/jars/core/neo4j-graph-algo-1.4.1.jar'
3
+ require 'neo4j/jars/core/neo4j-graph-algo-1.5.jar'
4
+ require 'neo4j/jars/core/neo4j-graph-matching-1.5.jar'
4
5
 
5
6
  module Neo4j
6
7
 
@@ -13,6 +13,8 @@ module Neo4j
13
13
  class Database
14
14
  attr_reader :graph, :lucene, :event_handler, :storage_path
15
15
 
16
+ alias_method :index, :lucene # needed by cypher
17
+
16
18
  def initialize()
17
19
  @event_handler = EventHandler.new
18
20
  end
@@ -62,6 +64,16 @@ module Neo4j
62
64
  @event_handler.neo4j_started(self)
63
65
  end
64
66
 
67
+ # needed by cypher
68
+ def getNodeById(id) #:nodoc:
69
+ Neo4j::Node.load(id)
70
+ end
71
+
72
+ # needed by cypher
73
+ def getRelationshipById(id) #:nodoc:
74
+ Neo4j::Relationship.load(id)
75
+ end
76
+
65
77
  def start_ha_graph_db
66
78
  Neo4j.logger.info "starting Neo4j in HA mode, machine id: #{Neo4j.config['ha.machine_id']} at #{Neo4j.config['ha.server']} db #{@storage_path}"
67
79
  Neo4j.load_ha_jars # those jars are only needed for the HighlyAvailableGraphDatabase
@@ -71,6 +71,9 @@ module Neo4j
71
71
  # * <tt>old_value</tt> :: old value of the property
72
72
  # * <tt>new_value</tt> :: new value of the property
73
73
  #
74
+ # ==== classes_changed(class_change_map)
75
+ # * <tt>class_change_map</tt> :: a hash with class names as keys, and class changes as values. See Neo4j::ClassChanges
76
+ #
74
77
  # == Usage
75
78
  #
76
79
  # class MyListener
@@ -99,25 +102,37 @@ module Neo4j
99
102
  end
100
103
 
101
104
  def before_commit(data)
102
- created_node_identity_map = node_identity_map(data.created_nodes)
103
- deleted_node_identity_map = node_identity_map(data.deleted_nodes)
105
+ class_change_map = java.util.HashMap.new
106
+ created_node_identity_map = iterate_created_nodes(data.created_nodes, class_change_map)
107
+ deleted_node_identity_map = deleted_node_identity_map(data.deleted_nodes)
104
108
  deleted_relationship_set = relationship_set(data.deleted_relationships)
105
109
  removed_node_properties_map = property_map(data.removed_node_properties)
106
110
  removed_relationship_properties_map = property_map(data.removed_relationship_properties)
111
+ add_deleted_nodes(data, class_change_map, removed_node_properties_map)
107
112
  empty_map = java.util.HashMap.new
108
- data.created_nodes.each{|node| node_created(node)}
109
- data.assigned_node_properties.each { |tx_data| property_changed(tx_data.entity, tx_data.key, tx_data.previously_commited_value, tx_data.value) }
113
+ data.assigned_node_properties.each { |tx_data| property_changed(tx_data.entity, tx_data.key, tx_data.previously_commited_value, tx_data.value) unless tx_data.key == '_classname'}
110
114
  data.removed_node_properties.each { |tx_data| property_changed(tx_data.entity, tx_data.key, tx_data.previously_commited_value, nil) unless deleted_node_identity_map.containsKey(tx_data.entity.getId) }
111
115
  data.deleted_nodes.each { |node| node_deleted(node, removed_node_properties_map.get(node.getId)||empty_map, deleted_relationship_set, deleted_node_identity_map)}
112
116
  data.created_relationships.each {|rel| relationship_created(rel, created_node_identity_map)}
113
117
  data.deleted_relationships.each {|rel| relationship_deleted(rel, removed_relationship_properties_map.get(rel.getId)||empty_map, deleted_relationship_set, deleted_node_identity_map)}
114
118
  data.assigned_relationship_properties.each { |tx_data| rel_property_changed(tx_data.entity, tx_data.key, tx_data.previously_commited_value, tx_data.value) }
115
119
  data.removed_relationship_properties.each {|tx_data| rel_property_changed(tx_data.entity, tx_data.key, tx_data.previously_commited_value, nil) unless deleted_relationship_set.contains_rel?(tx_data.entity) }
120
+ classes_changed(class_change_map)
116
121
  end
117
122
 
118
- def node_identity_map(nodes)
123
+ def iterate_created_nodes(nodes, class_change_map)
119
124
  identity_map = java.util.HashMap.new(nodes.size)
120
- nodes.each{|node| identity_map.put(node.neo_id,node)}#using put due to a performance regression in JRuby 1.6.4
125
+ nodes.each do |node|
126
+ identity_map.put(node.neo_id,node) #using put due to a performance regression in JRuby 1.6.4
127
+ instance_created(node, class_change_map)
128
+ node_created(node)
129
+ end
130
+ identity_map
131
+ end
132
+
133
+ def deleted_node_identity_map(nodes)
134
+ identity_map = java.util.HashMap.new(nodes.size)
135
+ nodes.each{|node| identity_map.put(node.neo_id,node)} #using put due to a performance regression in JRuby 1.6.4
121
136
  identity_map
122
137
  end
123
138
 
@@ -192,5 +207,52 @@ module Neo4j
192
207
  def rel_property_changed(rel, key, old_value, new_value)
193
208
  @listeners.each {|li| li.on_rel_property_changed(rel, key, old_value, new_value) if li.respond_to?(:on_rel_property_changed)}
194
209
  end
210
+
211
+ def add_deleted_nodes(data, class_change_map, removed_node_properties_map)
212
+ data.deleted_nodes.each{|node| instance_deleted(node, removed_node_properties_map, class_change_map)}
213
+ end
214
+
215
+ def instance_created(node, class_change_map)
216
+ classname = node[:_classname]
217
+ class_change(classname, class_change_map).add(node) if classname
218
+ end
219
+
220
+ def instance_deleted(node, removed_node_properties_map, class_change_map)
221
+ properties = removed_node_properties_map.get(node.getId)
222
+ if properties
223
+ classname = properties.get("_classname")
224
+ class_change(classname, class_change_map).delete(node) if classname
225
+ end
226
+ end
227
+
228
+ def class_change(classname, class_change_map)
229
+ class_change_map.put(classname, ClassChanges.new) if class_change_map.get(classname).nil?
230
+ class_change_map.get(classname)
231
+ end
232
+
233
+ def classes_changed(changed_class_map)
234
+ @listeners.each {|li| li.classes_changed(changed_class_map) if li.respond_to?(:classes_changed)}
235
+ end
236
+ end
237
+
238
+ class ClassChanges
239
+ attr_accessor :added, :deleted
240
+
241
+ def initialize
242
+ self.added = []
243
+ self.deleted = []
244
+ end
245
+
246
+ def add(node)
247
+ self.added << node
248
+ end
249
+
250
+ def delete(node)
251
+ self.deleted << node
252
+ end
253
+
254
+ def net_change
255
+ self.added.size - self.deleted.size
256
+ end
195
257
  end
196
- end
258
+ end
@@ -3,7 +3,7 @@ module Neo4j::HasList
3
3
  def has_list(name, params = {})
4
4
  module_eval(%Q{
5
5
  def #{name}
6
- Neo4j::HasList::Mapping.new(self, '#{name}')
6
+ Neo4j::HasList::Mapping.new(self.class, self, '#{name}')
7
7
  end}, __FILE__, __LINE__)
8
8
  end
9
9
  end
@@ -35,10 +35,11 @@ module Neo4j
35
35
  include Enumerable
36
36
  include ToJava
37
37
  include WillPaginate::Finders::Base
38
-
39
38
 
40
- def initialize(node, name)
41
- @time_line = org.neo4j.index.timeline.Timeline.new(name, node._java_node, true, Neo4j.started_db.graph)
39
+
40
+ def initialize(indexer_for, node, name)
41
+ @index = Neo4j.started_db.lucene.for_nodes("#{indexer_for.to_s.gsub('::', '_')}_#{name}-timeline", Neo4j::Config[:lucene][:exact])
42
+ @time_line = org.neo4j.index.lucene.LuceneTimeline.new(Neo4j.started_db.graph, @index)
42
43
  @node = node
43
44
  @name = name
44
45
  self.size = 0 unless size
@@ -57,38 +58,38 @@ module Neo4j
57
58
 
58
59
  # returns the first node with index n
59
60
  def [](n)
60
- @time_line.getAllNodesBetween(n-1, n+1).first
61
+ @time_line.getBetween(n, n).first
61
62
  end
62
63
 
63
64
  # returns all nodes with the given index n
64
65
  def all(n)
65
- @time_line.getAllNodesBetween(n-1, n+1)
66
+ @time_line.getBetween(n, n)
66
67
  end
67
68
 
68
69
  # returns the first node in the list or nil
69
70
  def first
70
- @time_line.first_node
71
+ @time_line.getFirst()
71
72
  end
72
73
 
73
74
  # returns the last node in the list or nil
74
75
  def last
75
- @time_line.last_node
76
+ @time_line.getLast
76
77
  end
77
78
 
78
79
  # adds a node to the list with the given index n
79
80
  def []=(n, other_node)
80
- @time_line.add_node(other_node, n)
81
+ @time_line.add(other_node, n)
81
82
  self.size = self.size + 1
82
83
  end
83
84
 
84
85
  # returns all the nodes between the given Range
85
86
  def between(range)
86
- @time_line.getAllNodesBetween(range.first-1, range.end+1)
87
+ @time_line.getBetween(range.first, range.end)
87
88
  end
88
89
 
89
90
  # removes one node from the list and decrases the size of the list,
90
91
  def remove(node)
91
- @time_line.remove_node(node)
92
+ @index.remove(node, "timestamp")
92
93
  self.size = self.size - 1
93
94
  end
94
95
 
@@ -104,7 +105,7 @@ module Neo4j
104
105
  # person.feeds.each {|node| node}
105
106
  #
106
107
  def each
107
- @time_line.all_nodes.iterator.each do |node|
108
+ @time_line.getBetween(java.lang.Long::MIN_VALUE,java.lang.Long::MAX_VALUE).iterator.each do |node|
108
109
  if @raw then
109
110
  yield node
110
111
  else
@@ -135,19 +136,15 @@ module Neo4j
135
136
  end
136
137
 
137
138
  def <<(other)
138
- @time_line.add_node(other, size)
139
+ @time_line.add(other._java_node, size)
139
140
  self.size = self.size + 1
140
141
  self
141
142
  end
142
143
 
143
-
144
144
  private
145
145
  def size=(size)
146
146
  @node["_list_size_#{@name}"] = size
147
147
  end
148
-
149
-
150
148
  end
151
-
152
149
  end
153
150
  end
@@ -53,13 +53,19 @@ module Neo4j
53
53
  #
54
54
  # Person.index_names[:fulltext] => 'my_location'
55
55
  # Person.index_names[:exact] => 'Foo_Person-exact' # default Location
56
- # Notice in versions <= 1.0.0.beta.29 the default location was 'Foo::Person-exact'
57
- # which does not work on Windows [lighthouse ticket #147]
56
+ #
57
+ # The index can be prefixed, see Neo4j#threadlocal_ref_node= and multi dendency.
58
58
  #
59
59
  # :singleton-method: index_names
60
60
 
61
61
 
62
- def_delegators :@_indexer, :index, :find, :index?, :index_type?, :delete_index_type, :rm_field_type, :add_index, :rm_index, :index_type_for, :index_names
62
+ ##
63
+ # Returns a hash of which indexes has been defined and the type of index (:exact or :fulltext)
64
+ #
65
+ # :singleton-method: index_types
66
+
67
+
68
+ def_delegators :@_indexer, :index, :find, :index?, :index_type?, :delete_index_type, :rm_field_type, :add_index, :rm_index, :index_type_for, :index_names, :index_types
63
69
 
64
70
  # Sets which indexer should be used for the given node class.
65
71
  # You can share an indexer between several different classes.