cadet 0.0.6-java → 0.0.7-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e3d7acf972e736850cbd9038dde7cfb170298e65
4
- data.tar.gz: 0b34b6f7005d1bab07ef284106bbf4da8313dc74
3
+ metadata.gz: f052829fbaf2513fb3cefa7a3574c4ec8b96b0b8
4
+ data.tar.gz: 15d0bcc566e85c75282a7a24721beb0bd4069aeb
5
5
  SHA512:
6
- metadata.gz: bb374739e93440a6ef3df03a66e7c6e65f9368d33d49264255607d4ada17ac8909da0a4e07c280ffd89d965f3e9e202e966aa053f85b068c7b9f0bcae2103c03
7
- data.tar.gz: caddb58750334570efe01cea6a6a92b0e7f6c4304c5e4585f8700ba37929f2a0cef4e8c2f0f36091d31a837f09572d7038ea67e31497c0e8a2f1ebfb1fb7699d
6
+ metadata.gz: 0d9520c3fad2f19c494e5bff35352f2df349c7c224969687af366a5b66f40613a17b8fabdcaf8651736a4284c6c6c7e74f85f0dfcb1935336cc8a62a51d378b0
7
+ data.tar.gz: 2d21fe45cbec47b08948aa72f6a12a89a7f84a87bdb46de4da828057f43efb58cd08de1127b152f50031b0b88463741de8944be85e23ddda5a3d8873e6d17d2c
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cadet (0.0.1-java)
4
+ cadet (0.0.7-java)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
@@ -13,9 +13,9 @@ GEM
13
13
  rspec-expectations (~> 2.14.0)
14
14
  rspec-mocks (~> 2.14.0)
15
15
  rspec-core (2.14.7)
16
- rspec-expectations (2.14.4)
16
+ rspec-expectations (2.14.5)
17
17
  diff-lcs (>= 1.1.3, < 2.0)
18
- rspec-mocks (2.14.4)
18
+ rspec-mocks (2.14.6)
19
19
 
20
20
  PLATFORMS
21
21
  java
@@ -2,16 +2,19 @@ module Cadet
2
2
  module BatchInserter
3
3
  class Node < Cadet::Node
4
4
  include_package "org.neo4j.graphdb"
5
+
5
6
  def create_outgoing(to, type, properties = {})
6
7
  @db.createRelationship(@underlying, to.underlying, DynamicRelationshipType.withName(type), properties)
7
8
  end
8
9
 
9
- def set_property(prop, val)
10
- @db.setNodeProperty @underlying, prop, val
10
+ def []= (property, value)
11
+ @db.setNodeProperty @underlying, property.to_s, val
11
12
  end
12
13
 
13
- def get_relationships(direction, type)
14
+ def [] (property)
15
+ @db.getNodeProperties(@underlying)[property.to_s]
14
16
  end
17
+
15
18
  end
16
19
  end
17
20
  end
@@ -25,24 +25,22 @@ module Cadet
25
25
  end
26
26
 
27
27
  def constraint(label, property)
28
- index = @index_provider.nodeIndex label, {"type" => "exact"}
28
+ @db.createDeferredConstraint(DynamicLabel.label(label))
29
+ .assertPropertyIsUnique(property.to_s)
30
+ .create()
29
31
  end
30
32
 
31
33
  def find_node(label, property, value)
32
- index = @index_provider.nodeIndex label, {"type" => "exact"}
33
- result = IteratorUtil.firstOrNull(index.get(property, value))
34
- if result
35
- return Node.new(result, @db)
36
- else
37
- return nil
38
- end
34
+ index = @index_provider.nodeIndex(label)
35
+
36
+ ( node = IteratorUtil.firstOrNull(index.get(property, value)) ) ?
37
+ Node.new(node, @db) : nil
39
38
  end
40
39
 
41
40
  def create_node(label, property, value)
42
- n = Node.new(@db.createNode({property => value}, DynamicLabel.label(label)), @db)
43
- index = @index_provider.nodeIndex label, {"type" => "exact"}
44
- index.add(n.underlying, property, value)
45
- n
41
+ Node.new(@db.createNode({property.to_s => value}, DynamicLabel.label(label)), @db).tap do |n|
42
+ index = @index_provider.nodeIndex(label).add(n.underlying, property, value)
43
+ end
46
44
  end
47
45
  end
48
46
  end
@@ -7,19 +7,20 @@ module Cadet
7
7
  @index = {}
8
8
  @lucene_index = lucene_index
9
9
  end
10
- def add(node, prop, value)
11
- @index[prop] ||= {}
12
- @index[prop][value] = node
10
+ def add(node, property, value)
11
+ @index[property] ||= {}
12
+ @index[property][value] = node
13
13
  end
14
14
  def get(property, value)
15
15
  @index[property] ||= {}
16
16
  [@index[property][value]]
17
17
  end
18
18
  def flush
19
- index = @lucene_index.nodeIndex @name, @type
19
+ index = @lucene_index.nodeIndex(@name, @type)
20
+
20
21
  @index.each do |property, mappings|
21
22
  mappings.each do |value, node|
22
- index.add(node, {property => value})
23
+ index.add(node, {property.to_s => value})
23
24
  end
24
25
  end
25
26
  end
@@ -7,7 +7,7 @@ module Cadet
7
7
  @indexes = {}
8
8
  @lucene_index = LuceneBatchInserterIndexProviderNewImpl.new(db)
9
9
  end
10
- def nodeIndex(name, type)
10
+ def nodeIndex(name, type = {"type" => "exact"})
11
11
  @indexes[name] ||= Cadet::CadetIndex::Index.new(@lucene_index, name, type)
12
12
  end
13
13
  def shutdown
@@ -0,0 +1,9 @@
1
+ module Cadet
2
+ class DynamicLabel
3
+ @dynamic_labels = {}
4
+
5
+ def self.label(name)
6
+ @dynamic_labels[name] ||= org.neo4j.graphdb.DynamicLabel.label(name.to_s)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Cadet
2
+ class DynamicRelationshipType
3
+ @dynamic_relationship_types = {}
4
+
5
+ def self.withName(name)
6
+ @dynamic_relationship_types[name] ||= org.neo4j.graphdb.DynamicRelationshipType.withName(name.to_s)
7
+ end
8
+ end
9
+ end
data/lib/cadet/node.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Cadet
2
- class Node < PropertyContainer
2
+ class Node
3
3
  attr_accessor :underlying
4
4
  include_package "org.neo4j.graphdb"
5
5
 
@@ -12,16 +12,20 @@ module Cadet
12
12
  @underlying.addLabel(DynamicLabel.label(label))
13
13
  self
14
14
  end
15
+ def labels
16
+ @underlying.getLabels().map(&:name)
17
+ end
15
18
 
16
- def set_property(property, value)
17
- @underlying.setProperty(property, value)
19
+ def []= (property, value)
20
+ @underlying.setProperty(property.to_s, value)
18
21
  end
19
- def get_property(property)
20
- @underlying.getProperty(property)
22
+
23
+ def [] (property)
24
+ @underlying.getProperty(property.to_s)
21
25
  end
22
26
 
23
27
  def get_relationships(direction, type)
24
- @underlying.getRelationships(direction, type)
28
+ @underlying.getRelationships(direction, DynamicRelationshipType.withName(type))
25
29
  end
26
30
  def create_outgoing(to, type)
27
31
  @underlying.createRelationshipTo(to.underlying, DynamicRelationshipType.withName(type))
@@ -33,5 +37,8 @@ module Cadet
33
37
  Cadet::RelationshipTraverser.new(self, Direction::INCOMING, type)
34
38
  end
35
39
 
40
+ def == other_node
41
+ @underlying.getId == other_node.underlying.getId
42
+ end
36
43
  end
37
44
  end
@@ -7,22 +7,16 @@ module Cadet
7
7
  @node = node
8
8
  @type = type
9
9
  @direction = direction
10
-
11
- @relationships = node.get_relationships(direction, DynamicRelationshipType.withName(type))
12
10
  end
13
11
 
14
12
  def each
15
- @relationships.each do |rel|
16
- yield Node.new rel.getOtherNode(@node.node)
13
+ @node.get_relationships(@direction, @type).each do |rel|
14
+ yield Node.new(rel.getOtherNode(@node.underlying))
17
15
  end
18
16
  end
19
17
 
20
18
  def << (othernode)
21
- if @direction == Direction::OUTGOING
22
- @node.create_outgoing othernode, @type
23
- elsif @direction == Direction::INCOMING
24
- othernode.create_outgoing @node, @type
25
- end
19
+ @direction == Direction::OUTGOING ? @node.create_outgoing(othernode, @type) : othernode.create_outgoing(@node, @type)
26
20
  end
27
21
  end
28
22
  end
data/lib/cadet/session.rb CHANGED
@@ -17,23 +17,19 @@ module Cadet
17
17
  end
18
18
 
19
19
  def create_node(label, property, value)
20
- n = Node.new @db.createNode
21
- n.add_label label
22
- n[property] = value
23
- n
20
+ Node.new(@db.createNode).tap do |n|
21
+ n.add_label label
22
+ n[property] = value
23
+ end
24
24
  end
25
25
 
26
26
  def find_node(label, property, value)
27
- node = IteratorUtil.firstOrNull @db.findNodesByLabelAndProperty(DynamicLabel.label(label), property, value)
28
- node ? Node.new(node) : null
27
+ ( node = IteratorUtil.firstOrNull(@db.findNodesByLabelAndProperty(DynamicLabel.label(label), property, value)) ) ?
28
+ Node.new(node) : nil
29
29
  end
30
30
 
31
31
  def get_node(label, property, value)
32
- n = find_node(label, property, value)
33
- if n.nil?
34
- n = create_node(label, property, value)
35
- end
36
- n
32
+ find_node(label, property, value) || create_node(label, property, value)
37
33
  end
38
34
 
39
35
  def transaction
@@ -49,8 +45,8 @@ module Cadet
49
45
  def constraint(label, property)
50
46
  @db.schema
51
47
  .constraintFor(DynamicLabel.label(label))
52
- .assertPropertyIsUnique(property)
53
- .create
48
+ .assertPropertyIsUnique(property.to_s)
49
+ .create()
54
50
  end
55
51
 
56
52
  def method_missing(name, *args)
@@ -0,0 +1,22 @@
1
+ module Cadet
2
+ module Test
3
+ class Session < Cadet::Session
4
+ include_package "org.neo4j.graphdb"
5
+ include_package "org.neo4j.unsafe.batchinsert"
6
+ include_package "org.neo4j.index.impl.lucene"
7
+ include_package "org.neo4j.helpers.collection"
8
+ include_package "org.neo4j.graphdb.GraphDatabaseService"
9
+ include_package "org.neo4j.graphdb.Node"
10
+ include_package "org.neo4j.graphdb.Transaction"
11
+ include_package "org.neo4j.graphdb.factory.GraphDatabaseSettings"
12
+ include_package "org.neo4j.test"
13
+
14
+
15
+
16
+ def self.open
17
+ new TestGraphDatabaseFactory.new.newImpermanentDatabase
18
+ end
19
+
20
+ end
21
+ end
22
+ end
data/lib/cadet/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Cadet
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
data/lib/cadet.rb CHANGED
@@ -1,20 +1,20 @@
1
1
  require 'java'
2
2
 
3
- [
4
- "concurrentlinkedhashmap-lru-1.3.1.jar",
5
- "lucene-core-3.6.2.jar",
6
- "neo4j-graph-algo-2.0.0.jar",
7
- "neo4j-graph-matching-2.0.0.jar",
8
- "neo4j-kernel-2.0.0.jar",
9
- "neo4j-lucene-index-2.0.0.jar",
10
- "neo4j-shell-2.0.0.jar"
11
- ].each { |file| require "neo4j/#{file}" }
3
+ require "neo4j/concurrentlinkedhashmap-lru-1.3.1.jar"
4
+ require "neo4j/lucene-core-3.6.2.jar"
5
+ require "neo4j/neo4j-kernel-2.0.1-tests.jar"
6
+ require "neo4j/neo4j-kernel-2.0.1.jar"
7
+ require "neo4j/neo4j-lucene-index-2.0.1.jar"
8
+ require "neo4j/neo4j-shell-2.0.1.jar"
9
+ require "neo4j/neo4j-kernel-2.0.1-tests.jar"
12
10
 
13
11
  require 'cadet/session'
14
- require 'cadet/property_container'
15
12
  require 'cadet/node'
16
13
  require 'cadet/relationship_traverser'
17
- require 'cadet/batch_inserter/batch_inserter'
14
+ require 'cadet/batch_inserter/session'
18
15
  require 'cadet/batch_inserter/node'
19
16
  require 'cadet/cadet_index/index_provider'
20
17
  require 'cadet/cadet_index/index'
18
+ require 'cadet/dynamic_relationshiptype'
19
+ require 'cadet/dynamic_label'
20
+ require 'cadet/test/session'
data/spec/spec_helper.rb CHANGED
@@ -1 +1,9 @@
1
1
  require 'cadet'
2
+
3
+ def quick_neo4j
4
+ db = Cadet::Test::Session.open
5
+ db.transaction do |tx|
6
+ yield db, tx
7
+ end
8
+ db.close
9
+ end
@@ -1,18 +1,32 @@
1
1
  require 'spec_helper'
2
+ require 'tmpdir'
2
3
 
3
4
  describe Cadet do
4
5
 
5
- it "should create a node, (and also test that transaction works in the process)" do
6
- db = Cadet::Session.open("./tmp")
7
- db.transaction do
8
- n = db.create_node
6
+ it "should set a node's property" do
7
+ quick_neo4j do |db|
8
+ javad = db.get_node :Person, :name, "Javad"
9
+ javad[:name].should == "Javad"
9
10
  end
10
- db.close
11
11
  end
12
12
 
13
- it "should _not_ create a node, as we are not in a transaction" do
14
- db = Cadet::Session.open("./tmp")
15
- expect { db.create_node }.to raise_error(org.neo4j.graphdb.NotInTransactionException)
16
- db.close
13
+ it "should set a node's label" do
14
+ quick_neo4j do |db|
15
+ javad = db.get_node :Person, :name, "Javad"
16
+ javad.add_label "Member"
17
+ javad.labels.should == ["Person", "Member"]
18
+ end
17
19
  end
20
+
21
+ it "should add outgoing relationship's to a node" do
22
+ quick_neo4j do |db|
23
+ javad = db.get_node :Person, :name, "Javad"
24
+ ellen = db.get_node :Person, :name, "Ellen"
25
+
26
+ javad.outgoing(:knows) << ellen
27
+
28
+ javad.outgoing(:knows).to_a.should == [ellen]
29
+ end
30
+ end
31
+
18
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cadet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: java
6
6
  authors:
7
7
  - Javad Karabi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-05 00:00:00.000000000 Z
11
+ date: 2014-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -51,24 +51,25 @@ files:
51
51
  - Rakefile
52
52
  - cadet.gemspec
53
53
  - lib/cadet.rb
54
- - lib/cadet/batch_inserter/batch_inserter.rb
55
54
  - lib/cadet/batch_inserter/node.rb
55
+ - lib/cadet/batch_inserter/session.rb
56
56
  - lib/cadet/cadet_index/index.rb
57
57
  - lib/cadet/cadet_index/index_provider.rb
58
+ - lib/cadet/dynamic_label.rb
59
+ - lib/cadet/dynamic_relationshiptype.rb
58
60
  - lib/cadet/node.rb
59
- - lib/cadet/property_container.rb
60
61
  - lib/cadet/relationship_traverser.rb
61
62
  - lib/cadet/session.rb
63
+ - lib/cadet/test/session.rb
62
64
  - lib/cadet/version.rb
63
65
  - lib/neo4j/README.txt
64
66
  - lib/neo4j/concurrentlinkedhashmap-lru-1.3.1.jar
65
67
  - lib/neo4j/geronimo-jta_1.1_spec-1.1.1.jar
66
68
  - lib/neo4j/lucene-core-3.6.2.jar
67
- - lib/neo4j/neo4j-graph-algo-2.0.0.jar
68
- - lib/neo4j/neo4j-graph-matching-2.0.0.jar
69
- - lib/neo4j/neo4j-kernel-2.0.0.jar
70
- - lib/neo4j/neo4j-lucene-index-2.0.0.jar
71
- - lib/neo4j/neo4j-shell-2.0.0.jar
69
+ - lib/neo4j/neo4j-kernel-2.0.1-tests.jar
70
+ - lib/neo4j/neo4j-kernel-2.0.1.jar
71
+ - lib/neo4j/neo4j-lucene-index-2.0.1.jar
72
+ - lib/neo4j/neo4j-shell-2.0.1.jar
72
73
  - spec/spec_helper.rb
73
74
  - spec/unit/cadet_spec.rb
74
75
  homepage: https://github.com/karabijavad/cadet
@@ -1,13 +0,0 @@
1
- module Cadet
2
- class PropertyContainer #subclasses must implement set_property, get_property
3
-
4
- def []= (property, value)
5
- set_property property, value
6
- end
7
-
8
- def [] (property)
9
- get_property property
10
- end
11
-
12
- end
13
- end
Binary file