Sha256: cc96fe2e65dc68d1f4682e6c9f6d36fbe2e20793f26d4196c3672e45299451a4

Contents?: true

Size: 1.28 KB

Versions: 2

Compression:

Stored size: 1.28 KB

Contents

module Cadet
  module BatchInserter
    class Session < Cadet::Session
      include_package "org.neo4j.graphdb"
      include_package "org.neo4j.unsafe.batchinsert"
      include_package "org.neo4j.index.impl.lucene"
      include_package "org.neo4j.helpers.collection"

      def initialize(db)
        @db = db
        @index_provider = Cadet::CadetIndex::IndexProvider.new(db)
      end

      def close
        @index_provider.shutdown
        super
      end

      def self.open(location)
        new BatchInserters.inserter(location)
      end

      def transaction
        yield
      end

      def constraint(label, property)
        index = @index_provider.nodeIndex label, {"type" => "exact"}
      end

      def find_node(label, property, value)
        index = @index_provider.nodeIndex label, {"type" => "exact"}
        result = IteratorUtil.firstOrNull(index.get(property, value))
        if result
          return Node.new(result, @db)
        else
          return nil
        end
      end

      def create_node(label, property, value)
        n = Node.new(@db.createNode({property => value}, DynamicLabel.label(label)), @db)
        index = @index_provider.nodeIndex label, {"type" => "exact"}
        index.add(n.underlying, property, value)
        n
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cadet-0.0.6-java lib/cadet/batch_inserter/batch_inserter.rb
cadet-0.0.5-java lib/cadet/batch_inserter/batch_inserter.rb