neo4j 1.2.6-java → 1.3.0-java

Sign up to get free protection for your applications and to get access to all the features.
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.