Sha256: 0367e0644211694631178d6ac34ac42c0d70f591aede5c54b3b3462872bad821

Contents?: true

Size: 1.96 KB

Versions: 13

Compression:

Stored size: 1.96 KB

Contents

module Pacer
  module Neo4j
    module Algo
      class PathPipe < Pacer::Pipes::RubyPipe
        import org.neo4j.graphdb::Node
        import org.neo4j.graphdb::Relationship
        import com.tinkerpop.blueprints.impls.neo4j.Neo4jVertex
        import com.tinkerpop.blueprints.impls.neo4j.Neo4jEdge

        attr_reader :algo, :target, :graph, :max_hits
        attr_accessor :current_paths, :hits

        def initialize(algo, graph, target, max_hits)
          super()
          @algo = algo
          @max_hits = max_hits || -1
          @graph = graph.blueprints_graph
          @target = unwrap target if target
        end

        def processNextStart
          next_raw_path.map do |e|
            if e.is_a? Node
              Neo4jVertex.new e, graph
            elsif e.is_a? Relationship
              Neo4jEdge.new e, graph
            else
              e
            end
          end
        end

        def next_raw_path
          loop do
            if current_paths
              if hits == 0
                self.current_paths = nil
              elsif current_paths.hasNext
                self.hits -= 1
                return current_paths.next
              else
                self.current_paths = nil
              end
            else
              self.hits = max_hits
              self.current_paths = @algo.findAllPaths(next_raw, target).iterator
            end
          end
        end

        def next_raw
          unwrap starts.next
        end

        def unwrap(vertex)
          if vertex.respond_to? :element
            vertex.element.raw_element
          else
            vertex.raw_element
          end
        end
      end

      class PathFromPathPipe < PathPipe
        attr_writer :target

        def initialize(algo, graph, max_hits)
          super(algo, graph, nil, max_hits)
        end

        def next_raw
          path = starts.next
          self.target = unwrap path.to_a.last
          unwrap path[0]
        end
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
pacer-neo4j-2.3.7-java lib/pacer-neo4j/algo/path_pipe.rb
pacer-neo4j-2.3.6-java lib/pacer-neo4j/algo/path_pipe.rb
pacer-neo4j-2.3.5-java lib/pacer-neo4j/algo/path_pipe.rb
pacer-neo4j-2.3.4-java lib/pacer-neo4j/algo/path_pipe.rb
pacer-neo4j-2.3.3-java lib/pacer-neo4j/algo/path_pipe.rb
pacer-neo4j-2.3.2-java lib/pacer-neo4j/algo/path_pipe.rb
pacer-neo4j-2.3.0.pre-java lib/pacer-neo4j/algo/path_pipe.rb
pacer-neo4j-2.2.0-java lib/pacer-neo4j/algo/path_pipe.rb
pacer-neo4j-2.1.5-java lib/pacer-neo4j/algo/path_pipe.rb
pacer-neo4j-2.1.4-java lib/pacer-neo4j/algo/path_pipe.rb
pacer-neo4j-2.1.2-java lib/pacer-neo4j/algo/path_pipe.rb
pacer-neo4j-2.1.1-java lib/pacer-neo4j/algo/path_pipe.rb
pacer-neo4j-2.1.0-java lib/pacer-neo4j/algo/path_pipe.rb