pacer-orient 2.1.2-java → 2.2.0.pre-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 +4 -4
- data/lib/pacer-orient/factory_container.rb +67 -5
- data/lib/pacer-orient/graph.rb +83 -44
- data/lib/pacer-orient/orient_type.rb +3 -9
- data/lib/pacer-orient/property.rb +1 -3
- data/lib/pacer-orient/sql_filter.rb +20 -1
- data/lib/pacer-orient/version.rb +3 -3
- data/lib/{pacer-orient-2.1.2-standalone.jar → pacer-orient-2.2.0.pre-standalone.jar} +0 -0
- data/lib/pacer-orient.rb +32 -40
- data/pom.xml +3 -3
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9b32edc920ee17066a25d9d17ae4797e4879e52d
|
4
|
+
data.tar.gz: e0122dc83de2028ec05812adb6455d47668bd6e2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a36668673a20c99d81a62b97285e80806bb9bf5c2dd956335fb6108a85e81967fe41af13f0864d262f1e292070848e47ea0cc200c232f903849dc096d9511fb7
|
7
|
+
data.tar.gz: 7e321c5921a437089c14fe4f78154f566e1cf39e5b96002ca50f03b200983ac96910795a36e307d1529db74af72ec8cbe73bfa5b59adfff4d7aa7ab5fd343eb4
|
@@ -1,26 +1,88 @@
|
|
1
1
|
module Pacer::Orient
|
2
2
|
class FactoryContainer
|
3
|
-
attr_reader :factory
|
3
|
+
attr_reader :factory, :url, :use_pool
|
4
|
+
attr_accessor :encoder, :transactional, :lightweight_edges, :edge_classes, :vertex_classes
|
4
5
|
|
5
|
-
def initialize(f)
|
6
|
+
def initialize(f, url, args)
|
6
7
|
@factory = f
|
8
|
+
@url = url
|
9
|
+
Pacer.open_graphs[url] = self
|
10
|
+
if args
|
11
|
+
@transactional = args[:transactional]
|
12
|
+
@lightweight_edges = args[:lightweight_edges]
|
13
|
+
@edge_classes = args[:edge_classes]
|
14
|
+
@vertex_classes = args[:vertex_classes]
|
15
|
+
self.stay_open = args[:stay_open]
|
16
|
+
@encoder = args.fetch :encoder, Encoder
|
17
|
+
min = args[:pool_min]
|
18
|
+
max = args[:pool_max]
|
19
|
+
if min and max
|
20
|
+
setupPool min, max
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def setupPool(min, max)
|
26
|
+
@use_pool = true
|
27
|
+
factory.setupPool min, max
|
28
|
+
end
|
29
|
+
|
30
|
+
def stay_open=(b)
|
31
|
+
#factory.setLeaveGraphsOpen b
|
32
|
+
end
|
33
|
+
|
34
|
+
def stay_open
|
35
|
+
#factory.getLeaveGraphsOpen
|
36
|
+
end
|
37
|
+
|
38
|
+
def graph
|
39
|
+
# Shutdown releases the graph to the pool in this case.
|
40
|
+
g = Graph.new encoder, proc { get }, proc { |g| g.blueprints_graph.shutdown }
|
41
|
+
if block_given?
|
42
|
+
r = yield g
|
43
|
+
g.shutdown if use_pool
|
44
|
+
r
|
45
|
+
else
|
46
|
+
g
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def surrender(g)
|
51
|
+
g.shutdown if use_pool
|
7
52
|
end
|
8
53
|
|
9
54
|
def get
|
10
|
-
|
55
|
+
if transactional == false
|
56
|
+
getNoTx
|
57
|
+
else
|
58
|
+
getTx
|
59
|
+
end
|
11
60
|
end
|
12
61
|
|
13
62
|
def getTx
|
14
|
-
factory.getTx
|
63
|
+
configure factory.getTx
|
15
64
|
end
|
16
65
|
|
17
66
|
def getNoTx
|
18
|
-
factory.getNoTx
|
67
|
+
configure factory.getNoTx
|
19
68
|
end
|
20
69
|
|
21
70
|
# Pacer calls shutdown on all cached graphs when it exits. Orient caches this factory.
|
22
71
|
def shutdown
|
23
72
|
factory.close
|
73
|
+
Pacer.open_graphs.delete url
|
74
|
+
end
|
75
|
+
|
76
|
+
private
|
77
|
+
|
78
|
+
def configure(bg)
|
79
|
+
bg.setAutoStartTx false
|
80
|
+
bg.setRequireTransaction true
|
81
|
+
bg.rollback # a transaction is auto-started when the graph is opened.
|
82
|
+
bg.setUseLightweightEdges lightweight_edges if lightweight_edges == false
|
83
|
+
bg.setUseClassForEdgeLabel edge_classes if edge_classes == false
|
84
|
+
bg.setUseClassForVertexLabel vertex_classes if vertex_classes == false
|
85
|
+
bg
|
24
86
|
end
|
25
87
|
end
|
26
88
|
end
|
data/lib/pacer-orient/graph.rb
CHANGED
@@ -13,10 +13,12 @@ module Pacer
|
|
13
13
|
import com.orientechnologies.orient.core.sql.OCommandSQL
|
14
14
|
import com.orientechnologies.orient.core.metadata.schema.OType
|
15
15
|
import com.orientechnologies.orient.core.metadata.schema.OClass
|
16
|
+
import com.orientechnologies.orient.core.db.ODatabaseRecordThreadLocal
|
16
17
|
|
17
18
|
# Marked the types that should be most commonly used.
|
18
19
|
OTYPES = {
|
19
20
|
:any => OType::ANY,
|
21
|
+
:all => OType::ANY,
|
20
22
|
:boolean => OType::BOOLEAN, # use this one
|
21
23
|
:bool => OType::BOOLEAN,
|
22
24
|
:short => OType::SHORT,
|
@@ -26,10 +28,7 @@ module Pacer
|
|
26
28
|
:float => OType::FLOAT,
|
27
29
|
:double => OType::DOUBLE, # use this one
|
28
30
|
:decimal => OType::DECIMAL, # use this one
|
29
|
-
|
30
|
-
#:date => OType::BINARY,
|
31
|
-
#:datetime => OType::BINARY,
|
32
|
-
#:date_time => OType::BINARY,
|
31
|
+
#HINT: If using the BinaryDateEncoder, use :binary instead of the :date or :datetime types.
|
33
32
|
:date => OType::DATE, # use this one
|
34
33
|
:datetime => OType::DATETIME, # use this one
|
35
34
|
:date_time => OType::DATETIME,
|
@@ -83,15 +82,16 @@ module Pacer
|
|
83
82
|
}
|
84
83
|
|
85
84
|
def orient_graph
|
86
|
-
blueprints_graph.
|
85
|
+
blueprints_graph.getRawGraph
|
87
86
|
end
|
88
87
|
|
89
88
|
def allow_auto_tx=(b)
|
89
|
+
blueprints_graph.setRequireTransaction !b
|
90
90
|
blueprints_graph.setAutoStartTx b
|
91
91
|
end
|
92
92
|
|
93
93
|
def allow_auto_tx
|
94
|
-
blueprints_graph.
|
94
|
+
blueprints_graph.isAutoStartTx or not blueprints_graph.isRequireTransaction
|
95
95
|
end
|
96
96
|
|
97
97
|
def on_commit(&block)
|
@@ -175,14 +175,12 @@ module Pacer
|
|
175
175
|
if r
|
176
176
|
r
|
177
177
|
else
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
OrientType.new self, element_type, t if t
|
185
|
-
end
|
178
|
+
t = if element_type == :vertex
|
179
|
+
blueprints_graph.createVertexType(t.to_s)
|
180
|
+
elsif element_type == :edge
|
181
|
+
blueprints_graph.createEdgeType(t.to_s)
|
182
|
+
end
|
183
|
+
OrientType.new self, element_type, t if t
|
186
184
|
end
|
187
185
|
end
|
188
186
|
|
@@ -218,48 +216,59 @@ module Pacer
|
|
218
216
|
end
|
219
217
|
|
220
218
|
def add_vertex_types(*types)
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
OrientType.new(self, :vertex, t) if t
|
229
|
-
end
|
219
|
+
types.map do |t|
|
220
|
+
existing = orient_type(t, :vertex)
|
221
|
+
if existing
|
222
|
+
existing
|
223
|
+
else
|
224
|
+
t = blueprints_graph.createVertexType(t.to_s)
|
225
|
+
OrientType.new(self, :vertex, t) if t
|
230
226
|
end
|
231
227
|
end
|
232
228
|
end
|
233
229
|
|
234
|
-
def
|
235
|
-
|
236
|
-
type.property!(name).create_index!(itype) if type
|
230
|
+
def in_transaction?
|
231
|
+
orient_graph.getTransaction.isActive
|
237
232
|
end
|
238
233
|
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
end
|
244
|
-
|
245
|
-
private
|
246
|
-
|
247
|
-
def in_pure_transaction
|
248
|
-
if @in_pure_transaction
|
234
|
+
# Enables using multiple graphs at once.
|
235
|
+
def thread_local(revert = false)
|
236
|
+
orig = ODatabaseRecordThreadLocal.INSTANCE.getIfDefined
|
237
|
+
if orig == orient_graph
|
249
238
|
yield
|
250
239
|
else
|
251
240
|
begin
|
252
|
-
|
253
|
-
|
254
|
-
orient_graph.rollback
|
255
|
-
yield
|
256
|
-
end
|
241
|
+
ODatabaseRecordThreadLocal.INSTANCE.set orient_graph
|
242
|
+
yield
|
257
243
|
ensure
|
258
|
-
|
244
|
+
ODatabaseRecordThreadLocal.INSTANCE.set orig if revert
|
259
245
|
end
|
260
246
|
end
|
261
247
|
end
|
262
248
|
|
249
|
+
def transaction(opts = {})
|
250
|
+
thread_local do
|
251
|
+
if opts[:schema]
|
252
|
+
begin
|
253
|
+
if in_transaction?
|
254
|
+
in_tx = true
|
255
|
+
blueprints_graph.commit
|
256
|
+
end
|
257
|
+
c, r = nested_tx_finalizers
|
258
|
+
yield c, r
|
259
|
+
ensure
|
260
|
+
blueprints_graph.begin if in_tx
|
261
|
+
end
|
262
|
+
else
|
263
|
+
super
|
264
|
+
end
|
265
|
+
end
|
266
|
+
end
|
267
|
+
|
268
|
+
alias tx transaction
|
269
|
+
|
270
|
+
private
|
271
|
+
|
263
272
|
def sql_range(k, v, params)
|
264
273
|
params.push v.min
|
265
274
|
params.push v.last
|
@@ -271,9 +280,10 @@ module Pacer
|
|
271
280
|
filters.properties.select do |k, v|
|
272
281
|
if v
|
273
282
|
p = orient_type.property k
|
274
|
-
if p and p.indexed?
|
283
|
+
if (p and p.indexed?) or key_indices.include?(k)
|
275
284
|
if v.is_a? Range or v.class.name == 'RangeSet'
|
276
|
-
p
|
285
|
+
# not p just means it is a key index
|
286
|
+
not p or p.range_index?
|
277
287
|
else
|
278
288
|
true
|
279
289
|
end
|
@@ -332,6 +342,35 @@ module Pacer
|
|
332
342
|
end
|
333
343
|
end
|
334
344
|
end
|
345
|
+
|
346
|
+
def finish_transaction!
|
347
|
+
end
|
348
|
+
|
349
|
+
def start_transaction!(opts)
|
350
|
+
if allow_auto_tx
|
351
|
+
base_tx_finalizers
|
352
|
+
elsif in_transaction?
|
353
|
+
nested_tx_finalizers
|
354
|
+
else
|
355
|
+
blueprints_graph.begin
|
356
|
+
base_tx_finalizers
|
357
|
+
end
|
358
|
+
end
|
359
|
+
|
360
|
+
def base_tx_finalizers
|
361
|
+
commit = ->(reopen = true) do
|
362
|
+
puts "transaction committed" if Pacer.verbose == :very
|
363
|
+
blueprints_graph.commit
|
364
|
+
blueprints_graph.begin if reopen
|
365
|
+
on_commit_block.call if on_commit_block
|
366
|
+
end
|
367
|
+
rollback = ->(message = nil) do
|
368
|
+
puts ["transaction rolled back", message].compact.join(': ') if Pacer.verbose == :very
|
369
|
+
blueprints_graph.rollback
|
370
|
+
blueprints_graph.begin unless $!
|
371
|
+
end
|
372
|
+
[commit, rollback]
|
373
|
+
end
|
335
374
|
end
|
336
375
|
end
|
337
376
|
end
|
@@ -45,9 +45,7 @@ module Pacer::Orient
|
|
45
45
|
def property!(name, otype)
|
46
46
|
p = raw_property(name)
|
47
47
|
unless p
|
48
|
-
p = graph.
|
49
|
-
type.createProperty(name.to_s, graph.property_type(otype))
|
50
|
-
end
|
48
|
+
p = type.createProperty(name.to_s, graph.property_type(otype))
|
51
49
|
end
|
52
50
|
Property.new self, p
|
53
51
|
end
|
@@ -59,16 +57,12 @@ module Pacer::Orient
|
|
59
57
|
end
|
60
58
|
|
61
59
|
def set_super_class(sc)
|
62
|
-
graph.
|
63
|
-
type.setSuperClass graph.orient_type(element_type, sc)
|
64
|
-
end
|
60
|
+
type.setSuperClass graph.orient_type(element_type, sc)
|
65
61
|
self
|
66
62
|
end
|
67
63
|
|
68
64
|
def drop_property!(name)
|
69
|
-
|
70
|
-
type.dropProperty name
|
71
|
-
end
|
65
|
+
type.dropProperty name
|
72
66
|
end
|
73
67
|
|
74
68
|
def properties
|
@@ -20,9 +20,7 @@ module Pacer::Orient
|
|
20
20
|
|
21
21
|
def create_index!(index_type = :not_unique)
|
22
22
|
unless indexed?
|
23
|
-
graph.
|
24
|
-
property.createIndex graph.index_type(index_type)
|
25
|
-
end
|
23
|
+
property.createIndex graph.index_type(index_type)
|
26
24
|
end
|
27
25
|
self
|
28
26
|
end
|
@@ -1,7 +1,26 @@
|
|
1
1
|
module Pacer
|
2
2
|
module Filter
|
3
3
|
module SqlFilter
|
4
|
-
attr_accessor :sql, :select, :orient_type, :where, :query_args, :order_by, :
|
4
|
+
attr_accessor :sql, :select, :orient_type, :where, :query_args, :order_by, :timeout, :parallel
|
5
|
+
attr_writer :limit, :offset
|
6
|
+
|
7
|
+
def offset(n = nil)
|
8
|
+
if n
|
9
|
+
@offset = n
|
10
|
+
self
|
11
|
+
else
|
12
|
+
@offset
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def limit(n = nil)
|
17
|
+
if n
|
18
|
+
@limit = n
|
19
|
+
self
|
20
|
+
else
|
21
|
+
@limit
|
22
|
+
end
|
23
|
+
end
|
5
24
|
|
6
25
|
protected
|
7
26
|
|
data/lib/pacer-orient/version.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
module Pacer
|
2
2
|
module Orient
|
3
|
-
VERSION = "2.
|
3
|
+
VERSION = "2.2.0.pre"
|
4
4
|
JAR = "pacer-orient-#{ VERSION }-standalone.jar"
|
5
5
|
JAR_PATH = "lib/#{ JAR }"
|
6
|
-
ORIENT_VERSION = "
|
7
|
-
PIPES_VERSION = "2.
|
6
|
+
ORIENT_VERSION = "2.0-M2-SNAPSHOT"
|
7
|
+
PIPES_VERSION = "2.6.0"
|
8
8
|
PACER_REQ = ">= 1.5.3"
|
9
9
|
end
|
10
10
|
end
|
Binary file
|
data/lib/pacer-orient.rb
CHANGED
@@ -14,6 +14,32 @@ Pacer::FunctionResolver.clear_cache
|
|
14
14
|
module Pacer
|
15
15
|
# Add 'static methods' to the Pacer namespace.
|
16
16
|
class << self
|
17
|
+
def orient_factory(url = nil, args = {})
|
18
|
+
if url.nil?
|
19
|
+
url = "memory:#{ next_orient_name }"
|
20
|
+
elsif url.is_a? String and url !~ /^(plocal|local|remote|memory):/
|
21
|
+
url = "plocal:#{ url }"
|
22
|
+
end
|
23
|
+
if url
|
24
|
+
factory = Pacer.open_graphs[url]
|
25
|
+
if factory
|
26
|
+
factory
|
27
|
+
else
|
28
|
+
if args
|
29
|
+
username = args[:username]
|
30
|
+
password = args[:password]
|
31
|
+
end
|
32
|
+
factory =
|
33
|
+
if username
|
34
|
+
com.tinkerpop.blueprints.impls.orient.OrientGraphFactory.new url, username, password
|
35
|
+
else
|
36
|
+
com.tinkerpop.blueprints.impls.orient.OrientGraphFactory.new url
|
37
|
+
end
|
38
|
+
Pacer::Orient::FactoryContainer.new(factory, url, args)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
17
43
|
# Return a graph for the given path. Will create a graph if none exists at
|
18
44
|
# that location.
|
19
45
|
#
|
@@ -21,52 +47,18 @@ module Pacer
|
|
21
47
|
# Ruby's at_exit callback, but if an already open graph is given, it will
|
22
48
|
# not.
|
23
49
|
def orient(url = nil, args = nil)
|
24
|
-
if url.
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
end
|
29
|
-
if args
|
30
|
-
username = args.delete :username
|
31
|
-
password = args.delete :password
|
32
|
-
transactional = args.delete :transactional
|
33
|
-
lightweight_edges = args.delete :lightweight_edges
|
34
|
-
edge_classes = args.delete :edge_classes
|
35
|
-
vertex_classes = args.delete :vertex_classes
|
36
|
-
end
|
37
|
-
if url.is_a? String
|
50
|
+
if url.is_a? Pacer::Graph
|
51
|
+
# Don't register the new graph so that it won't be automatically closed.
|
52
|
+
Orient::Graph.new Pacer::Orient::Encoder, proc { url }
|
53
|
+
else
|
38
54
|
open = proc do
|
39
|
-
|
40
|
-
factory = Pacer.open_graphs[[url, username]]
|
41
|
-
unless factory
|
42
|
-
factory =
|
43
|
-
if username
|
44
|
-
com.tinkerpop.blueprints.impls.orient.OrientGraphFactory.new url, username, password
|
45
|
-
else
|
46
|
-
com.tinkerpop.blueprints.impls.orient.OrientGraphFactory.new url
|
47
|
-
end
|
48
|
-
Pacer.open_graphs[[url, username]] = Pacer::Orient::FactoryContainer.new(factory)
|
49
|
-
end
|
50
|
-
if transactional == false
|
51
|
-
graph = factory.getNoTx()
|
52
|
-
else
|
53
|
-
graph = factory.getTx()
|
54
|
-
end
|
55
|
-
graph.useLightweightEdges = lightweight_edges if lightweight_edges == false
|
56
|
-
graph.useClassForEdgeLabel = edge_classes if edge_classes == false
|
57
|
-
graph.useClassForVertexLabel = vertex_classes if vertex_classes == false
|
58
|
-
#graph.setAutoStartTx false
|
59
|
-
graph
|
55
|
+
orient_factory(url, args).get
|
60
56
|
end
|
61
57
|
shutdown = proc do |g|
|
62
|
-
factory = Pacer.open_graphs.delete
|
58
|
+
factory = Pacer.open_graphs.delete url
|
63
59
|
factory.shutdown if factory
|
64
60
|
end
|
65
61
|
Orient::Graph.new(Pacer::Orient::Encoder, open, shutdown)
|
66
|
-
else
|
67
|
-
# Don't register the new graph so that it won't be automatically closed.
|
68
|
-
graph = url
|
69
|
-
Orient::Graph.new Pacer::Orient::Encoder, proc { graph }
|
70
62
|
end
|
71
63
|
end
|
72
64
|
|
data/pom.xml
CHANGED
@@ -7,9 +7,9 @@
|
|
7
7
|
<artifactId>pacer-orient</artifactId>
|
8
8
|
<!-- NOTE: the following properties are automatically updated based on the values in lib/pacer-orient/version.rb -->
|
9
9
|
<properties>
|
10
|
-
<orient.version>
|
11
|
-
<gem.version>2.
|
12
|
-
<pipes.version>2.
|
10
|
+
<orient.version>2.0-M2-SNAPSHOT</orient.version>
|
11
|
+
<gem.version>2.2.0.pre</gem.version>
|
12
|
+
<pipes.version>2.6.0</pipes.version>
|
13
13
|
</properties>
|
14
14
|
<!-- NOTE: the following properties are automatically updated based on the values in lib/pacer-orient/version.rb -->
|
15
15
|
<version>${gem.version}</version>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pacer-orient
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0.pre
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Darrick Wiebe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pacer
|
@@ -48,7 +48,7 @@ files:
|
|
48
48
|
- pacer-orient.gemspec
|
49
49
|
- pom.xml
|
50
50
|
- pom/standalone.xml
|
51
|
-
- lib/pacer-orient-2.
|
51
|
+
- lib/pacer-orient-2.2.0.pre-standalone.jar
|
52
52
|
homepage: http://orientechnologies.com
|
53
53
|
licenses: []
|
54
54
|
metadata: {}
|
@@ -63,9 +63,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
63
63
|
version: '0'
|
64
64
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - '
|
66
|
+
- - '>'
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 1.3.1
|
69
69
|
requirements: []
|
70
70
|
rubyforge_project: pacer-orient
|
71
71
|
rubygems_version: 2.1.9
|