Class: Twb::JoinTree

Inherits:
Object
  • Object
show all
Defined in:
lib/twb/datasource.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(datasource) ⇒ JoinTree

Returns a new instance of JoinTree.



484
485
486
487
488
489
# File 'lib/twb/datasource.rb', line 484

def initialize  datasource
  @datasource = datasource
  @root       = nil
  @maxdepth   = 0
  @tables     = {}
end

Instance Attribute Details

#datasourceObject (readonly)

Returns the value of attribute datasource.



482
483
484
# File 'lib/twb/datasource.rb', line 482

def datasource
  @datasource
end

#maxdepthObject (readonly)

Returns the value of attribute maxdepth.



482
483
484
# File 'lib/twb/datasource.rb', line 482

def maxdepth
  @maxdepth
end

#rootObject (readonly)

Returns the value of attribute root.



482
483
484
# File 'lib/twb/datasource.rb', line 482

def root
  @root
end

#tablesObject (readonly)

Returns the value of attribute tables.



482
483
484
# File 'lib/twb/datasource.rb', line 482

def tables
  @tables
end

Instance Method Details

#add(host, dest) ⇒ Object



491
492
493
494
495
496
497
498
499
500
501
502
503
# File 'lib/twb/datasource.rb', line 491

def add host, dest
  # puts "\nJT add() host: #{host}"
  # puts "           dest: #{dest}"
  from = @tables[host.name].nil? ? host : @tables[host.name]
  to   = @tables[dest.name].nil? ? dest : @tables[dest.name]
  from.addChild(to)
  @tables[from.name] = from
  @tables[to.name]   = to
  if @root.nil?  || @root.name.eql?(to.name)
    @root = from
  end
  setDepth(@root,1)
end

#disp(table) ⇒ Object



520
521
522
523
# File 'lib/twb/datasource.rb', line 520

def disp table
  puts "%s %s %s  (%d)" % [' ' * table.depth, '-' * table.depth, table.name, table.depth]
  table.children.each { |n,c| disp c}
end

#iterateObject



525
526
527
# File 'lib/twb/datasource.rb', line 525

def iterate
  disp @root
end

#setDepth(table, depth) ⇒ Object



509
510
511
512
513
514
# File 'lib/twb/datasource.rb', line 509

def setDepth table, depth
  # puts "-- setDepth(#{table.class}[#{table.name}] \t, #{depth})"
  @tables[table.name].depth = depth
  childrenDepth = depth+1
  table.children.each { |n,c| setDepth(c,childrenDepth)}
end

#table(tableName) ⇒ Object



505
506
507
# File 'lib/twb/datasource.rb', line 505

def table tableName
  @tables[tableName]
end

#tableDepth(tableName) ⇒ Object



516
517
518
# File 'lib/twb/datasource.rb', line 516

def tableDepth tableName
  @tables[tableName].nil? ? 0 : @tables[tableName].depth
end

#to_sObject



529
530
531
532
533
534
535
# File 'lib/twb/datasource.rb', line 529

def to_s
  str = "root: #{@root}\ntables"
  @tables.each do |t| 
    str << " tbl:: #{t}"
  end
  return str
end