pacer-neo4j 2.1.2-java → 2.1.4-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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7190dda6385c119ecea1c959a2778eebf00da79c
4
+ data.tar.gz: 93c2c9f4ebe74afa68cfaa98ed3e00ed5a7ea123
5
+ SHA512:
6
+ metadata.gz: a0849277cbe979a44d5a8e17ca7c00b0e928042059b1a21a116e2232de98749b3d96727be379b2cf56355ed0d94a26ca5f8328074a4a6dff867169b78a33ed90
7
+ data.tar.gz: 07db1630318fa5320ec0e241d40f84b83d69f1680134a253d572868eebc01a7a14563973e4f561f8be7f562340ec8bc743b7885634c86f9bcb53c7b1b717c675
@@ -2,22 +2,16 @@ module Pacer
2
2
  module Neo4j
3
3
  class BlueprintsGraph < com.tinkerpop.blueprints.impls.neo4j.Neo4jGraph
4
4
  attr_accessor :allow_auto_tx
5
- attr_reader :tx_depth
6
5
 
7
- def initialize(*args)
8
- super
9
- @tx_depth = 0
10
- end
11
-
12
- def transaction
13
- @tx_depth += 1
14
- yield
15
- ensure
16
- @tx_depth -= 1
6
+ # Threadlocal tx_depth is set in Pacer's graph_transaction_mixin.rb
7
+ def tx_depth
8
+ graphs = Thread.current[:graphs] ||= {}
9
+ tgi = graphs[object_id] ||= {}
10
+ tgi[:tx_depth] || 0
17
11
  end
18
12
 
19
13
  def autoStartTransaction
20
- if tx_depth != 0 or allow_auto_tx
14
+ if allow_auto_tx or tx_depth != 0
21
15
  super
22
16
  else
23
17
  raise Pacer::TransactionError, "Can't mutate the graph outside a transaction block"
@@ -1,3 +1,5 @@
1
+ require 'set'
2
+
1
3
  module Pacer
2
4
  module Neo4j
3
5
  class Graph < PacerGraph
@@ -23,12 +25,6 @@ module Pacer
23
25
  blueprints_graph.allow_auto_tx
24
26
  end
25
27
 
26
- def transaction(*args, &block)
27
- blueprints_graph.transaction do
28
- super
29
- end
30
- end
31
-
32
28
  def cypher(query)
33
29
  [query].to_route(element_type: :string, graph: self).cypher
34
30
  end
@@ -42,6 +38,48 @@ module Pacer
42
38
  end
43
39
  end
44
40
 
41
+ # When a Neo4J graph is restarted, the ids of any elements that were deleted
42
+ # will be reused. Running this code immediately after starting the graph
43
+ # prevents Neo4J from reusing those IDs.
44
+ def prevent_id_reuse!
45
+ {
46
+ edges: prevent_edge_id_reuse!,
47
+ vertices: prevent_vertex_id_reuse!
48
+ }
49
+ end
50
+
51
+ # This works by simply creating IDs until the ID of a new element is greater than
52
+ # either the max existing ID, or the min_new_id argument.
53
+ def prevent_vertex_id_reuse!(min_new_id = nil)
54
+ min_new_id ||= v.element_ids.max
55
+ g = blueprints_graph
56
+ n = 0
57
+ transaction do |_, rollback|
58
+ begin
59
+ n += 1
60
+ v = g.addVertex(nil)
61
+ end while v.getId < min_new_id
62
+ rollback.call
63
+ end
64
+ n
65
+ end
66
+
67
+ def prevent_edge_id_reuse!(min_new_id = nil)
68
+ min_new_id ||= e.element_ids.max
69
+ g = blueprints_graph
70
+ n = 0
71
+ transaction do |_, rollback|
72
+ v1 = g.addVertex nil
73
+ v2 = g.addVertex nil
74
+ begin
75
+ n += 1
76
+ e = g.addEdge(nil, v1, v2, "temp")
77
+ end while e.getId < min_new_id
78
+ rollback.call
79
+ end
80
+ n
81
+ end
82
+
45
83
  def neo_graph
46
84
  blueprints_graph.raw_graph
47
85
  end
@@ -86,22 +124,38 @@ module Pacer
86
124
  filters.properties.select { |k, v| key_indices(type).include?(k) and not v.nil? }
87
125
  end
88
126
 
127
+ def lucene_set(k, v)
128
+ statements = v.map { |x| "#{k}:#{lucene_value(x)}" }
129
+ "(#{ statements.join(' OR ') })"
130
+ end
131
+
132
+ def lucene_range(k, v)
133
+ if v.min and v.max
134
+ encoded = encode_property(v.min)
135
+ if encoded.is_a? JDate
136
+ "#{k}:[#{lucene_value v.min} TO #{lucene_value v.max}]"
137
+ else
138
+ "#{k}:[#{lucene_value v.min} TO #{lucene_value v.max}]"
139
+ end
140
+ end
141
+ end
142
+
89
143
  def build_query(type, filters)
90
144
  indexed = index_properties type, filters
91
145
  if indexed.any?
92
146
  indexed.map do |k, v|
93
147
  k = k.to_s.gsub '/', '\\/'
94
148
  if v.is_a? Range
95
- encoded = encode_property(v.min)
96
- if encoded.is_a? JDate
97
- "#{k}:[#{lucene_value v.min} TO #{lucene_value v.max}]"
98
- else
99
- "#{k}:{#{lucene_value v.min} TO #{lucene_value v.max}}"
100
- end
149
+ lucene_range(k, v)
150
+ elsif v.class.name == 'RangeSet'
151
+ s = v.ranges.map { |r| lucene_range(k, r) }.join " OR "
152
+ "(#{s})"
153
+ elsif v.is_a? Set
154
+ lucene_set(k, v)
101
155
  else
