Class JavaClass::Dependencies::Node
In: lib/javaclass/dependencies/node.rb
Parent: Object

A node in a Graph of dependencies. A node contains a map of dependencies (Edge) to other nodes.

Author:Peter Kofler

Methods

Attributes

dependencies  [R] 
name  [R] 
size  [R] 

Public Class methods

attr_reader :incoming

[Source]

# File lib/javaclass/dependencies/node.rb, line 13
      def initialize(name, size=0)
        @name = name
        @size = size
        @dependencies = Hash.new([])
        ### @incoming = Hash.new([])
      end

Public Instance methods

[Source]

# File lib/javaclass/dependencies/node.rb, line 36
      def <=>(other)
        @name <=> other.name 
      end

[Source]

# File lib/javaclass/dependencies/node.rb, line 28
      def ==(other)
        other.respond_to?(:name) && @name == other.name
      end

Add a list dependencies of provider .

[Source]

# File lib/javaclass/dependencies/node.rb, line 57
      def add_dependencies(dependencies, providers)
        dependencies.each do |dependency|
          add_dependency(dependency, providers)
        end
      end

Add a dependency Edge for a list of provider Node.

[Source]

# File lib/javaclass/dependencies/node.rb, line 41
      def add_dependency(dependency, providers)
        if providers.size == 0
          # external dependency, skip this
        elsif providers.size == 1
          # add dependency to this provider
          provider = providers[0]
          # unless @dependencies[provider].include? dependency
          @dependencies[provider] = @dependencies[provider] + [dependency]
          ### provider.incoming[self] = provider.incoming[self] + [dependency]
          # end
        else
          warn "dependency to \"#{dependency}\" found more than once: #{providers.join(', ')}"
        end
      end

Iterate all providers of dependencies of this Node and call block for each provider with its list of dependencies (Edge).

[Source]

# File lib/javaclass/dependencies/node.rb, line 64
      def each_dependency_provider(&block)
        @dependencies.keys.each do |provider|
          block.call(provider, @dependencies[provider])
        end
      end

Iterate all dependencies of this Node and call block for each provider with each of its dependencies.

[Source]

# File lib/javaclass/dependencies/node.rb, line 71
      def each_edge(&block)
        each_dependency_provider do |provider, edges|
          edges.each do |edge|
            block.call(provider, edge)
          end
        end
      end

[Source]

# File lib/javaclass/dependencies/node.rb, line 32
      def hash
        @name.hash
      end

[Source]

# File lib/javaclass/dependencies/node.rb, line 20
      def to_s
        if @size > 0
          "#{@name} (#{@size.to_s})"
        else
          @name
        end
      end

[Validate]