cadet 0.0.6-java → 0.0.7-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 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