102
156
  "#{k}:#{lucene_value v}"
103
157
  end
104
- end.join " AND "
158
+ end.compact.join " AND "
105
159
  else
106
160
  nil
107
161
  end
@@ -113,7 +167,7 @@ module Pacer
113
167
  f = SimpleDateFormat.new 'yyyyMMddHHmmssSSS'
114
168
  f.format s
115
169
  elsif s
116
- if s.is_a? String and s =~ /[\t :"']/
170
+ if s.is_a? String
117
171
  s.inspect
118
172
  else s
119
173
  s
@@ -93,7 +93,8 @@ module Pacer
93
93
  deleted_v: deleted_v_ids,
94
94
  created_e: created_e_ids,
95
95
  deleted_e: deleted_e_ids,
96
- changes: changes }
96
+ changed_v: changed_v,
97
+ changed_e: changed_e }
97
98
  end
98
99
  end
99
100
  end
@@ -1,10 +1,10 @@
1
1
  module Pacer
2
2
  module Neo4j
3
- VERSION = "2.1.2"
3
+ VERSION = "2.1.4"
4
4
  JAR = "pacer-neo4j-#{ VERSION }-standalone.jar"
5
5
  JAR_PATH = "lib/#{ JAR }"
6
- BLUEPRINTS_VERSION = "2.1.0"
7
- PIPES_VERSION = "2.1.0"
6
+ BLUEPRINTS_VERSION = "2.3.0"
7
+ PIPES_VERSION = "2.3.0"
8
8
  PACER_REQ = ">= 1.1.2"
9
9
  end
10
10
  end
data/pom.xml CHANGED
@@ -7,9 +7,9 @@
7
7
  <artifactId>pacer-neo4j</artifactId>
8
8
  <!-- NOTE: the following properties are automatically updated based on the values in lib/pacer-neo4j/version.rb -->
9
9
  <properties>
10
- <blueprints.version>2.1.0</blueprints.version>
11
- <gem.version>2.1.2</gem.version>
12
- <pipes.version>2.1.0</pipes.version>
10
+ <blueprints.version>2.3.0</blueprints.version>
11
+ <gem.version>2.1.4</gem.version>
12
+ <pipes.version>2.3.0</pipes.version>
13
13
  </properties>
14
14
  <!-- NOTE: the following properties are automatically updated based on the values in lib/pacer-neo4j/version.rb -->
15
15
  <version>${gem.version}</version>
@@ -32,11 +32,13 @@
32
32
  <artifactId>blueprints-neo4j-graph</artifactId>
33
33
  <version>${blueprints.version}</version>
34
34
  </dependency>
35
+ <!--
35
36
  <dependency>
36
37
  <groupId>com.tinkerpop.blueprints</groupId>
37
38
  <artifactId>blueprints-neo4jbatch-graph</artifactId>
38
39
  <version>${blueprints.version}</version>
39
40
  </dependency>
41
+ -->
40
42
  </dependencies>
41
43
 
42
44
  <repositories>
metadata CHANGED
@@ -1,30 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pacer-neo4j
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 2.1.2
4
+ version: 2.1.4
6
5
  platform: java
7
6
  authors:
8
7
  - Darrick Wiebe
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-02-04 00:00:00.000000000 Z
11
+ date: 2013-07-04 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: pacer
16
15
  version_requirements: !ruby/object:Gem::Requirement
17
16
  requirements:
18
- - - ! '>='
17
+ - - '>='
19
18
  - !ruby/object:Gem::Version
20
19
  version: 1.1.2
21
- none: false
22
20
  requirement: !ruby/object:Gem::Requirement
23
21
  requirements:
24
- - - ! '>='
22
+ - - '>='
25
23
  - !ruby/object:Gem::Version
26
24
  version: 1.1.2
27
- none: false
28
25
  prerelease: false
29
26
  type: :runtime
30
27
  description: Neo4J jars and related code for Pacer
@@ -59,32 +56,29 @@ files:
59
56
  - pacer-neo4j.gemspec
60
57
  - pom.xml
61
58
  - pom/standalone.xml
62
- - lib/pacer-neo4j-2.1.2-standalone.jar
59
+ - lib/pacer-neo4j-2.1.4-standalone.jar
63
60
  homepage: http://neo4j.org
64
61
  licenses: []
62
+ metadata: {}
65
63
  post_install_message:
66
64
  rdoc_options: []
67
65
  require_paths:
68
66
  - lib
69
67
  required_ruby_version: !ruby/object:Gem::Requirement
70
68
  requirements:
71
- - - ! '>='
69
+ - - '>='
72
70
  - !ruby/object:Gem::Version
73
- version: !binary |-
74
- MA==
75
- none: false
71
+ version: '0'
76
72
  required_rubygems_version: !ruby/object:Gem::Requirement
77
73
  requirements:
78
- - - ! '>='
74
+ - - '>='
79
75
  - !ruby/object:Gem::Version
80
- version: !binary |-
81
- MA==
82
- none: false
76
+ version: '0'
83
77
  requirements: []
84
78
  rubyforge_project: pacer-neo4j
85
- rubygems_version: 1.8.24
79
+ rubygems_version: 2.0.3
86
80
  signing_key:
87
- specification_version: 3
81
+ specification_version: 4
88
82
  summary: Neo4J jars and related code for Pacer
89
83
  test_files: []
90
84
  has_rdoc: